Tämän käyttäminen kotitekoinen voit tehdä mitä tahansa väriä RGB-järjestelmässä viidellä painikkeella
1 - lisää punainen
2 - Lisää vihreä
3 - Lisää sininen
4 - satunnainen (satunnainen väri)
5 - Palauta
Tarvitsemme:
1. Työläs (minun tapauksessani arduino mega)
2. Kehityslautakunta
3. Puserotyyppi: isä äiti ja isä isä
4. LCD 1602 (2 riviä 16 merkkiä)
5. Painikkeet 5 kpl
6. SMD RGB LED
7. Vastus 10 Kom 5 kappaleelle
Aluksi liitämme RGB-merkkivalon (jos vastusta ei ole, aseta vastus 220 ohmiin).
Seuraavaksi laitamme 5 nappia: yksi nappijalka kiinnittää 5V, ja toinen 10K: n vastuksen kautta maahan ja sama jalka arduinoon.
Yhdistämme LCD 1602 -näytön SDA: hon ja SCL: ään (I2C).
Kaikki tämä on kytketty arduino-koskettimiin (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) kuten kuvassa.
No, itse luonnos
#include "LiquidCrustal_I2C.h" // yhdistä kirjasto toimimaan näytön kanssa I2C: n kautta
#include "Wire.h" // Yhdistä kirjasto toimimaan I2C: n kanssa
int R = 9;
int G = 10;
int B = 11;
// RGB-värit
int BR = 0;
int BG = 0;
int BB = 0;
// muuttujat arvon tallentamiseksi
int KR = 2; // punainen painike
int KG = 3; // -painike on vihreä
int KB = 4; // sininen painike
int C = 13; // nollauspainike
int RS = 12; // painike satunnainen
LiquidCrystal_I2C lcd (0x27,16,2); // Yhdistä näyttö (osoite, sarakkeet, rivit)
void setup () {// suorita kerran
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// kytke RGB-LED
}
void loop () {// toista loputtomasti
viive (10); // viive 10 ms
lcd.init (); // määritä näyttö
lcd taustavalo (); // kytke näytön taustavalo päälle
lcd.selkeä (); // tyhjennä näyttö
lcd.setCursor (5, 0); // laita kursori kuudenteen sarakkeeseen ja 0. riviin
lcd.print ("väri"); // kirjoita väri
lcd.setCursor (0, 1);
lcd.print ("R"); // kirjoita R
lcd.setCursor (6, 1);
lcd.print ("G"); / kirjoita G
lcd.setCursor (12, 1);
lcd.print ("B"); kirjoita B
lcd-painos (BB); // tulosta sininen arvo
lcd.setCursor (2, 1);
lcd.print (BR); // tulosta punaisen arvo
lcd.setCursor (8, 1);
lcd.print (BG); // tulosta vihreä arvo
lcd.setCursor (13, 1);
if (digitalRead (KR) == KORKEA) {BR + = 15; } // jos R-painiketta painetaan, niin R +15-arvo
if (digitalRead (KG) == KORKEA) {BG + = 15; } // jos G-painiketta painetaan, sitten arvo G +15
if (digitalRead (KB) == KORKEA) {BB + = 15; } // jos painiketta B painetaan, arvo B +15
if (digitalRead (C) == KORKEA) {BR - = 254; } // Jos painiketta C painetaan, niin R -254: n arvo
if (digitalRead (C) == KORKEA) {BG - = 254; } // jos C-painiketta painetaan, arvo G-254
if (digitalRead (C) == KORKEA) {BB - = 254; } // jos C-painiketta painetaan, arvo B -254
if (digitalRead (RS) == KORKEA) {BR = satunnainen (0, 254); } // Jos RS-painiketta painetaan, R: n arvo on 0 - 254
if (digitalRead (RS) == KORKEA) {BG = satunnainen (0, 254); } // Jos RS-painiketta painetaan, G: n arvo on 0-254
if (digitalRead (RS) == KORKEA) {BB = satunnainen (0, 254); } // Jos RS-painiketta painetaan, B: n arvo on 0-254
BR = rajoitus (BR, 0, 254); // BR = (arvo, välillä, arvoon)
analogWrite (R, BR); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
BG = rajoitus (BG, 0, 254); // BG = (arvo, välillä, arvoon)
analogWrite (G, BG); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
BB = rajoitus (BB, 0, 254); // BB = (arvo, välillä, arvoon)
analogWrite (B, BB); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
}
Lataa luonnos:
Sitä sen pitäisi olla!
Kirjoita kommentteihin, että ei ole selvää, että vastaan kaikkiin kysymyksiin
#include "LiquidCrustal_I2C.h" // yhdistä kirjasto toimimaan näytön kanssa I2C: n kautta
#include "Wire.h" // Yhdistä kirjasto toimimaan I2C: n kanssa
int R = 9;
int G = 10;
int B = 11;
// RGB-värit
int BR = 0;
int BG = 0;
int BB = 0;
// muuttujat arvon tallentamiseksi
int KR = 2; // punainen painike
int KG = 3; // -painike on vihreä
int KB = 4; // sininen painike
int C = 13; // nollauspainike
int RS = 12; // painike satunnainen
LiquidCrystal_I2C lcd (0x27,16,2); // Yhdistä näyttö (osoite, sarakkeet, rivit)
void setup () {// suorita kerran
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// kytke RGB-LED
}
void loop () {// toista loputtomasti
viive (10); // viive 10 ms
lcd.init (); // määritä näyttö
lcd taustavalo (); // kytke näytön taustavalo päälle
lcd.selkeä (); // tyhjennä näyttö
lcd.setCursor (5, 0); // laita kursori kuudenteen sarakkeeseen ja 0. riviin
lcd.print ("väri"); // kirjoita väri
lcd.setCursor (0, 1);
lcd.print ("R"); // kirjoita R
lcd.setCursor (6, 1);
lcd.print ("G"); / kirjoita G
lcd.setCursor (12, 1);
lcd.print ("B"); kirjoita B
lcd-painos (BB); // tulosta sininen arvo
lcd.setCursor (2, 1);
lcd.print (BR); // tulosta punaisen arvo
lcd.setCursor (8, 1);
lcd.print (BG); // tulosta vihreä arvo
lcd.setCursor (13, 1);
if (digitalRead (KR) == KORKEA) {BR + = 15; } // jos R-painiketta painetaan, niin R +15-arvo
if (digitalRead (KG) == KORKEA) {BG + = 15; } // jos G-painiketta painetaan, sitten arvo G +15
if (digitalRead (KB) == KORKEA) {BB + = 15; } // jos painiketta B painetaan, arvo B +15
if (digitalRead (C) == KORKEA) {BR - = 254; } // Jos painiketta C painetaan, niin R -254: n arvo
if (digitalRead (C) == KORKEA) {BG - = 254; } // jos C-painiketta painetaan, arvo G-254
if (digitalRead (C) == KORKEA) {BB - = 254; } // jos C-painiketta painetaan, arvo B -254
if (digitalRead (RS) == KORKEA) {BR = satunnainen (0, 254); } // Jos RS-painiketta painetaan, R: n arvo on 0 - 254
if (digitalRead (RS) == KORKEA) {BG = satunnainen (0, 254); } // Jos RS-painiketta painetaan, G: n arvo on 0-254
if (digitalRead (RS) == KORKEA) {BB = satunnainen (0, 254); } // Jos RS-painiketta painetaan, B: n arvo on 0-254
BR = rajoitus (BR, 0, 254); // BR = (arvo, välillä, arvoon)
analogWrite (R, BR); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
BG = rajoitus (BG, 0, 254); // BG = (arvo, välillä, arvoon)
analogWrite (G, BG); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
BB = rajoitus (BB, 0, 254); // BB = (arvo, välillä, arvoon)
analogWrite (B, BB); // säädämme kirkkautta PWM-modulaatiolla 0 - 254
}