Dit gebruiken zelfgemaakt je kunt elke kleur in het RGB-systeem maken met vijf knoppen
1 - voeg rood toe
2 - Voeg groen toe
3 - Voeg blauw toe
4 - Willekeurig (willekeurige kleur)
5 - Resetten
Wat we nodig hebben:
1. Arduino (in mijn geval arduino mega)
2. Ontwikkelingsraad
3. Type trui: vader, moeder en vader, vader
4. LCD 1602 (2 regels van 16 tekens)
5. Knopen 5 stuks
6. SMD RGB-LED
7. Weerstand voor 10 Kom 5 stuks
Om te beginnen, verbinden we de RGB-LED (als er geen weerstand is, zet dan een weerstand op 220 ohm).
Vervolgens hebben we 5 knoppen geplaatst: een knoppoot op de 5V-pin en de andere via een 10K-weerstand op de grond en hetzelfde been op de arduino.
We verbinden het LCD 1602-display met SDA en SCL (I2C).
Dit alles is verbonden met arduino-contacten (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) zoals op de afbeelding.
Nou, eigenlijk de schets zelf
#include "LiquidCrustal_I2C.h" // verbind de bibliotheek om via I2C met het beeldscherm te werken
#include "Wire.h" // Sluit de bibliotheek aan om met I2C te werken
int R = 9;
int G = 10;
int B = 11;
// RGB-kleuren
int BR = 0;
int BG = 0;
int BB = 0;
// variabelen om de waarde op te slaan
int KR = 2; // rode knop
int KG = 3; // knop is groen
int KB = 4; // blauwe knop
int C = 13; // resetknop
int RS = 12; // willekeurige knop
LiquidCrystal_I2C lcd (0x27.16.2); // Verbind het scherm (adres, kolommen, regels)
ongeldige setup () {// eenmaal uitgevoerd
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// sluit de RGB LED aan
}
void loop () {// eindeloos herhalen
vertraging (10); // vertraging 10 ms
lcd.init (); // definieer de weergave
lcd.backlight (); // zet de schermverlichting aan
lcd.clear (); // wis het scherm
lcd.setCursor (5, 0); // plaats de cursor op de 6e kolom en de 0e rij
lcd.print ("Kleur"); // schrijf kleur
lcd.setCursor (0, 1);
lcd.print ("R"); // schrijf R
lcd.setCursor (6, 1);
lcd.print ("G"); / schrijf G
lcd.setCursor (12, 1);
lcd.print ("B"); schrijf B
lcd.print (BB); // print de blauwe waarde
lcd.setCursor (2, 1);
lcd.print (BR); // print de waarde van rood
lcd.setCursor (8, 1);
lcd.print (BG); // print de groene waarde
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // als de R-knop wordt ingedrukt, dan is de waarde van R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // als de G-knop wordt ingedrukt, dan is de waarde van G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // als knop B wordt ingedrukt, dan is de waarde B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // als de C-knop wordt ingedrukt, dan is de waarde van R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // als de C-knop wordt ingedrukt, dan is de waarde van G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // als de C-toets wordt ingedrukt, dan is de waarde B -254
if (digitalRead (RS) == HIGH) {BR = random (0, 254); } // als de RS-toets wordt ingedrukt, dan is de waarde van R van 0 tot 254
if (digitalRead (RS) == HIGH) {BG = willekeurig (0, 254); } // als de RS-knop wordt ingedrukt, dan is de waarde van G van 0 tot 254
if (digitalRead (RS) == HIGH) {BB = random (0, 254); } // als de RS-toets wordt ingedrukt, dan is de waarde van B van 0 tot 254
BR = beperken (BR, 0, 254); // BR = (waarde, van, tot)
analogWrite (R, BR); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
BG = beperken (BG, 0, 254); // BG = (waarde, van, tot)
analogWrite (G, BG); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
BB = beperken (BB, 0, 254); // BB = (waarde, van, tot)
analogWrite (B, BB); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
}
Schets downloaden:
Zo hoort het!
Schrijf in de commentaren dat het niet duidelijk is dat ik alle vragen zal beantwoorden
#include "LiquidCrustal_I2C.h" // verbind de bibliotheek om via I2C met het beeldscherm te werken
#include "Wire.h" // Sluit de bibliotheek aan om met I2C te werken
int R = 9;
int G = 10;
int B = 11;
// RGB-kleuren
int BR = 0;
int BG = 0;
int BB = 0;
// variabelen om de waarde op te slaan
int KR = 2; // rode knop
int KG = 3; // knop is groen
int KB = 4; // blauwe knop
int C = 13; // resetknop
int RS = 12; // willekeurige knop
LiquidCrystal_I2C lcd (0x27.16.2); // Verbind het scherm (adres, kolommen, regels)
ongeldige setup () {// eenmaal uitgevoerd
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// sluit de RGB LED aan
}
void loop () {// eindeloos herhalen
vertraging (10); // vertraging 10 ms
lcd.init (); // definieer de weergave
lcd.backlight (); // zet de schermverlichting aan
lcd.clear (); // wis het scherm
lcd.setCursor (5, 0); // plaats de cursor op de 6e kolom en de 0e rij
lcd.print ("Kleur"); // schrijf kleur
lcd.setCursor (0, 1);
lcd.print ("R"); // schrijf R
lcd.setCursor (6, 1);
lcd.print ("G"); / schrijf G
lcd.setCursor (12, 1);
lcd.print ("B"); schrijf B
lcd.print (BB); // print de blauwe waarde
lcd.setCursor (2, 1);
lcd.print (BR); // print de waarde van rood
lcd.setCursor (8, 1);
lcd.print (BG); // print de groene waarde
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // als de R-knop wordt ingedrukt, dan is de waarde van R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // als de G-knop wordt ingedrukt, dan is de waarde van G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // als knop B wordt ingedrukt, dan is de waarde B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // als de C-knop wordt ingedrukt, dan is de waarde van R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // als de C-knop wordt ingedrukt, dan is de waarde van G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // als de C-toets wordt ingedrukt, dan is de waarde B -254
if (digitalRead (RS) == HIGH) {BR = random (0, 254); } // als de RS-toets wordt ingedrukt, dan is de waarde van R van 0 tot 254
if (digitalRead (RS) == HIGH) {BG = willekeurig (0, 254); } // als de RS-knop wordt ingedrukt, dan is de waarde van G van 0 tot 254
if (digitalRead (RS) == HIGH) {BB = random (0, 254); } // als de RS-toets wordt ingedrukt, dan is de waarde van B van 0 tot 254
BR = beperken (BR, 0, 254); // BR = (waarde, van, tot)
analogWrite (R, BR); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
BG = beperken (BG, 0, 254); // BG = (waarde, van, tot)
analogWrite (G, BG); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
BB = beperken (BB, 0, 254); // BB = (waarde, van, tot)
analogWrite (B, BB); // met behulp van PWM-modulatie passen we de helderheid aan van 0 tot 254
}