Porta digitale High/Low senza delay, premendo pulsante

ciao a tutti !!!

Sapete dirmi come far accendere un led, e spegnerlo quando ripremo il pulsante, senza usare la funzione delay ?

Cioè premi una volta il pulsante e il led si accende, ripremo il pulsante ed il led si spegne ...

Vi incollo il codice che ho usato, dato che il pulsante è quello di un telecomando...

#include <IRremote.h>

int led1 = 12;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;


void setup()
{  
 Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(led1, OUTPUT);
}

void loop() {
   if (irrecv.decode(&results)) {
   Serial.println(results.value, DEC);


   if(results.value == 33480735)
     digitalWrite(led1, HIGH);    
     delay(100);
     digitalWrite(led1, LOW);  
     
  
 }

 }

Sapete aiutarmi ?

Grazie 1000

Puoi usare o meglio leggere i timer interni sfruttando millis......

In realtà ti basterebbe leggere lo status del pin led1 ogni volta che results.value == 33480735.
Se è HIGH gli dici di passare a LOW, se è LOW gli dici di passare ad HIGH.

Grazie ragazzi per la risposta ....

Potete, gentilmente, modificare il mio codice, perchè non riesco a capire quello che devo fare ...

:frowning:

Grazie !!

byte flag=0; //0 è uguale a LOW

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    if(results.value == 33480735)
      digitalWrite(led1, flag);
      flag^=1; //con lo XOR, scambi tra 0 e 1 ricursivamente (1=HIGH)
    }
}

Grazie !!!

Ecco il codice pulito:

#include <IRremote.h>

int led1 = 5;
int RECV_PIN = 4;
IRrecv irrecv(RECV_PIN);
decode_results results;
byte flag=0;

void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(led1, OUTPUT);
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
if (results.value == 33480735) {
digitalWrite(led1, flag);
flag^=1;
}
}
}

Ora però basta, non aprire più richieste di aiuto per 1 settimana... hai ingolfato il forum a forza di richiedere questo o quello, io mi astengo dall'aiutarti per 7 giorni XD XD
Studia un po' per conto tuo :stuck_out_tongue:

Hai ragione !!!

Ci rivediamo tra 1 settimana, dato che inizierò un grossissimo progetto! Arduino @Space

Hi hi hi hi