Taula de continguts:
- Subministraments
- Pas 1: trieu el comandament a distància
- Pas 2: primer construïu-lo en una taula de pa (no és necessari, però es recomana)
- Pas 3: el codi
- Pas 4: Acabat
- Pas 5: PROVA
Vídeo: LED RGB controlat per IR Arduino Nano Baised: 5 passos
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-10 13:46
en aquest petit projecte us vull mostrar com he construït un LED RGB basat en Arduino que es controla mitjançant control remot IR i s’alimenta mitjançant un cable USB.
Subministraments
1. LED RGB
2. Receptor IR
3. Cable USB
4. Arduino nano
5. Comandament IR
6. alguns cables
7. Resistències de 50-100 ohm (estic fent servir resistències de 47 ohm però no hi ha molta diferència)
Pas 1: trieu el comandament a distància
Per tant, quin comandament a distància utilitzeu és la vostra decisió, però el comandament a distància hauria de tenir 6 claus que vulgueu utilitzar. 2 d'elles per al vermell, 2 d'elles per al verd i 2 per al blau.
Pas 2: primer construïu-lo en una taula de pa (no és necessari, però es recomana)
Ara, construïu el circuit sobre una taula de treball
connexions:
RGB LED GND> Arduino nano GND
LED RGB vermell> Pin 5 d'Arduino nano Digital
LED RGB verd> Arduino nano Pin digital 6
LED RGB Blau> Pin 9 d'Arduino nano Digital
USB GND> Arduino nano GND
USB 5v> Arduino nano 5v
Pin del receptor IR 1> Pin digital Arduino nano 4
Pin receptor 2 IR> Arduino nano GND
Pin receptor 3 IR> Arduino nano 5v
(totes les connexions es mostren a la part superior)
(cada pin de color del LED RGB està connectat en sèrie a resistències)
Pas 3: el codi
el codi és el següent:
Aquí teniu la biblioteca que he utilitzat.
#incloure
int IR_Recv = 4; // Pin receptor IR
int Rval = 0; int Gval = 0; int Bval = 0; int RvalDemo = 0; int GvalDemo = 0; int BvalDemo = 0; int R = 5; // Pin vermell int G = 6; // Pin verd int B = 9; // Pin blau # definir Rup1 1976685926 // fa augmentar la brillantor vermella # definir Rup2 3772818013 // fa augmentar la brillantor vermella # definir Rdown1 3843765582 // fa baixar la brillantor vermella # definir Rdown2 3772813933 // fa baixar la brillantor vermella # definir Gup1 3772797613 // fa augmentar la brillantor verda # definir Gup2 3774104872 // fa augmentar la brillantor verda # definir Gdown1 3772834333 // fa baixar la brillantor verda # definir Gdown2 1784778242 // fa baixar la brillantor verda # definir Bup1 3980777284 // fa blau augmenta la brillantor #define Bup2 3772781293 // fa augmentar la brillantor blava #define Bdown1 3772801693 // fa baixar la brillantor blava #define Bdown2 3361986248 // fa baixar la brillantor blava // NOTA: HEM DE CANVIAR ELS NOMBRES AL TEU COMANDAMENT !!! ! // Tinc 2 claus duplicades, per exemple Rup1 i Rup2. perquè // el meu comandament remot emet 2 números quan premeu una tecla. // en el vostre cas, podeu posar els mateixos números a Rup1 i Rup2, Gup1 i Gup2 i així un. // Quan premeu una tecla, el número hauria d'aparèixer al monitor sèrie, // Això és el que heu d'escriure a la secció "#define". IRrecv irrecv (IR_Recv); resultats decode_results; configuració nul·la () {TCCR2A = _BV (COM2A1) | _BV (COM2B1) | _BV (WGM21) | _BV (WGM20); TCCR2B = _BV (CS22); irrecv.enableIRIn (); pinMode (R, OUTPUT); pinMode (G, OUTPUT); pinMode (B, OUTPUT); Serial.begin (9600); } void loop () {if (irrecv.decode (& results)) {long int decCode = results.value; switch (results.value) {/////////// cas VERMELL Rup1: Rval = Rval + 10; trencar; cas Rup2: Rval = Rval + 10; trencar; cas Rdown1: Rval = Rval - 10; trencar; cas Rdown2: Rval = Rval - 10; trencar; //////////// cas VERD Gup1: Gval = Gval + 10; trencar; cas Gup2: Gval = Gval + 10; trencar; cas Gdown1: Gval = Gval - 10; trencar; cas Gdown2: Gval = Gval - 10; trencar; ///////////// BLUE case Bup1: Bval = Bval + 10; trencar; cas Bup2: Bval = Bval + 10; trencar; cas Bdown1: Bval = Bval - 10; trencar; cas Bdown2: Bval = Bval - 10; trencar; //////////////////////////////////////////} irrecv.resume (); } if (Rval> 255) (Rval = 255); if (Rval 255) (Gval = 255); if (Gval 255) (Bval = 255); if (Bval <0) (Bval = 0); analogWrite (R, Rval); analogWrite (G, Gval); analogWrite (B, Bval); Serial.println (results.value); delayMicroseconds (1); }
Pas 4: Acabat
No he fet una bona feina de carcassa. tot el que vaig fer va ser només gravar-lo, però vaig intentar que fos el més petit possible.
Si teniu cap pregunta o error, assegureu-me de dir-ho, faré tot el possible per ajudar-vos a solucionar l’error. gràcies per llegir.