Gamit ito gawang bahay maaari kang gumawa ng anumang kulay sa system ng RGB na may limang mga pindutan
1 - magdagdag ng pula
2 - Magdagdag ng Green
3 - Magdagdag ng Blue
4 - Random (random na kulay)
5 - I-reset
Ano ang kailangan namin:
1. Arduino (sa aking kaso arduino mega)
2. Board ng pag-unlad
3. Uri ng jumper: tatay at tatay
4. LCD 1602 (2 linya ng 16 character)
5. Mga pindutan ng 5 piraso
6. SMD RGB LED
7. Resistor para sa 10 Kom 5 piraso
Upang magsimula, ikinonekta namin ang RGB LED (sa kawalan ng isang risistor, maglagay ng isang risistor sa 220 ohms).
Susunod, naglalagay kami ng 5 mga pindutan: isang pindutan ng leg sa 5V pin, at ang isa pa sa pamamagitan ng isang 10K risistor sa lupa at ang parehong binti sa arduino.
Ikinonekta namin ang display ng LCD 1602 sa SDA at SCL (I2C).
Ang lahat ng ito ay konektado sa mga contact arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) tulad ng sa larawan.
Well, talagang ang sketch mismo
#include "LiquidCrustal_I2C.h" // ikonekta ang library upang gumana sa pagpapakita sa pamamagitan ng I2C
#include "Wire.h" // Ikonekta ang library upang gumana sa I2C
int R = 9;
int G = 10;
int B = 11;
// kulay ng RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variable upang mai-save ang halaga
int KR = 2; // pindutan ng pula
int KG = 3; // button ay berde
int KB = 4; // asul na butones
int C = 13; // button na i-reset
int RS = 12; // button na random
LiquidCrystal_I2C lcd (0x27.16.2); // Ikonekta ang display (address, haligi, linya)
walang pag-setup () {// tumakbo nang isang beses
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// ikonekta ang RGB LED
}
walang bisa na loop () {// ulitin nang walang katapusang
pagkaantala (10); // antala ng 10 ms
lcd.init (); // tukuyin ang display
lcd.backlight (); // i-on ang backlight ng display
lcd.clear (); // i-clear ang display
lcd.setCursor (5, 0); // ilagay ang cursor sa ika-6 na haligi at ika-0 na hilera
lcd.print ("Kulay"); // kulay ng pagsulat
lcd.setCursor (0, 1);
lcd.print ("R"); // isulat ang R
lcd.setCursor (6, 1);
lcd.print ("G"); / isulat ang G
lcd.setCursor (12, 1);
lcd.print ("B"); isulat ang B
lcd.print (BB); // i-print ang asul na halaga
lcd.setCursor (2, 1);
lcd.print (BR); // i-print ang halaga ng pula
lcd.setCursor (8, 1);
lcd.print (BG); // i-print ang berdeng halaga
lcd.setCursor (13, 1);
kung (digitalRead (KR) == HIGH) {BR + = 15; } // kung ang pindutan ng R ay pinindot, pagkatapos ay ang halaga ng R +15
kung (digitalRead (KG) == HIGH) {BG + = 15; } // kung ang pindutan ng G ay pinindot, pagkatapos ay ang halaga ng G +15
kung (digitalRead (KB) == HIGH) {BB + = 15; } // kung ang pindutan ng B ay pinindot, pagkatapos ang halaga B +15
kung (digitalRead (C) == HIGH) {BR - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ang halaga ng R -254
kung (digitalRead (C) == HIGH) {BG - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ay ang halaga ng G -254
kung (digitalRead (C) == HIGH) {BB - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ang halaga B -254
kung (digitalRead (RS) == HIGH) {BR = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng R ay mula 0 hanggang 254
kung (digitalRead (RS) == HIGH) {BG = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng G ay mula 0 hanggang 254
kung (digitalRead (RS) == HIGH) {BB = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng B ay mula 0 hanggang 254
BR = pilitin (BR, 0, 254); // BR = (halaga, mula, hanggang)
analogWrite (R, BR); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
BG = pilitin (BG, 0, 254); // BG = (halaga, mula, hanggang)
analogWrite (G, BG); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
BB = pilitin (BB, 0, 254); // BB = (halaga, mula, hanggang)
analogWrite (B, BB); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
}
I-download ang sketch:
Iyon ang dapat!
Isulat sa mga puna na hindi malinaw na sasagutin ko ang lahat ng mga katanungan
#include "LiquidCrustal_I2C.h" // ikonekta ang library upang gumana sa pagpapakita sa pamamagitan ng I2C
#include "Wire.h" // Ikonekta ang library upang gumana sa I2C
int R = 9;
int G = 10;
int B = 11;
// kulay ng RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variable upang mai-save ang halaga
int KR = 2; // pindutan ng pula
int KG = 3; // button ay berde
int KB = 4; // asul na butones
int C = 13; // button na i-reset
int RS = 12; // button na random
LiquidCrystal_I2C lcd (0x27.16.2); // Ikonekta ang display (address, haligi, linya)
walang pag-setup () {// tumakbo nang isang beses
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// ikonekta ang RGB LED
}
walang bisa na loop () {// ulitin nang walang katapusang
pagkaantala (10); // antala ng 10 ms
lcd.init (); // tukuyin ang display
lcd.backlight (); // i-on ang backlight ng display
lcd.clear (); // i-clear ang display
lcd.setCursor (5, 0); // ilagay ang cursor sa ika-6 na haligi at ika-0 na hilera
lcd.print ("Kulay"); // kulay ng pagsulat
lcd.setCursor (0, 1);
lcd.print ("R"); // isulat ang R
lcd.setCursor (6, 1);
lcd.print ("G"); / isulat ang G
lcd.setCursor (12, 1);
lcd.print ("B"); isulat ang B
lcd.print (BB); // i-print ang asul na halaga
lcd.setCursor (2, 1);
lcd.print (BR); // i-print ang halaga ng pula
lcd.setCursor (8, 1);
lcd.print (BG); // i-print ang berdeng halaga
lcd.setCursor (13, 1);
kung (digitalRead (KR) == HIGH) {BR + = 15; } // kung ang pindutan ng R ay pinindot, pagkatapos ay ang halaga ng R +15
kung (digitalRead (KG) == HIGH) {BG + = 15; } // kung ang pindutan ng G ay pinindot, pagkatapos ay ang halaga ng G +15
kung (digitalRead (KB) == HIGH) {BB + = 15; } // kung ang pindutan ng B ay pinindot, pagkatapos ang halaga B +15
kung (digitalRead (C) == HIGH) {BR - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ang halaga ng R -254
kung (digitalRead (C) == HIGH) {BG - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ay ang halaga ng G -254
kung (digitalRead (C) == HIGH) {BB - = 254; } // kung ang pindutan ng C ay pinindot, pagkatapos ang halaga B -254
kung (digitalRead (RS) == HIGH) {BR = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng R ay mula 0 hanggang 254
kung (digitalRead (RS) == HIGH) {BG = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng G ay mula 0 hanggang 254
kung (digitalRead (RS) == HIGH) {BB = random (0, 254); } // kung ang pindutan ng RS ay pinindot, kung gayon ang halaga ng B ay mula 0 hanggang 254
BR = pilitin (BR, 0, 254); // BR = (halaga, mula, hanggang)
analogWrite (R, BR); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
BG = pilitin (BG, 0, 254); // BG = (halaga, mula, hanggang)
analogWrite (G, BG); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
BB = pilitin (BB, 0, 254); // BB = (halaga, mula, hanggang)
analogWrite (B, BB); // gamit ang PWM modulation ay inaayos namin ang ningning mula 0 hanggang 254
}