Pages: [1]   Go Down
Author Topic: Comandare due uscite  (Read 723 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
//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
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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}
Logged

Pages: [1]   Go Up
Jump to: