Tạo đèn led nhiều màu


Tạo đèn led nhiều màu

Tôi sẽ cho bạn thấy làm thế nào bạn có thể sử dụng một LED RGB và một đĩa CD bào quang điện là một bộ cảm biến màu sắc cho một bộ điều khiển vi. Tôi sẽ minh họa các phương pháp để lấy một màu sắc sử dụng Arduino, và tôi sẽ cho bạn thấy làm thế nào bạn có thể xác minh màu được quét với một phác thảo xử lý nhỏ. Chúng tôi sẽ làm cho cảm biến màu sắc trên một breadboard, nhưng nó có thể dễ dàng chuyển vào một hội đồng quản trị tạo mẫu, và cho những người fab bảng riêng của họ, điều này sẽ là một bộ dụng cụ tuyệt vời là siêu rẻ để ném lại với nhau. Tôi chắc chắn nó sẽ chỉ mất khoảng hai phút để viết một tập tin gerber cho mạch này và làm cho một bộ cảm biến đã hoàn thành tốt đẹp ít.

Bước 1 : Thu thập Một số bộ phận

Đối với cảm biến này, bạn sẽ cần

  • một breadboard (không cần thiết, nhưng nó là làm thế nào tôi sẽ hướng dẫn bạn thông qua nó.)

  • một đèn LED RGB (cách khác, bạn có thể sử dụng 3 đèn LED)

  • Một điện trở 220 ohm

  • Một CdS bào quang điện (chúng có thể được vớt ra khỏi tất cả mọi thứ như nightlights đèn vườn)

  • Một Arduino, hoặc một bản sao. Tôi đang sử dụng một RBB trong ví dụ này

Công cụ bạn sẽ cần

  • Một máy tính

  • một dây cáp để tải lên Arduino của bạn

Bước 2 : Lý thuyết nhỏ

Một số bạn có thể tự hỏi làm thế nào một CdS bào quang điện có thể phát hiện màu sắc . Vâng đó là đáng ngạc nhiên đơn giản và cung cấp kết quả khá chính xác . Chúng tôi nhìn thấy màu sắc như một tần số của ánh sáng phản xạ từ một đối tượng. Màu sắc để khác nhau phản ánh các bước sóng khác nhau mà đôi mắt của chúng tôi sau đó giải thích như màu sắc. (Có lẽ bộ não ... Tôi không có nhà khoa học)phổ biến CdS bào quang điện có một phản ứng rất giống với màu sắc như mắt người . Bởi vì màu sắc hấp thụ các bước sóng nhất định và phản ánh các bước sóng nhất định, chúng ta có thể sử dụng các bước sóng khác nhau (màu sắc) của ánh sáng và có bài đọc (từ một bộ cảm biến có câu trả lời gần như con người) và do đó làm cho một đoán khá tốt vào những gì màu sắc cảm biến là được tiếp xúc với .

Bước 3: Xây dựng các mạch


   Tôi có bao gồm cả hình ảnh của sự sắp xếp breadboard, và một sơ đồ nhỏ cho bạn thấy làm thế nào để dây cảm biến để các Arduino mạch thực sự là đơn giản. Đầu tiên chúng ta sẽ xem xét một nửa RGB LED của cảm biến. Nó chỉ đơn giản là một cathode chung RGB LED kết nối với các chân 2,3 và 4 của Arduino với một điện trở ohm 220 đi ra ngoài mặt đất. Điều này sẽ cho phép chúng ta hướng của đèn LED bên trong gói phần mềm và cá nhân khi chúng ta cần phải phía bên kia của mạch điện, chúng tôi có một đĩa CD bào quang điện được cho ăn 5 volts từ Arduino. kết hợp với các điện trở xuống mặt đất này có hiệu quả tạo ra một chia điện áp cho phép chúng ta đọc một giá trị thay đổi tương tự trên 0 pin tương tự cảm biến này hoạt động rất tốt trên breadboard một, nhưng nó hoạt động tốt hơn nếu bạn đặt nó vào một bao vây minimilize giao thoa ánh sáng môi trường xung quanh. Những hình ảnh của bao vây ánh sáng (ish) chặt chẽ đã được sử dụng trong một dự án của tôi và được bao gồm ở đây chỉ để minh họa những gì tôi có nghĩa là. (Hãy kiểm tra xem nó ra mặc dù, ở đây .)

