Ciao a tutti sono nuovo del forum.
Premetto che ho 13 anni quindi vi prego di non insultarmi nel caso non capissi le cose al volo...
Ho già fatto diversi progetti e adesso mi sono messo sotto per modificare un codice che mi permetteva all'inizio solo di accendere un paio di led utilizzando un telecomando ir e opportuno ricevitore, fin quì tutto ok.
Dopodichè ho inserito un altro codice (opportunamente adattato) che mi permette di accendere in led in sequenza (effetto knight rider) solo che ogni volta che arriva alla fine non ripete il codice ma devo ri-premere il pulsante sul telecomando; innanzitutto vorrei sapere se fosse possibile ripetere questo fino a quando io non gli dico stop.
Inoltre non potevo non mettere la funzione che aumenta e diminuisce la velocità (sempre tramite telecomando) e dopo un'intero pomeriggio sono riuscito a fare qualcosa che funziona ma purtroppo devo aspettare che termini l'effetto scia mentre mi chiedevo se fosse possibile modificarlo mentre andava avanti-indietro.
Un grande grazie a chiunque sappia rispondermi correttamente
ps: dimenticavo il codice è allegato qui sotto
pps: temporaneamente per l'effetto luci ho "risolto" inserendone una decina... XD
Codice funzionante; ringrazio il forum per il sostegno dato a questo progettino(lo potete trovare anche alla prossima pagina):
#include <IRremote.h>
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
String stato;
int pinArray[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int count = 0;
int timer = 9;
int statoA=0;
int statoB=0;
int statoC=0;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
for (count=2;count<13;count++) {
pinMode(pinArray[count], OUTPUT);
}
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);
if(stato = "kitt"){
statoC=1;
}
if(results.value == 551520375){
stato = "acceso1";
}
else if (results.value == 551504055) {
stato = "acceso2";
}
else if (results.value == 551536695) {
stato = "acceso3";
}
else if (results.value == 551495895) {
stato = "acceso4";
}
else if (results.value == 551528535) {
stato = "acceso5";
}
else if (results.value == 551512215) {
stato = "acceso6";
}
else if (results.value == 551544855) {
stato = "acceso7";
}
else if (results.value == 551491815) {
stato = "acceso8";
}
else if (results.value == 551524455) {
stato = "acceso9";
}
else if (results.value == 551486205) {
stato = "acceso10";
}
else if (results.value == 551518845) {
stato = "acceso11";
}
else if (results.value == 551536185) {
stato = "mantieniacceso";
}
else if (results.value == 551505585) {
stato = "kitt";
}
else if (results.value == 551519865) {
stato = "spento";
}
else if (results.value == 551534655) {
stato = "velocità+1";
}
else if (results.value == 551502015) {
stato = "velocità-1";
};
if(stato == "acceso1"){
digitalWrite(2, HIGH);
}
else if (stato == "acceso2") {
digitalWrite(3, HIGH);
}
else if (stato == "acceso3") {
digitalWrite(4, HIGH);
}
else if (stato == "acceso4") {
digitalWrite(5, HIGH);
}
else if (stato == "acceso5") {
digitalWrite(6, HIGH);
}
else if (stato == "acceso6") {
digitalWrite(7, HIGH);
}
else if (stato == "acceso7") {
digitalWrite(8, HIGH);
}
else if (stato == "acceso8") {
digitalWrite(9, HIGH);
}
else if (stato == "acceso9") {
digitalWrite(10, HIGH);
}
else if (stato == "acceso10") {
digitalWrite(11, HIGH);
}
else if (stato == "acceso11") {
digitalWrite(12, HIGH);
}
else if (stato == "velocità+1") {
timer++;
}
else if (stato == "velocità-1") {
timer-=timer-1;
}
else if (stato == "mantieniacceso") {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}
else{
if ((statoC==1)&&(statoA==0)){
statoB=1-statoB;
delay(10);
}
statoA=statoC;
if(statoB==1){
for (count=2;count<13;count++)
{
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count + 1], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer*2);
}
for (count=13;count>2;count--) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count - 1], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer*2);
}
}
}
if ((statoC==1)&&(statoA==1)){
statoB=0;
delay(10);
}
statoA=statoC;
if(statoB==0){
digitalWrite(pinArray[count], LOW);
}else{
if (stato == "spento") {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
};
}
irrecv.resume(); // Receive the next value
}
}
Controllo_remoto_3_led.ino (4.87 KB)