Go Down

Topic: Comandare due uscite (Read 820 times) previous topic - next topic

baxbax

Ciao a tutti

sono ancora all'inizio delle prove, con Arduino e volevo fare la seguente prova:

Leggere un ingresso e accendere un led, facendolo lampeggiare per circa 5 secondi e contemporaneamente comandare l'altra uscita per 10 secondi.

Per adesso mi fermo con il led che lampeggia e riesco a comandare l'uscita. non so come fare a comandare l'uscita (outrelay) per il tempo che voglio io.

Questo e' il listato:
Code: [Select]
//Progetto Sensore Luce

int outflash = 11; //Uscita lampeggio
int outrelay = 8; //Uscita relay
int intsens = 0; //Ingresso sensore
int Valsens = 0;

void setup()
{
 pinMode(outrelay, OUTPUT);
 pinMode(outflash, OUTPUT);
 Serial.begin(9600);
}

void printTenths (int value)
{
 Serial.print(value);
}

void loop()
{
 Valsens = analogRead(intsens); //Leggi valore sensore
 Serial.print(Valsens);
 Serial.print("-");
 if (Valsens <=700) {
   digitalWrite (outrelay, LOW);
   digitalWrite (outflash, LOW);
 }
 else {
   digitalWrite (outrelay, HIGH);
   blinking();
 }
}

void blinking()
{
 for (int x=0; x<5; x++) {
   digitalWrite (outflash, HIGH);
   delay(300);
   digitalWrite (outflash, LOW);
   delay(300);
   Serial.print(x);
 }
}


Qualcuno puo' aiutarmi
Grazie
Bax

uwefed

Non fare il ritardo con delay ma usa millis() come nel esempio incluso del IDE ( File - Exemples - 2.Digital - BlinkWithoutDelay)
Ciao Uwe

baxbax

Ciao Uwe. Ti ringrazio per la risposta.

Adesso sono riuscito a far lampeggiare il led, ma non riesco a capire come fare a fare in modo che quando il sensore ritorna al valore di riposo, l'altra uscita rimanga ancora attiva per 5 secondi.

Grazie
Bax

uwefed

ciao

long unsigned start =0;
...

quando il tasto é premuto fai partire il tempo memorizzando
start=milli();
accendi lampada

poi controlli
if (milli() >= ((start+10000))
{spegni lampada}

Go Up