Bước 4 Mã số các Arduino

Mở môi trường Arduino, và tạo ra một phác thảo mới bằng cách nhấn vào File - New. Đối với những người don `t muốn đi theo cùng, tôi đã bao gồm các mã như một tập tin văn bản . Copy / Paste nó vào một phác thảo mới trong Arduino, và bạn là tốt để đi. Tờ khai Sự bắt đầu của phác thảo một là nơi chúng ta thực hiện kê khai của chúng tôi, do đó, gõ đoạn mã sau vào cửa sổ môi trường.
// Define colour sensor LED pins
int ledArray[] = {2,3,4};


// boolean to know if the balance has been set
boolean balanceSet = false;

//place holders for colour detected
int red = 0;
int green = 0;
int blue = 0;

//floats to hold colour arrays
float colourArray[] = {0,0,0};
float whiteArray[] = {0,0,0};
float blackArray[] = {0,0,0};

//place holder for average
int avgRead;

        '/ /' Được dành riêng để lấy ý kiến biểu thị, do đó bạn không cần các văn bản trên các dòng bắt đầu bằng '/ /' phác thảo để làm việc còn lại của nó là một số tên mà chúng tôi đang đưa ra một số giữ chỗ, và tờ khai cho loại dữ liệu mà họ sẽ chứa. Như bạn thấy, chúng tôi bắt đầu bằng cách thiết lập một mảng để giữ số pin . Những tương ứng với các chân đèn LED màu sắc khác nhau conected vào Arduino.Tiếp theo chúng ta khai báo một giá trị Boolean để kiểm tra đã được thực hiện hay không cân bằng. Một giá trị Boolean là một cái gì đó trả về đúng hay sai . Chúng tôi đi trên để tạo ra một số chủ sở hữu địa điểm cho các giá trị màu sắc, và một số mảng để sử dụng cho tổ chức các dữ liệu quét và cân bằng màu sắc được phát hiện. Mặc dù chúng tôi vẫn chưa kết thúc, đi trước và lưu ký họa của bạn. Cung cấp cho nó một cái tên có ý nghĩa với bạn, một cái gì đó như coloursensor.pde có thể cài đặt Các bước tiếp theo trong việc tạo ra một phác họa Arduino là ghi các chức năng cài đặt Thiết lập được chạy khi khởi động đầu tiên Arduino, vì vậy đây là nơi chúng ta nói các Arduino làm thế nào chúng ta muốn sử dụng các chân và các tính năng thiết lập khác mà chúng tôi có thể cần, chẳng hạn như giao tiếp nối tiếp. Loại sau đây dưới mã mà bạn chỉ cần nhập vào

void setup(){
 
  //setup the outputs for the colour sensor
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
 
  //begin serial communication
  Serial.begin(9600);
 
}

Không có nhiều phần này. Ở đây chúng ta chỉ cần nói với Arduino mà chúng tôi dự định về việc sử dụng các chân 2,3, và 4 là kết quả đầu ra. Này là cần thiết nếu chúng ta muốn ánh sáng đèn LED của chúng tôi ... và chúng tôi làm, nếu chỉ một thời gian ngắn. Phần tiếp theo là để nói với Arduino mà chúng tôi dự định làm cho việc sử dụng các cổng nối tiếp, và nó phải được mở ra và sẵn sàng giao tiếp ở tốc độ truyền quy định (trong ngoặc) . vòng vòng lặp chức năng là thường kỳ diệu sẽ xảy ra trong một Arduino. Đây là mã chạy qua và hơn nữa một khi Arduino được khởi động và cài đặt đã được thông qua thông qua . Đặt bit tiếp theo của mã theo chức năng thiết lập của bạn.


void loop(){

    checkBalance();
    checkColour();
    printColour();
    }  
 

Được rồi ở cái nhìn đầu tiên, có vẻ như có thực sự là không nhiều . Nhưng đây là mỗi cuộc gọi đến các chức năng tin . Đối với một số dự án, tôi tìm thấy loại hình này của phương pháp hoạt động tốt . Nó làm cho nó dễ dàng hơn để đọc (tôi nghĩ) mỗi khối mã được tách ra với một tên có ý nghĩa, và chúng ta có thể thấy những gì các phác thảo là sẽ làm trong nháy mắt. Đầu tiên nó sẽ kiểm tra số dư, sau đó nó sẽ kiểm tra màu sắc , và sau đó nó sẽ in màu với cổng nối tiếp để chúng ta có thể nhìn thấy những giá trị mà nó đọc . `s khám phá những chức năng tư nhân đầu tiên, checkBalance, và thêm nó vào mã của chúng tôi. Loại sau đây dưới đây chức năng vòng lặp của bạn .
void checkBalance(){
  //check if the balance has been set, if not, set it
  if(balanceSet == false){
    setBalance();
  }
}

