if ( digitalRead(2)==HIGH && digitalRead(4)==HIGH){
// se la lettura del due E la lettura del 4 è alto fai quello dentro alla graffa
digitalWrite(3,HIGH);
}
else{ //altrimenti(se il 2 OPPURE il 4 è basso fai questo dentro la graffa
digitalWrite(3,LOW)
}
La vita è troppo breve per bere vini mediocri
peppix1
postato il: 23.01.2021, alle ore 02:00
salve, ho risolto, in effetti avevo fatto un po confusione anche nel sviluppare il prgramma, ora per non aprire un altro tread posto il codice e spiego quello che voglio fare cosi da vedere se ho fatto bene.
in pratica sto provando a realizzare un piccolo antifurto.
ad accensione della scheda lui verifica il pin 2 se questo e basso mi da il pin 3 alto per 3 minuti metre il pin dovrebbe lampeggiare ogni 300 millisecondi, ma non so se lo fara, poiche e notte e on ho arduino con me.credo fara un solo lampeggio e si fermera giusto??
Poi se potete volevo essere spiegato una cosa. come potrei fare in modo che dopo 3 minuti se lui rivela ancora il pin 2 basso continui a continuare il ciclo? finche poi non tolgo l alimentazione?
gironico
postato il: 23.01.2021, alle ore 10:02
no, scritto cosi non lo farà e non credo che ti compilerà e ti spiego perchè:
troppe graffe e un ; dopo la graffa della condizione if
Prima di procedere, leggiti bene la sintassi, perchè altrimenti non puoi andare avanti.
Quando richiami l'istruzione delay il micro si ferma per i millesecondi che te inserisci. fino a che il conteggio non ha finito, lui non fà altro. Per come lo hai scritto il pin 3 va a livello logico basso solo se:
Quando il pin 2 è basso, il pin 3 lo fai andare alto.... passati 3 minuti si spegne, e il pin 4 lampeggia una sola volta ogni tre minuti a patto che il pin 2 rimane basso.
Per quello che vuoi fare te, con correzione delle graffe del codice, ti suggerisco di dare un occhiata alla funzione Millis() per tenere conto del tempo senza fermare il codice. Prova a capire come funziona, poi ne riparliamo.
intanto, per farti capire come funziona le graffe correttamente, guarda questo codice, ma ripeto, al momento il led non lampeggiarà come vuoi te, ma una sola volta ogni 3 minuti.... poi per farlo si passa ad i millis
void loop()
{
if(digitalRead(2)== LOW){
digitalWrite(3, HIGH);
delay(180000);// qui ti si blocca per 3 minuti, poi fa il resto fino alla graffa che chiude la condizione IF
digitalWrite(3, LOW);
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito