Progetto Scuola!

Ciao a tutti, sono un diciannovenne che si sta cimentando nell'utilizzo del linguaggio di arduino e al seguente progetto sto trovando varie difficoltà. Mi rivolgo a voi esperti e spero siate disponibili nell'aiutarvi, ve ne sarò immensamente grato!

Allora, il programmino che sto sviluppando dovrebbe funzionare così:

  1. premo Pulsante 1 accende led1
  2. premo Pulsante 2 spegne led1 e accende led2 che rimane acceso per 5 secondi poi si spegne e riaccende led1
  3. premo Pulsante 3 che accende led3

Mi dareste una mano a sviluppare uno sketck?

Facci vedere quello che hai fatto e ti daremo una mano.

cyberhs:
Facci vedere quello che hai fatto e ti daremo una mano.

Mi sa tanto che non ha scritto nemmeno una riga :smiley:
Però almeno parte bene, con i piedi per terra e un progetto fattibile anche per un principiante.

cyberhs:
Facci vedere quello che hai fatto e ti daremo una mano.

Anche 2 o tre mani. :wink: :wink: :wink: :wink:
Ciao Uwe

  1. premo Pulsante 1 accende led1

Inizia con scrivere un programma che fa quello che descrivi al punto 1.
Quando il punto 1 è risolto, scrivi un altro programma identico e apporta le modifiche per fare quello che descrivi al punto 2, continua così per tutti i punti.

Posta il codice e i tuoi dubbi.

Ciao.

Maurogallo:
Ciao a tutti,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Ho sviluppato i primi due pulsanti ma non danno segno di funzionare!!

int M1=2;
int BP=3;
int EP=4;
int FC1=8;
int FC2=9;
int pulsante=10;
int SFC1=0;
int SFC2=0;
int Spulsante=0;