Như bạn có thể thấy, nếu giá trị balanceSet (một giá trị boolean) được thiết lập để sai, sau đó nó làm cho một cuộc gọi đến một chức năng thứ cấp setBalance, nơi chúng ta thiết lập các bài đọc cân bằng trắng và đen. Điều này sẽ chỉ xảy ra khi bạn khởi động Arduino một thời gian

  void setBalance(){
  //set white balance
   delay(5000);                              //delay for five seconds, this gives us time to get a white sample in front of our sensor
  //scan the white sample.
  //go through each light, get a reading, set the base reading for each colour red, green, and blue to the white array
  for(int i = 0;i<=2;i++){
     digitalWrite(ledArray[i],HIGH);
     delay(100);
     getReading(5);          //number is the number of scans to take for average, this whole function is redundant, one reading works just as well.
     whiteArray[i] = avgRead;
     digitalWrite(ledArray[i],LOW);
     delay(100);
  }
  //done scanning white, now it will pulse blue to tell you that it is time for the black (or grey) sample.
   //set black balance
    delay(5000);              //wait for five seconds so we can position our black sample 
  //go ahead and scan, sets the colour values for red, green, and blue when exposed to black
  for(int i = 0;i<=2;i++){
     digitalWrite(ledArray[i],HIGH);
     delay(100);
     getReading(5);
     blackArray[i] = avgRead;
     //blackArray[i] = analogRead(2);
     digitalWrite(ledArray[i],LOW);
     delay(100);
  }
   //set boolean value so we know that balance is set
  balanceSet = true;
  delay(5000);     //delay another 5 seconds to let us catch up
  }
  


