подключаем к моторшилду RGB светодиодную ленту и управляем ею с пульта ДУ, код из видео
#include <Shift595.h> // https://sites.google.com/site/shift595arduino/downloads #define M1A 2 #define M1B 3 #define M2A 1 #define M2B 4 #define M4A 0 #define M4B 6 #define M3A 5 #define M3B 7 #define PWM_M1 11 #define PWM_M2 3 #define PWM_M3 6 #define PWM_M4 5 #define SER1 10 #define SER2 9 #define PWRON 7 Shift595 Shifter(8, 12, 4, 1); void setup() { Serial.begin(9600); Shifter.clearRegisters(); pinMode(PWRON, OUTPUT); digitalWrite(PWRON, LOW); // включение 74HC595 analogWrite(PWM_M1, 255); analogWrite(PWM_M2, 255); analogWrite(PWM_M3, 255); analogWrite(PWM_M4, 255); delay(2000); } void loop(){ Shifter.setRegisterPin(M1A, LOW); Shifter.setRegisterPin(M2A, HIGH); Shifter.setRegisterPin(M3A, LOW); Shifter.setRegisterPin(M4A, LOW); Shifter.setRegisterPin(M1B, HIGH); Shifter.setRegisterPin(M2B, HIGH); Shifter.setRegisterPin(M3B, HIGH); Shifter.setRegisterPin(M4B, HIGH); /////// for(int i = 0; i < 5; i++){ for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) { analogWrite(PWM_M1, fadeValue); delay(1); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M1, fadeValue); delay(1); } for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) { analogWrite(PWM_M4, fadeValue); delay(1); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M4, fadeValue); delay(1); } for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) { analogWrite(PWM_M3, fadeValue); delay(1); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M3, fadeValue); delay(1); } } delay(500); for(int i = 0; i < 2; i++){ for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) { analogWrite(PWM_M3, fadeValue); delay(5); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M1, fadeValue); delay(5); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M4, fadeValue); delay(5); } } delay(500); for(int i = 0; i < 2; i++){ for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) { analogWrite(PWM_M4, fadeValue); delay(5); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) { analogWrite(PWM_M1, fadeValue); delay(5); } } delay(500); }
#include <Shift595.h> // https://sites.google.com/site/shift595arduino/downloads #include <IRremote.h> #define POWER_KEY 0x40BF30CF // коды пульта ДУ #define KEY1 0x40BF7887 #define KEY2 0x40BFF807 #define KEY3 0xC03FC03F #define KEY4 0xC03F40BF #define KEYPWM1 0x40BFA05F #define KEYPWM2 0x40BF609F #define KEYPWM3 0x40BFE01F #define KEYPWM7 0x40BFB04F #define KEYPWM8 0x40BF708F #define KEYPWM9 0x40BFF00F #define M1A 2 #define M1B 3 #define M2A 1 #define M2B 4 #define M4A 0 #define M4B 6 #define M3A 5 #define M3B 7 #define PWM_M1 11 #define PWM_M2 3 #define PWM_M3 6 #define PWM_M4 5 #define SER1 10 #define SER2 9 #define PWRON 7 IRrecv irrecv(SER1); Shift595 Shifter(8, 12, 4, 1); decode_results results; byte analogData1; byte analogData2; byte analogData3; // значения аналогово выхода uint32_t val; void setup() { irrecv.enableIRIn(); pinMode(PWRON, OUTPUT); digitalWrite(PWRON, LOW); // включение 74HC595 Shifter.setRegisterPin(M1A, LOW); Shifter.setRegisterPin(M2A, HIGH); Shifter.setRegisterPin(M3A, LOW); Shifter.setRegisterPin(M4A, LOW); Shifter.setRegisterPin(M1B, HIGH); Shifter.setRegisterPin(M2B, HIGH); Shifter.setRegisterPin(M3B, HIGH); Shifter.setRegisterPin(M4B, HIGH); analogWrite(PWM_M1, 0); analogWrite(PWM_M2, 0); analogWrite(PWM_M3, 0); analogWrite(PWM_M4, 0); } void loop(){ if (irrecv.decode(&results)) { if (results.value != 0xFFFFFFFF){ // и этот пакет не FF val = results.value; // сохраняем правельный пакет в переменную } // если пришел FF, соответственно пропускаем. /// сверяем значение из переменной val.. если пришла команда повтора (пакет с FF) /// в переменной останется прошлый, правельный, пакет и код выполнится повторно. if (val == KEYPWM7) if (analogData1 != 0) analogData1 -= 5; // если шим не равно 0 отнимаем 1 if (val == KEYPWM1) if (analogData1 < 255) analogData1 += 5; // если шим меньше 255 прибовляем 1 if (val == KEYPWM8) if (analogData2 != 0) analogData2 -= 5; if (val == KEYPWM2) if (analogData2 < 255) analogData2 += 5; if (val == KEYPWM9) if (analogData3 != 0) analogData3 -= 5; if (val == KEYPWM3) if (analogData3 < 255) analogData3 += 5; analogWrite(PWM_M1, analogData1); // устанавливаем значение в выход analogWrite(PWM_M3, analogData2); analogWrite(PWM_M4, analogData3); irrecv.resume(); // Receive the next value } }