Utilitzant això casolans podeu fer qualsevol color al sistema RGB amb cinc botons
1: afegir vermell
2: afegeix el verd
3: afegir blau
4 - Aleatori (color aleatori)
5 - Restablir
El que necessitem:
1. Arduino (en el meu cas arduino mega)
2. Taula de desenvolupament
3. Tipus de pont: pare mare i pare
4. LCD 1602 (2 línies de 16 caràcters)
5. Botons 5 peces
6. LED SMD RGB
7. Resistiu per a 10 peces de 5 Kom
Per començar, connectem el LED RGB (si no hi ha resistència, poseu una resistència a 220 ohms).
A continuació, posem 5 botons: una cama de botó per pin 5V, i l’altra mitjançant una resistència de 10K a terra i la mateixa cama a arduino.
Connectem la pantalla LCD 1602 a SDA i SCL (I2C).
Tot això està connectat a contactes arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) com a la imatge.
Bé, en realitat l’esbós en si
#include "LiquidCrustal_I2C.h" // connecta la biblioteca per treballar amb la pantalla mitjançant I2C
#include "Wire.h" // Connecta la biblioteca per funcionar amb I2C
int R = 9;
int G = 10;
int B = 11;
// colors RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variables per desar el valor
int KR = 2; // botó vermell
int KG = 3; // el botó // és verd
int KB = 4; // botó blau
int C = 13; // botó de restabliment
int RS = 12; // botó aleatori
LiquidCrystal_I2C lcd (0x27.16.2); // Connectar la pantalla (adreça, columnes, línies)
void setup () {// executar una vegada
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// connecteu el LED RGB
}
void loop () {// repetir sense fi
retard (10); // retard de 10 ms
lcd.init (); // definir la pantalla
lcd.backlight (); // encendre el retroil·luminació de la pantalla
lcd.clear (); // esborreu la pantalla
lcd.setCursor (5, 0); // poseu el cursor a la sisena columna i a la 0a fila
lcd.print ("Color"); // color d’escriptura
lcd.setCursor (0, 1);
lcd.print ("R"); // escriure R
lcd.setCursor (6, 1);
lcd.print ("G"); / escriu G
lcd.setCursor (12, 1);
lcd.print ("B"); escriu B
lcd.print (BB); // imprimiu el valor blau
lcd.setCursor (2, 1);
lcd.print (BR); // imprimiu el valor de vermell
lcd.setCursor (8, 1);
lcd.print (BG); // imprimiu el valor verd
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // si es prem el botó R, el valor de R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // si es prem el botó G, el valor de G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // si es prem el botó B, el valor B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // si es prem el botó C, el valor de R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // si es prem el botó C, el valor de G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // si es prem el botó C, el valor B -254
if (digitalRead (RS) == HIGH) {BR = aleatori (0, 254); } // si es prem el botó RS, el valor de R és de 0 a 254
if (digitalRead (RS) == HIGH) {BG = aleatori (0, 254); } // si es prem el botó RS, el valor de G és de 0 a 254
if (digitalRead (RS) == HIGH) {BB = aleatori (0, 254); } // si es prem el botó RS, el valor de B és de 0 a 254
BR = restringir (BR, 0, 254); // BR = (valor, de, a)
analogWrite (R, BR); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
BG = restringir (BG, 0, 254); // BG = (valor, de, a)
analogWrite (G, BG); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
BB = restringir (BB, 0, 254); // BB = (valor, de, a)
analogWrite (B, BB); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
}
Descarregar esbós:
Això hauria de ser!
Escriu als comentaris que no està clar que respondré a totes les preguntes
#include "LiquidCrustal_I2C.h" // connecta la biblioteca per treballar amb la pantalla mitjançant I2C
#include "Wire.h" // Connecta la biblioteca per funcionar amb I2C
int R = 9;
int G = 10;
int B = 11;
// colors RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variables per desar el valor
int KR = 2; // botó vermell
int KG = 3; // el botó // és verd
int KB = 4; // botó blau
int C = 13; // botó de restabliment
int RS = 12; // botó aleatori
LiquidCrystal_I2C lcd (0x27.16.2); // Connectar la pantalla (adreça, columnes, línies)
void setup () {// executar una vegada
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// connecteu el LED RGB
}
void loop () {// repetir sense fi
retard (10); // retard de 10 ms
lcd.init (); // definir la pantalla
lcd.backlight (); // encendre el retroil·luminació de la pantalla
lcd.clear (); // esborreu la pantalla
lcd.setCursor (5, 0); // poseu el cursor a la sisena columna i a la 0a fila
lcd.print ("Color"); // color d’escriptura
lcd.setCursor (0, 1);
lcd.print ("R"); // escriure R
lcd.setCursor (6, 1);
lcd.print ("G"); / escriu G
lcd.setCursor (12, 1);
lcd.print ("B"); escriu B
lcd.print (BB); // imprimiu el valor blau
lcd.setCursor (2, 1);
lcd.print (BR); // imprimiu el valor de vermell
lcd.setCursor (8, 1);
lcd.print (BG); // imprimiu el valor verd
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // si es prem el botó R, el valor de R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // si es prem el botó G, el valor de G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // si es prem el botó B, el valor B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // si es prem el botó C, el valor de R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // si es prem el botó C, el valor de G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // si es prem el botó C, el valor B -254
if (digitalRead (RS) == HIGH) {BR = aleatori (0, 254); } // si es prem el botó RS, el valor de R és de 0 a 254
if (digitalRead (RS) == HIGH) {BG = aleatori (0, 254); } // si es prem el botó RS, el valor de G és de 0 a 254
if (digitalRead (RS) == HIGH) {BB = aleatori (0, 254); } // si es prem el botó RS, el valor de B és de 0 a 254
BR = restringir (BR, 0, 254); // BR = (valor, de, a)
analogWrite (R, BR); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
BG = restringir (BG, 0, 254); // BG = (valor, de, a)
analogWrite (G, BG); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
BB = restringir (BB, 0, 254); // BB = (valor, de, a)
analogWrite (B, BB); // mitjançant la modulació PWM ajustem la brillantor de 0 a 254
}