void setup() {
  pinMode(M1,OUTPUT);
  pinMode(BP,OUTPUT);
  pinMode(EP,OUTPUT);
  pinMode(FC1,INPUT);
  pinMode(FC2,INPUT);
}
    void loop() {
       int val1 = digitalRead(pulsante);
       int val2 = digitalRead(FC1);
       int val3 = digitalRead(FC2);
      
       
       if (val1 == HIGH);
       { 
         if (Spulsante == LOW);
         {
           Spulsante=HIGH;
           digitalWrite(M1,HIGH);
           
          } 
            digitalWrite(M1,LOW); }

           if (val2 == HIGH)
           { 
           if (SFC1 == LOW)
           {
           SFC1=HIGH;
           digitalWrite(M1,LOW);
           digitalWrite(BP,HIGH);
           delay(5000);
           digitalWrite(BP,LOW);
           digitalWrite(M1,HIGH);
} }

int val1 = digitalRead(pulsante)
pulsante non è dichiarato come input, quindi non avrà mai un valore high :wink:

Poi, Spulsante non lo riporti mai a LOW, quindi una volta attivato, non si attiva più.
Idem per SFC1.

PS.
Utilizza i tag (code) e (/code), con le parantesi quadre, per inserire gli sketch.

Perdonami ma non so cosa siano i 'code'!!!

Perdonami ma non so cosa siano i 'code'!!!

Tutto spiegato qui: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum
Servono a formattare il codice in modo che sia più comprensibile ad un programmatore.

Ciao.

Maurogallo:
Perdonami ma non so cosa siano i 'code'!!!

Fra tutto, questo era il PS.
Almeno un commento sull'aiuto dato ?

Brado:

Maurogallo:
Perdonami ma non so cosa siano i 'code'!!!

Fra tutto, questo era il PS.
Almeno un commento sull'aiuto dato ?

Sono i TAG che genera l' editore di questo Forum quando schiacci il bottone #.
Ciao Uwe

Ho inserito nello sketch anche la variabile pulsante... Ma quando accendo una volta non rifunziona piu!!

Brado:
int val1 = digitalRead(pulsante)
pulsante non è dichiarato come input, quindi non avrà mai un valore high :wink:

Poi, Spulsante non lo riporti mai a LOW, quindi una volta attivato, non si attiva più.
Idem per SFC1.

Leggi bene cosa ti ho scritto ieri.

Mh quindi alla fine dell'if dovrò inserire un Spulsante=HIGH???

caso mai low ...

Sono ancora io, e non sono ancora andato avanti col progetto sono arrivato a questo sketch senza risultati... arduino a cazzi sua :smiley:

int M1=2;
int BP=3;
int EP=4;
int FC1=8;
int FC2=9;
int pulsante=10;
int SFC1=0;
int SFC2=0;
int Spulsante=0;

void setup() {
 pinMode(M1,OUTPUT);
 pinMode(BP,OUTPUT);
 pinMode(EP,OUTPUT);
 pinMode(FC1,INPUT);
 pinMode(FC2,INPUT);
 pinMode(pulsante,INPUT);
 }
   void loop() {
      int val1 = digitalRead(pulsante);
      int val2 = digitalRead(FC1);
      int val3 = digitalRead(FC2);
     
if (val1 == HIGH);
      { 
        if (Spulsante=LOW);
        {
          digitalWrite(M1,LOW);
         } 
         Spulsante=HIGH;
          digitalWrite(M1,HIGH);
          Spulsante=LOW;
            }

          if (val2 == HIGH)
          { 
          if (SFC1 == LOW)
          {
          SFC1=HIGH;
          digitalWrite(M1,LOW);
          digitalWrite(BP,HIGH);
          delay(5000);
          digitalWrite(BP,LOW);
          digitalWrite(M1,HIGH);
          SFC1=LOW;
          }}}

ciao
ti riporto il consiglio di MauroTec:

Inizia con scrivere un programma che fa quello che descrivi al punto 1.
Quando il punto 1 è risolto, scrivi un altro programma identico e apporta le modifiche per fare quello che descrivi al punto 2, continua così per tutti i punti.

Già che ci sono ti consigli di fare una ricerca sul DEBOUNCE.

ciao
pippo72

Generalmente non faccio queste cose, ma in via del tutto eccezionale....
spero che ti possa essere di aiuto

Ad Usum Delphini

/*
1. premo Pulsante 1 accende led1
2. premo Pulsante 2 spegne led1 e accende led2 che rimane acceso per 5 secondi poi si spegne e riaccende led1
3. premo Pulsante 3 che accende led3
*/

//Ingressi digitali
int pulsante1 = 2;
int pulsante2 = 3;
int pulsante3 = 4;
int pulsante4 = 5;

//Uscite digitali
int led1 = 6;
int led2 = 7;
int led3 = 8;

//variabili 
int stato_precedente_pulsante1=0;
int stato_precedente_pulsante2=0;
int stato_precedente_pulsante3=0;

int stato_pulsante1=HIGH;
int stato_pulsante2=HIGH;
int stato_pulsante3=HIGH;


void setup() {
  pinMode(pulsante1, INPUT_PULLUP);      
  pinMode(pulsante2, INPUT_PULLUP);      
  pinMode(pulsante3, INPUT_PULLUP);    
  pinMode(pulsante4, INPUT_PULLUP);    
  pinMode(led1, OUTPUT);      
  pinMode(led2, OUTPUT);      
  pinMode(led3, OUTPUT);      
}

void loop()
{
  stato_pulsante1=digitalRead(pulsante1);
  stato_pulsante2=digitalRead(pulsante2);
  stato_pulsante3=digitalRead(pulsante3);

//gli ingressi dei pulsanti sono PULLUP = normarmente HIGH

//rilevamento fronte di discesa segnale pulsante1
if (stato_pulsante1==LOW && stato_precedente_pulsante1==LOW){
  stato_precedente_pulsante1=HIGH;
  digitalWrite(led1, HIGH);
  }

//rilevamento fronte di salita pulsante1
if (stato_pulsante1==HIGH && stato_precedente_pulsante1==HIGH){
    stato_precedente_pulsante1=LOW;
  }


//rilevamento fronte di discesa segnale pulsante2
if (stato_pulsante2==LOW && stato_precedente_pulsante2==LOW){
  stato_precedente_pulsante2=HIGH;
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  delay(5000);
  digitalWrite(led2, LOW);
  digitalWrite(led1, HIGH);
  }
//rilevamento fronte di salita pulsante2
if (stato_pulsante2==HIGH && stato_precedente_pulsante2==HIGH){
    stato_precedente_pulsante2=LOW;
  }

//rilevamento fronte di discesa segnale pulsante3
//gli ingressi dei pulsanti sono PULLUP = normarmente HIGH
if (stato_pulsante3==LOW && stato_precedente_pulsante3==LOW){
  stato_precedente_pulsante3=HIGH;
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  }
//rilevamento fronte di salita pulsante2
if (stato_pulsante3==HIGH && stato_precedente_pulsante3==HIGH){
    stato_precedente_pulsante3=LOW;
  }

// pulsante 4 spegne tutto
if (digitalRead(pulsante4)==LOW) {
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  
  }//end main Loop