Nếu bạn nhận thấy, chúng tôi thực hiện một cuộc gọi khác đến một getReading chức năng . Chúng tôi sẽ thêm rằng ngay sau khi chúng tôi đưa vào chức năng checkColour Một khi số cân bằng của chúng tôi đã được thiết lập, chúng tôi đi về để cuối cùng đọc những màu sắc. Chức năng cơ bản giống như setBalance, với việc bổ sung của toán học cân bằng đọc. Chúng ta hãy `s thêm nó bây giờ.


 

void checkColour(){
    for(int i = 0;i<=2;i++){
     digitalWrite(ledArray[i],HIGH);  //turn or the LED, red, green or blue depending which iteration
     delay(100);                      //delay to allow CdS to stabalize, they are slow
     getReading(5);                  //take a reading however many times
     colourArray[i] = avgRead;        //set the current colour in the array to the average reading
     float greyDiff = whiteArray[i] - blackArray[i];                    //the highest possible return minus the lowest returns the area for values in between
     colourArray[i] = (colourArray[i] - blackArray[i])/(greyDiff)*255; //the reading returned minus the lowest value divided by the possible range multiplied by 255 will give us a value roughly between 0-255 representing the value for the current reflectivity(for the colour it is exposed to) of what is being scanned
     digitalWrite(ledArray[i],LOW);   //turn off the current LED
     delay(100);
  }}

Chúng tôi cũng sẽ cần phải thêm getReading chức năng của chúng tôi, nếu không phác thảo của chúng tôi won `t có giá trị thực. Chức năng này chỉ cho phép chúng tôi để có một bài đọc và trung bình. Điều này cho phép đọc một chút mượt mà.

void getReading(int times){
  int reading;
  int tally=0;
  //take the reading however many times was requested and add them up
for(int i = 0;i < times;i++){
   reading = analogRead(0);
   tally = reading + tally;
   delay(10);
}
//calculate the average and set it
avgRead = (tally)/times;
}
 

