Mục lục:
- Bước 1: Yêu cầu
- Bước 2: Tìm hiểu phần cứng và phần mềm
- Bước 3: Thiết lập các thành phần
- Bước 4: Mã hóa
Video: Thay đổi màu sắc ánh sáng ban đêm bằng Ardruino 101: 4 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Trong dự án này, bạn sẽ làm một chiếc đèn ngủ bằng ardruino, Adafruit neo rgb Strips và một máy in 3D.
Lưu ý rằng intructable này hoàn toàn dành cho dự án trường học của tôi. Mã cho dự án này dựa trên một dự án khác. Với điều đó đã nói, tôi không phải là một chuyên gia khi nói đến Ardruino.
Bước 1: Yêu cầu
Đối với dự án này, bạn sẽ cần phần cứng và công cụ sau
Phần cứng:
1 - ardruino101 (ở Hoa Kỳ) hoặc Genuino101 (bên ngoài Hoa Kỳ).
2 - Dải đèn led NeoPixel rgb từ adafruit (5 volt).
3 - Một đầu nối usb ardruino (đầu nối loại B đến A).
4 - Một phần mềm từ Ardruino, Ardruino IDE Trong hướng dẫn này, chúng tôi sẽ sử dụng phiên bản 1.8.5. Yêu cầu thư viện phần mềm là: 101, Adafruit NeoPixel và Madgwick.
5 -Và một đối tượng để chứa phần cứng của bạn. Trong trường hợp này, tôi sẽ sử dụng máy in 3D. Tệp cho bản in 3D này nằm trong phần mô tả được gọi là "Đầu đèn". Lưu ý rằng định dạng tệp này chưa sẵn sàng để in 3D. Tùy thuộc vào máy in 3D của bạn, trước tiên bạn phải chạy phần mềm in 3d được chỉ định trên đối tượng 3D trước. Đôi khi tỷ lệ của bản in 3D sẽ được đặt lại. vì vậy hãy đảm bảo đường kính được đặt thành 11 cm x 11 cm.
6 - Bộ dụng cụ hàn cơ bản.
Bước 2: Tìm hiểu phần cứng và phần mềm
Ardruin / Genuino101
Chỉ cần làm rõ Ardruino101 và genuino101 hoàn toàn giống nhau bên cạnh tên. Cả hai đều có thông số kỹ thuật giống nhau và sử dụng cùng một phần mềm.
Ardruino101 sở hữu các thông số kỹ thuật cơ bản như ardruino UNO và hơn thế nữa. Tính năng chính của ardruino101 là gia tốc kế và con quay hồi chuyển mà chúng tôi sẽ sử dụng trong dự án của mình. Ngoài ra, loại ardruino này có thư viện mã duy nhất được gọi là CurrieIMU (Đơn vị đo lường nội bộ) được bao gồm trong phần mở rộng thư viện 101.
Với điều đó, chúng ta hãy nói về phần mềm.
Phần mềm và thư viện
Ardruino IDE sử dụng python làm mã nguồn chính của nó. nó cũng là bản mã chính nơi hầu hết ardruino chạy. Có rất nhiều hướng dẫn trực tuyến về cách sử dụng phần mềm này, vì vậy tôi khuyên bạn nên nghiên cứu những hướng dẫn đó trước nếu bạn chưa quen với chương trình này.
Như đã nói, các thư viện chúng tôi đang sử dụng như sau:
Từ menu Phác thảo,> Bao gồm Thư viện> Quản lý Thư viện… Trong hộp nhập văn bản, hãy nhập
- 101 Khi khởi động, ardruino 101 không được tự động đưa vào ardruino IDE. Chúng tôi cần phần mở rộng thư viện này để viết mã loại ardruino của chúng tôi.
-Adafruit NeoPixel để mã các dải pixel Neo của chúng tôi.
-Madgwick Để đọc dữ liệu thô và tính toán dữ liệu này thành thô, cao độ và cuộn.
Dải RGB -eo RGB
Loại tôi sẽ sử dụng là điện áp 5 hoặc loại 5v. Với 5v này, tôi không cần một nguồn điện mở rộng để điều khiển các dải của mình. Thay vào đó, tôi sẽ sử dụng ardruino của mình làm nguồn điện để điều khiển và thắp sáng các dải.
Dưới đây là một số mẹo bạn cần biết trước khi bắt đầu sử dụng dải này.
Đầu tiên, bạn cần một dải đèn LED Neodigital RGB từ quả adafruit. Loại dải này có thể kiểm soát được bằng cách sử dụng mã. Tiếp theo bạn cần biết là có một mặt sau và một mặt trước trên dải này. Mặt sau và mặt trước này rất quan trọng đối với quá trình hàn. Đảm bảo rằng bạn đã hàn mặt trước nơi phím mũi tên hướng ra khỏi đầu.
Đây là hướng dẫn về cách sử dụng chúng.
Có 3 điểm hàn bạn cần lưu ý Kết nối đất (GND), Kết nối điện áp (V) và Kết nối chân (DIN).
Bước 3: Thiết lập các thành phần
Đầu tiên, bạn cần in 3d thành phần mà bạn có thể tìm thấy trong các yêu cầu. Trong trường hợp này, tôi sẽ sử dụng PLA. Đảm bảo đường kính của vật thể là 11cm x 11cm. Wil này đảm bảo rằng ardruino và các dải sẽ phù hợp với shpere. Lưu ý rằng mỗi máy in 3D sử dụng phần mềm khác nhau để tính toán quá trình in của nó. Như đã nói, tệp bạn sử dụng có thể được chia tỷ lệ khác nhau, vì vậy hãy ghi nhớ điều đó.
Thứ hai sau khi in, hãy đảm bảo rằng các thành phần có thể đóng lại. Các bản in 3D cùng nhau tạo thành một hình cầu. Chúng phải vừa vặn. Nếu nắp đậy bị mất thì hãy dán một số băng dính vào mặt trong để nắp được lấp đầy. Và nếu nó là dày, hãy sử dụng giấy nhám.
Thứ ba, xiên cho ardruino và các dải khá dễ dàng. Bạn sẽ sử dụng 3 dây để kết nối các dải với ardruino. Lưu ý rằng những vị trí duy nhất tôi hàn là trên các dải. không phải trên chính Ardruino.
GND chuyển đến GND
DIN đi đến một Ghim (trong trường hợp của chúng tôi là pin6 trên ardruino)
5V chuyển sang 5V
Đảm bảo rằng số lượng dải đèn led bạn sử dụng là giới hạn ở mức 30. Sau đó, nó sẽ không thực thi đúng mã. Bạn có thể chỉ cần cắt bất kỳ dải nào chưa được cắt hiển thị với một dấu hiệu cắt kéo.
Evrything thứ tư phải vừa vặn trong hình cầu. Bạn có thể giống như tôi đã tạo một giao điểm giữa 1 trong các bản in 3d để nhìn thấy máng và đặt một miếng nhựa có rãnh nhìn thấy ở trên cùng.
Bước 4: Mã hóa
Vì vậy, bây giờ bạn sẽ có tất cả các thành phần cần thiết trong thư viện của mình.
Đây là mã bạn cần để chạy dự án. Kết quả sẽ giống như liên kết video tôi gửi trong trang này.
Nguồn của mã này có thể được tìm thấy ở đây. Dự án này cũng bao gồm các bước cần thiết để hiểu rõ hơn về mã và mật số đằng sau việc sử dụng.
#include #include #include #include
#define PIN 6 // 11 pixel NeoPixel Strip
#define PIN1 7 // 1 pixel NeoPixel Strip #define NUMPIXELS 30 // Numer of píxels #define SAMPLE_RATE 25 // Tốc độ lấy mẫu cho gia tốc kế và con quay hồi chuyển
// Cấu hình Madgwick
Bộ lọc Madgwick; dài không dấu microsPerReading, microsPrevious; float accelScale, gyroScale;
// Cấu hình NeoPixel
Adafruit_NeoPixel pixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Không gian màu
RGBConverter rgbConverter; nhân đôi h = 1; đôi s = 1; gấp đôi v = 1; byte rgb [3];
// Đèn chuyển động trạng thái
// Trạng thái 0 -> Chọn Hue - Pitch // Trạng thái 1 -> Chọn Bão hòa - Cuộn // Trạng thái 2 -> Chọn Giá trị - Yaw // Trạng thái 3 -> Sửa lỗi biến màu int statusLamp = 0;
void setup () {
Serial.begin (9600);
// khởi động IMU và bộ lọc
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Đặt phạm vi gia tốc kế thành 2G
CurieIMU.setAccelerometerRange (2); // Đặt phạm vi con quay hồi chuyển thành 250 độ / giây CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.interrupts (CURIE_IMU_TAP);
// khởi tạo các biến để tăng tốc độ cập nhật nhằm điều chỉnh tốc độ
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
pixel.begin (); pixel.show ();
// Init NeoPixel 1
pixelStatus.begin (); pixel.show ();
// Hiển thị trạng thái bằng px
setStatusPixel (statusLamp); }
void loop () {
int aix, aiy, aiz; // gia tốc kế int gix, giy, giz; rìu phao, ay, az; float gx, gy, gz; cuộn phao, cao độ, yaw; static unsigned long microsNow;
// kiểm tra xem đã đến lúc đọc dữ liệu và cập nhật bộ lọc chưa
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// đọc dữ liệu thô từ CurieIMU
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// chuyển đổi từ dữ liệu thô sang đơn vị trọng lực và độ / giây
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// cập nhật bộ lọc, tính toán hướng
filter.updateIMU (gx, gy, gz, ax, ay, az);
// in tiêu đề, cao độ và cuộn
roll = filter.getRoll (); pitch = filter.getPitch (); yaw = filter.getYaw ();
// tăng thời gian trước, vì vậy chúng tôi giữ tốc độ phù hợp
microsPrevious = microsPrevious + microsPerReading;
// Chỉ khi thay đổi Hue, Saturation hoặc Value
if (statusLamp chọn Hue if (pitch> = -90 && pitch <= 90 && statusLamp == 0) {// Biến đổi angle pitch = pitch + 90; // Lấy dây màu từ các góc h = pitch / 180.0;}
// Hạn chế góc
// chỉ cuộn -90º thành 90º = 180º // Trạng thái 1 -> chọn Độ bão hòa if (cuộn> = -90 && cuộn <= 90 && statusLamp == 1) {// Biến đổi góc cuộn = roll + 90; // Lấy dây màu từ các góc s = roll / 180.0; }
// Trạng thái 2 -> chọn Giá trị
if (statusLamp == 2) {// yaw 0º đến 360º v = yaw / 360.0; }
// Chuyển đổi thành rgb
rgbConverter.hsvToRgb (h, s, v, rgb); / * Serial.print ("Màu:"); Serial.print (h); Serial.print ("-"); Serial.print (các); Serial.print ("-"); Serial.print (v); Serial.println ("");
Serial.print ("Hướng:");
Serial.print (yaw); Serial.print (""); Serial.print (cao độ); Serial.print (""); Serial.println (cuộn); * /
// Thay đổi màu của các pixel
for (int px = 0; px <NUMPIXELS; px ++) {pixel.setPixelColor (px, pixel. Color (rgb [0], rgb [1], rgb [2])); pixel.show (); }}
// Hiển thị trạng thái bằng px
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// vì chúng ta đang sử dụng phạm vi 2G // -2g ánh xạ tới giá trị thô là -32768 // + 2g ánh xạ tới giá trị thô là 32767
float a = (aRaw * 2.0) / 32768.0;
trả lại a; }
float convertRawGyro (int gRaw) {
// vì chúng tôi đang sử dụng phạm vi 250 độ / giây // -250 ánh xạ tới giá trị thô là -32768 // +250 ánh xạ tới giá trị thô là 32767
float g = (gRaw * 250.0) / 32768.0;
trả lại g; }
static void eventCallback ()
{// Phát hiện chạm trong tất cả các trục if (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Tap phát hiện statusLamp:"); Serial.println (statusLamp);
// Thay đổi trạng thái
statusLamp ++;
// Trạng thái Init
if (statusLamp> 3) {statusLamp = 0; }}}
void setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelStatus.setPixelColor (0, pixelStatus. Color (150, 0, 0)); pixelStatus.show (); nghỉ; trường hợp 1: pixelStatus.setPixelColor (0, pixelStatus. Color (0, 150, 0)); pixelStatus.show (); nghỉ; trường hợp 2: pixelStatus.setPixelColor (0, pixelStatus. Color (0, 0, 150)); pixelStatus.show (); nghỉ; trường hợp 3: pixelStatus.setPixelColor (0, pixelStatus. Color (0, 0, 0)); pixelStatus.show (); nghỉ;
}
}
Đề xuất:
Ghế nóng: Chế tạo đệm sưởi thay đổi màu sắc: 7 bước (có hình ảnh)
Ghế nóng: Làm đệm sưởi thay đổi màu sắc: Bạn muốn giữ cho mình trở nên ngon miệng trong những ngày đông lạnh giá? Hot Seat là một dự án sử dụng hai khả năng thú vị nhất của dệt điện tử - thay đổi màu sắc và nhiệt! Chúng tôi sẽ chế tạo một chiếc đệm ngồi có khả năng sưởi ấm và khi nó sẵn sàng đi vào hoạt động, nó sẽ tiết lộ t
Cảm biến ánh sáng có thể chuyển đổi Ánh sáng ban đêm: 8 bước (có hình ảnh)
Cảm biến ánh sáng ban đêm có thể chuyển đổi: Hướng dẫn này cho biết cách tôi đã hack cảm biến ánh sáng ban đêm để nó có thể tự tắt theo cách thủ công. Đọc kỹ, lưu ý mọi mạch điện bị hở và tắt khu vực của bạn nếu cần trước khi kiểm tra đơn vị
Tự tạo ánh sáng hội thảo bằng đèn LED có thể thay đổi độ sáng của riêng bạn!: 11 bước (có hình ảnh)
Tự tạo đèn LED chiếu sáng hội thảo có thể điều chỉnh độ sáng của riêng bạn !: Trong tài liệu hướng dẫn này, tôi sẽ chỉ cho bạn cách tự tạo đèn LED chiếu sáng cực kỳ hiệu quả cho hội thảo của bạn! Chúng tôi, Những người thợ, Không bao giờ có đủ ánh sáng trên bàn làm việc của mình, Vì vậy, chúng tôi cần mua đèn. Nhưng với tư cách là nhà sản xuất, Chúng tôi không mua những thứ (Và bị gạt …)
Làm thế nào để tạo một chiếc khăn lông giả có ánh sáng thay đổi màu sắc: 11 bước (có hình ảnh)
Làm thế nào để tạo một chiếc khăn lông giả có ánh sáng thay đổi màu sắc: Dưới đây là một số mẹo để tạo một chiếc khăn được chiếu sáng mờ với đèn LED thay đổi màu sắc, với một quy trình tương đối đơn giản, phù hợp với những người có kinh nghiệm may hoặc hàn còn hạn chế. Thấu kính của mỗi đèn LED RGB này có màu đỏ riêng,
Làm cho máy ảnh của bạn thành "chế độ chụp đêm quân sự", thêm hiệu ứng ban đêm hoặc tạo chế độ chụp ảnh ban đêm trên bất kỳ máy ảnh nào !!!: 3 bước
Đặt Máy ảnh của bạn thành "Chế độ chụp đêm quân sự", Thêm Hiệu ứng Ban đêm hoặc Tạo Chế độ Cảnh báo Ban đêm trên Bất kỳ Máy ảnh nào !!!: *** Điều này đã được đưa vào CUỘC THI KỸ THUẬT SỐ DAYS PHOTO , Hãy bình chọn cho tôi ** * Nếu bạn cần bất kỳ trợ giúp nào, vui lòng gửi email: [email protected] Tôi nói tiếng Anh, Pháp, Nhật, Tây Ban Nha và tôi biết các ngôn ngữ khác nếu bạn