Ciao a tutti !
Avrei bisogno un piccolo aiuto per modificare questo pezzo di codice:
Il programma ora funziona così:
premendo (e rilasciando) un tasto si eccita un relè collegato ad una lampadina, premendolo (e rilasciandolo) una seconda volta si diseccita. (una specie di relè passo passo insomma). Se però si preme il pulsante per più di 500ms quando il relè è eccitato vengono inviati al dimmer SX13 (con comando seriale) 4 byte che ne fanno variale la luminosità su 3 livelli (da alta a media, da media a bassa, da bassa a media ...).
Il codice funziona ma vorrei migliorarlo in questo modo:
per variare la luminosità ora sono costretto a premere e rilasciare il pulsante più volte. Io vorrei invece che tenendo premuto il tasto per più di 500ms la luce cambi di intensità (ogni 1000ms) e che si fermi al rilascio.
Spero di essere stato abbastanza chiaro
Grazie mille !
UltimoStatoPulsante16 = StatoPulsante16;
StatoPulsante16 = digitalRead(Ingresso16);
if (UltimoStatoPulsante16 == HIGH && StatoPulsante16 == LOW)
ton16 = millis();
if (UltimoStatoPulsante16 == LOW && StatoPulsante16 == HIGH)
{
toff16 = millis();
if ((toff16-ton16) <= 500)
ContaImpulsi16++;
if ((toff16 - ton16 > 500) && (ContaImpulsi16 % 2 ))
{
dimmer++;
if (dimmer == 4) dimmer = 0;
}
if (! (ContaImpulsi16 % 2 ))
{
digitalWrite(Uscita16,LOW);
dimmer = 0;
}
if (ContaImpulsi16 % 2 )
{
digitalWrite(Uscita16,HIGH);
}
switch (dimmer)
{
case 0:
Serial1.print ('L', BYTE);
Serial1.print (0xFF, BYTE);
Serial1.print (0xFF, BYTE);
Serial1.print (0xFF, BYTE);
break;case 1:
Serial1.print ('L', BYTE);
Serial1.print (0xFF, BYTE);
Serial1.print (0xAA, BYTE);
Serial1.print (0xAA, BYTE);
break;case 2:
Serial1.print ('L', BYTE);
Serial1.print (0xFF, BYTE);
Serial1.print (0x55, BYTE);
Serial1.print (0x55, BYTE);
break;case 3:
Serial1.print ('L', BYTE);
Serial1.print (0xFF, BYTE);
Serial1.print (0xAA, BYTE);
Serial1.print (0xAA, BYTE);
}
}