Bây giờ chúng ta có một màu sắc đọc vào mảng giữ màu sắc của chúng tôi, tất cả những gì chúng ta cần làm bây giờ là đầu ra nó vào màn hình. Hãy nhớ rằng chúng tôi thiết lập giao tiếp nối tiếp trở lại trong các chức năng cài đặt, tất cả chúng ta phải làm bây giờ là sử dụng các cổng nối tiếp để gửi dữ liệu của chúng tôi. Môi trường Arduino bao gồm một màn hình nối tiếp, mà sẽ cho phép bạn xem các dữ liệu khi nó được truyền từ Arduino. Vì vậy, hãy `s thêm các chức năng cuối cùng để ký họa.

//prints the colour in the colour array, in the next step, we will send this to processing to see how good the sensor works.
void printColour(){
Serial.print("R = ");
Serial.println(int(colourArray[0]));
Serial.print("G = ");
Serial.println(int(colourArray[1]));
Serial.print("B = ");
Serial.println(int(colourArray[2]));
//delay(2000);
}
  Điều này sẽ in ra một số dữ liệu mà trông như thế này

R = 231 
G = 71 
B = 0

đó sẽ là tương đương với một màu đỏ cam.

Tôi đã để lại siêu phác thảo đơn giản . Bạn có thể ăn mặc của nó lên khi bạn thấy phù hợp. Ý tưởng là để cho thấy làm thế nào để thực hiện và sử dụng các cảm biến, sáng tạo thực hiện cho bạn. Bây giờ bạn có thể lưu tập tin của bạn một lần nữa và tải nó lên để Arduino. Arduino của bạn nên bắt đầu chạy các phác thảo, đèn nhỏ nhấp nháy. phác thảo là rất cơ bản. Tôi đã đề nghị nó như là một khối xây dựng và để cho bạn thấy làm thế nào để sử dụng bộ cảm biến.


 Bước 5: Cân bằng cảm biến

Nếu bạn nhớ mã từ trước đó, điều đầu tiên là phác thảo của chúng tôi là kiểm tra xem nếu các giá trị cân bằng đã được thực hiện . Khi bạn bật cảm biến của bạn, điều này sẽ được thiết lập sai và do đó phác thảo sau đó sẽ gọi cho các giá trị cân bằng được thiết lập . Cách chúng tôi làm điều đó là đơn giản, chúng tôi chỉ hiển thị cảm biến một mẫu thẻ trắng trắng (hoặc giấy ) và một mẫu màu đen (màu đen điểm đánh dấu trên một tờ giấy trắng hoặc giấy màu đen). Tôi nói giấy, nhưng các mẫu có thể được bất cứ điều gì, miễn là các mẫu đầu tiên là màu trắng và thứ hai là màu đen . mười giây, và chuẩn bị một thẻ mẫu nhanh chóng với một bên màu trắng và một bên màu đen. Bạn sẽ cần phải có mẫu màu trắng ở phía trước của bộ cảm biến khi bạn bắt đầu Arduino (bạn chỉ có 5 giây để có được nó ở đó) . Một khi nó nhấp nháy một lần (Điều đó là nó quét màu trắng và ghi lại các giá trị mà nó nhận được), bạn sẽ cần để thay thế cho mẫu của bạn với một mẫu màu đen, bạn có năm giây để làm điều đó. Nó sẽ chớp một lần nữa, chờ thêm 5 giây, và sau đó bắt đầu báo cáo các bài đọc của bạn sẽ chỉ được tốt như các giá trị cân bằng của bạn, vì vậy hãy thử và chú ý đến các bài đọc ở khoảng cách gần như cùng từ cảm biến. Xen kẽ chiều cao chắc chắn sẽ thay đổi ánh sáng phản xạ rơi trở lại photocell CdS, nhưng đây là một thiết lập ít khá mạnh mẽ và mang lại kết quả đô đốc cho chi phí . Nếu bạn là sự cân đúng cách, bạn đọc màu sắc . Những điều diễn ra ở phía trước của bộ cảm biến và kiểm tra đầu ra của bạn thông qua màn hình nối tiếp trong môi trường Arduino. Bạn nên thay đổi dữ liệu ở định dạng tương đương với chúng tôi đã giới thiệu cho các bạn ở trên. Nếu bạn là thiếu kiên nhẫn, bạn có thể bắt đầu cắm những con số này vào một chọn màu (Có rất nhiều trực tuyến miễn phí, thậm chí còn có một môi trường xử lý) và bắt đầu nhập số bạn đã đọc và nhìn thấy cho thấy chọn. Hoặc bạn có thể làm theo cùng một bước, nơi tôi sẽ cung cấp cho bạn một bản phác thảo xử lý ít sẽ giúp bạn xác minh rằng cảm biến của bạn đang hoạt động tốt, và làm cho nó thú vị để thử nghiệm với.

Bước 6 : Kiểm tra màu sắc Với chế biến

Tại thời điểm này, bạn cần phải có Red, giá trị Green và Blue lên trên màn hình của bạn thông

qua màn hình nối tiếp Arduino. Nhập các giá trị này bằng tay trong là tẻ nhạt và chậm chạp. Chắc chắn nó chứng minh điểm, nhưng chúng tôi thực sự cần một cách tốt hơn để chơi với điều này không . Không có sợ hãi, tôi đã bao gồm một phác thảo xử lý nhỏ để giúp bạn bắt đầu. Sao chép và dán đoạn mã trong các file văn bản vào một phác thảo mới trong chế biến. Lưu nó như là bất cứ điều gì bạn thích, bắt đầu lên Arduino, đang được bảo đảm rằng Màn hình nối tiếp trong môi trường Arduino không còn chạy, và tận hưởng ánh sáng hiển thị màu sắc thay đổi phác thảo không làm được gì nhiều, nó chỉ cập nhật nền với màu sắc được gửi đi từ cảm biến. Hãy chắc chắn rằng bạn thiết lập các cổng com một cách chính xác. Trong các hình ảnh, bạn có thể nhìn thấy tôi quét mỗi bên tung hứng một quả bóng bốn màu, và đầu ra trên màn hình.  Tôi hy vọng Instructable này đã tỏ ra thú vị cho bạn . Nếu bạn muốn có một cái nhìn tại một trong những cách tôi đã sử dụng loại cảm biến, kiểm tra của tôi Magical Lamp Chameleon Instructable Hỗ trợ một nhà sản xuất đồng, bỏ phiếu bầu chọn cho tôi thường xuyên. Chia sẻ và thưởng thức.

Post a Comment

Mới hơn Cũ hơn