Led a tempo

MI servirebbe un aiuto ,nella creazione del software di accensione di un led. Praticamente io con Arduino yun, mando il comando di accensione del pin 13 il led si accende e poi dopo un po di tempo programmato si spegne io ho provato cosi ma non funziona.SI accende solo ma non si spegne. Come devo fare?

void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW

SE il codice è tutto li ... mi sembra anche normale che NON lo vedi spegnere ...

... sei dentro al loop(), quindi il ciclo si ripete in continuazione. Lo accendi, aspetti 1 secondo, lo spegni e ... un istante (... parliamo di microsecondi) dopo ricomincia il loop() e lo riaccendi !!! Come pretendi di vederlo spento ? :smiley:

Guglielmo

P.S.: Articolo 7 del regolamento ... il codice DEVE essere racchiuso tra i tag CODE, quelli che inserisce il bottone </> (tutto a sinistra) quando sei in edit.

come potrei fare per uscire magari dal loop e poi richiamarlo quando serve?

NON puoi uscire dal loop() ... devi implementare una logica che, memorizzando lo stato del LED (... e quindi sapendo quando è acceso e quando è spento) si comporta di conseguenza.

Inoltre evita di usare la delay(), che è un'istruzione "bloccante" (... ovvero, per il tempo di delay() il programma è totalmente fermo) e che spesso non è utilizzabile in applicazioni in cui, nello stesso tempo, devi fare anche altre cose.

Studiati invece come si usa la millis() :wink: ... prima QUI, poi QUI ed infine leggi anche QUI e QUI ... vedrai che ti sarà tutto più chiaro :slight_smile:

Guglielmo

OK grazie mille :slight_smile: :slight_smile: :slight_smile: , prova a seguire queste guide.

Prova banalmente a fare questo codice:

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

dovresti vederlo accendere per 1 secondo, spegnere per un altro etc..

Aggiungi una parentesi graffa chiusa alla fine però :D.

FRank96:
Praticamente io con Arduino yun, mando il comando di accensione del pin 13 il led si accende e poi dopo un po di tempo programmato si spegne

Ma nessuno si è chiesto .... ma sto comando dovè? chi lo da?

@Ulixxes gli hai dato un led lampeggiante e basta :o

Beh, la domanda era come sul perchè il led non si spegne e quindi ho messo uno sketch che appunto "banalmente" lo fa.. se c'è bisogno di più, basta chiedere!

Già già..dimenticato chiudere le graffe.. complice il copia ed incolla! Corretto

PS. in effetti un arduino yun per accendere un led è un pelo esagerato! :grin: :grin:

Si, è vero lo spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
poi si spegne,
poi lo riaccende,
:slight_smile: :slight_smile: :slight_smile: :slight_smile:

Non solo..
lo spegne ancora ed accende
e spegne ed accende..
e spegne ed accende..
e spegne ed accende..
e spegne ed accende..
e spegne ed accende..
....