Go Down

Topic: Comandare due uscite (Read 844 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy