Pilotare un relé

ciao a tutti premetto sono alle prime armi...quello che volevo fare e' scrivere un programma per prendere confidenza con la programmazione di arduino... vi faccio vedere

const int armato = 2;     // in armato
const int telon =  4;      // out tel.

// variables will change:
int armstate = 0;         // legge il pin 2,ora non e' niente

void setup() {
  
  pinMode(telon, OUTPUT);      
  
  pinMode(armato, INPUT);     
}

void loop(){
  // legge valore ingresso 2
  
  armstate = digitalRead(armato);
  
  for (int i = 0; i <= 1; i ++) {
  
  // controlla se armstate e' alto
  if (armstate == LOW) {         
    digitalWrite(telon, HIGH);
    delay(1000);
    digitalWrite(telon, LOW);
    delay(1000);   
  } 
  else {
    digitalWrite(telon, HIGH); 
  }}
}

quello che volevo fare e' ripetere una sola volta il ciclo che accende e spenge un rele' (chiamato telon)ho provato con il comando for ma niente lo fa all'infinito...sapete aiutarmi?Un grazie achi lo fa...

Se vuoi che il ramo dove telon va alto e torna basso dopo 1 secondo venga eseguito una sola volta, questo è un po' brutale, ma di sicuro effetto.
Una volta eseguito, qualunque valore prenda armstate, sicuramente non entri più, finchè non riporti la variabile == 0.

int ciclo=0

void loop(){
  // legge valore ingresso 2
 
  armstate = digitalRead(armato);
     
  // controlla se armstate e' alto
  if (armstate == LOW && ciclo == 0) {
    ciclo = 1;         
    digitalWrite(telon, HIGH);
    delay(1000);
    digitalWrite(telon, LOW);
  }
  else {
    digitalWrite(telon, HIGH);
  }
}

Ps.
Cambia il titolo del topic, un semplice "aiuto" non è ben visto dai grandi capi.
E poi, utilizza i tag code per inserire lo sketch nel post.

ok ti ringrazio ho visto il fatto e' che se non faccio cosi' non c'e' nessunoi che mi aiuta....ho provato a riscrivere il codice come scrivi te

const int armato = 2;     // in armato
const int telon =  4;   // out tel.
int ciclo=0

// variables will change:
int armstate = 0;         // legge il pin 2,ora non e' niente

void setup() {
  
  pinMode(telon, OUTPUT);      
  
  pinMode(armato, INPUT);     
}

void loop(){
  // legge valore ingresso 2
  
  armstate = digitalRead(armato);
  
  // controlla se armstate e' alto
  if (armstate == LOW && ciclo==0) {   ciclo=1;   
    digitalWrite(telon, HIGH);
    delay(1000);
    digitalWrite(telon, LOW);   
  } 
  else {
    digitalWrite(telon, HIGH); 
  }}

ma mi da questo errore:

allarme.ino.ino.ino:6: error: expected ',' or ';' before 'int'
allarme.ino.ino.ino: In function 'void loop()':
allarme.ino.ino.ino:18: error: 'armstate' was not declared in this scope

ciao
Rinnovo l'invito a usate i tag "code" fatto da Brado.
Entrando nel dettaglio:

allarme.ino.ino.ino:6: error: expected ',' or ';' before 'int'

qui l'ide di arduino ti dice: porco cane, alla riga 6 del programma allarme.ino.ino.ino mi sarei aspettato una virgola ',' o un punto e virgola ';'. Se quardi manca un punto e virgola dopo

int ciclo=0

poi

allarme.ino.ino.ino: In function 'void loop()':
allarme.ino.ino.ino:18: error: 'armstate' was not declared in this scope

Porco cane, c'e un errore all'interno della funzione 'void loop()'; l'errore è che 'armstate' non è stato dichiarato. In questo caso la causa dell'errore è la stessa di prima: senza il punto e virgola di prima non è riuscito a fare

int armstate = 0;         // legge il pin 2,ora non e' niente

Inoltre

il fatto e' che se non faccio cosi' non c'e' nessunoi che mi aiuta....

Non è vero. Stavolta ti ho aiutato, la prossima però farò finta di non vedere i tuoi post. :smiling_imp:

ciao
pippo72

edit: ti invito a presentarti e a leggere il regolamento

Non credo che il compilatore usi queste precise parole. :wink: :wink: :wink: :wink:

Ciao Uwe

:grinning: :grinning: :grinning:

Che versione dell'IDE usi e su quale sistema operativo?

Non è normale avere quella fila di estensioni .ino una dietro l'altra.

Ahahaha Grande Pippo !
Sarebbe bello avere il compilatore in "rozzo style". :wink:

francesco2474:
se non faccio cosi' non c'e' nessunoi che mi aiuta...

Solo per questa risposta dovrei cancellarti il thread.

Inoltre, non solo non hai ascoltato il suggerimento di cambiare il titolo ma neanche quello di includere il codice con gli appositi tag. Ma almeno l'hai letto il regolamento?

EDIT: ho sistemato io titolo e codice