Utiliser ceci fait maison vous pouvez créer n'importe quelle couleur dans le système RVB avec cinq boutons
1 - ajouter du rouge
2 - Ajouter du vert
3 - Ajouter du bleu
4 - Aléatoire (couleur aléatoire)
5 - Réinitialiser
Ce dont nous avons besoin:
1. Arduino (dans mon cas, Arduino Mega)
2. Conseil de développement
3. Type de cavalier: papa maman et papa papa
4. LCD 1602 (2 lignes de 16 caractères)
5. Boutons 5 pièces
6. SMD RGB LED
7. Résistance pour 10 Kom 5 pièces
Pour commencer, on connecte la LED RGB (en l'absence de résistance, mettre une résistance à 220 ohms).
Ensuite, nous avons mis 5 boutons: un pied de bouton sur la broche 5V, et l'autre via une résistance 10K au sol et le même pied à l'arduino.
Nous connectons l'écran LCD 1602 à SDA et SCL (I2C).
Tout cela est connecté à des contacts Arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) comme dans l'image.
Eh bien, en fait, le croquis lui-même
#include "LiquidCrustal_I2C.h" // connecter la bibliothèque pour travailler avec l'affichage via I2C
#include "Wire.h" // Connectez la bibliothèque pour travailler avec I2C
int R = 9;
int G = 10;
int B = 11;
// Couleurs RVB
int BR = 0;
int BG = 0;
int BB = 0;
// variables pour enregistrer la valeur
int KR = 2; // bouton rouge
int KG = 3; // le bouton est vert
int KB = 4; // bouton bleu
int C = 13; // bouton de réinitialisation
int RS = 12; // bouton aléatoire
Écran LCD LiquidCrystal_I2C (0x27.16.2); // Connecter l'affichage (adresse, colonnes, lignes)
void setup () {// exécuté une seule fois
pinMode (R, SORTIE);
pinMode (G, SORTIE);
pinMode (B, SORTIE);
// connecter la LED RGB
}
void loop () {// répéter sans fin
retard (10); // retard 10 ms
lcd.init (); // définir l'affichage
lcd.backlight (); // allume le rétroéclairage de l'écran
lcd.clear (); // efface l'affichage
lcd.setCursor (5, 0); // place le curseur sur la 6ème colonne et la 0ème ligne
lcd.print ("Couleur"); // écrire la couleur
lcd.setCursor (0, 1);
lcd.print ("R"); // écrit R
lcd.setCursor (6, 1);
lcd.print ("G"); / écrire G
lcd.setCursor (12, 1);
lcd.print ("B"); écrire B
lcd.print (BB); // affiche la valeur bleue
lcd.setCursor (2, 1);
lcd.print (BR); // affiche la valeur du rouge
lcd.setCursor (8, 1);
lcd.print (BG); // affiche la valeur verte
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // si le bouton R est enfoncé, alors la valeur de R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // si le bouton G est enfoncé, alors la valeur de G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // si le bouton B est enfoncé, alors la valeur B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // si le bouton C est enfoncé, alors la valeur de R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // si le bouton C est enfoncé, alors la valeur de G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // si le bouton C est enfoncé, alors la valeur B -254
if (digitalRead (RS) == HIGH) {BR = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur de R est de 0 à 254
if (digitalRead (RS) == HIGH) {BG = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur G est de 0 à 254
if (digitalRead (RS) == HIGH) {BB = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur B est de 0 à 254
BR = contrainte (BR, 0, 254); // BR = (valeur, de, à)
analogWrite (R, BR); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
BG = contrainte (BG, 0, 254); // BG = (valeur, de, à)
analogWrite (G, BG); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
BB = contrainte (BB, 0, 254); // BB = (valeur, de, à)
analogWrite (B, BB); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
}
Téléchargez le croquis:
Voilà ce que ça devrait être!
Écrivez dans les commentaires qu'il n'est pas clair que je vais répondre à toutes les questions
#include "LiquidCrustal_I2C.h" // connecter la bibliothèque pour travailler avec l'affichage via I2C
#include "Wire.h" // Connectez la bibliothèque pour travailler avec I2C
int R = 9;
int G = 10;
int B = 11;
// Couleurs RVB
int BR = 0;
int BG = 0;
int BB = 0;
// variables pour enregistrer la valeur
int KR = 2; // bouton rouge
int KG = 3; // le bouton est vert
int KB = 4; // bouton bleu
int C = 13; // bouton de réinitialisation
int RS = 12; // bouton aléatoire
Écran LCD LiquidCrystal_I2C (0x27.16.2); // Connecter l'affichage (adresse, colonnes, lignes)
void setup () {// exécuté une seule fois
pinMode (R, SORTIE);
pinMode (G, SORTIE);
pinMode (B, SORTIE);
// connecter la LED RGB
}
void loop () {// répéter sans fin
retard (10); // retard 10 ms
lcd.init (); // définir l'affichage
lcd.backlight (); // allume le rétroéclairage de l'écran
lcd.clear (); // efface l'affichage
lcd.setCursor (5, 0); // place le curseur sur la 6ème colonne et la 0ème ligne
lcd.print ("Couleur"); // écrire la couleur
lcd.setCursor (0, 1);
lcd.print ("R"); // écrit R
lcd.setCursor (6, 1);
lcd.print ("G"); / écrire G
lcd.setCursor (12, 1);
lcd.print ("B"); écrire B
lcd.print (BB); // affiche la valeur bleue
lcd.setCursor (2, 1);
lcd.print (BR); // affiche la valeur du rouge
lcd.setCursor (8, 1);
lcd.print (BG); // affiche la valeur verte
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // si le bouton R est enfoncé, alors la valeur de R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // si le bouton G est enfoncé, alors la valeur de G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // si le bouton B est enfoncé, alors la valeur B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // si le bouton C est enfoncé, alors la valeur de R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // si le bouton C est enfoncé, alors la valeur de G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // si le bouton C est enfoncé, alors la valeur B -254
if (digitalRead (RS) == HIGH) {BR = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur de R est de 0 à 254
if (digitalRead (RS) == HIGH) {BG = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur G est de 0 à 254
if (digitalRead (RS) == HIGH) {BB = random (0, 254); } // si le bouton RS est enfoncé, alors la valeur B est de 0 à 254
BR = contrainte (BR, 0, 254); // BR = (valeur, de, à)
analogWrite (R, BR); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
BG = contrainte (BG, 0, 254); // BG = (valeur, de, à)
analogWrite (G, BG); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
BB = contrainte (BB, 0, 254); // BB = (valeur, de, à)
analogWrite (B, BB); // en utilisant la modulation PWM, nous ajustons la luminosité de 0 à 254
}