Progetto arduino stile gioco a premi...Impossibile?

Buongiorno a tutti , essendo nuova del mondo Arduino , e essendo presa in giro da persone che ne sanno più di me, volevo chiedervi conferma di una cosa:

é possibile ricavare uno sketch completo solo guardando le foto che posterò sul progetto che vorrei ottenere?

progetto :

premendo il pulsante centrale si azionano i 4 led gialli in sequenza.
Gli altri due pulsanti servirebbero per verifica: nel senso che se si preme uno dei due pulsanti laterali prima che la sequenza termini si accende il led verde, mentre se si premono sempre i citati pulsanti laterali dopo che termina la sequenza dei led gialli si accende un led rosso.

Esiste qualche persona che riesca a realizzare il listato su sketch?
Mi dicono che è possibile...

Ringrazio a chi voglia illuminarmi

Buona sera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO … Grazie. :slight_smile:

Si che è possibile (3 pulsanti e 4 LED), ma dato che non scriviamo codice per conto terzi, direi che devi iniziare prima TU a scrivere qualcosa, e poi se non riesci, ti si può dare una mano (devi postare anche il TUO codice).

Ma per prima cosa presentati dove fab ti ha indicato, grazie. Fino a quel momento nessuno potrà aiutarti quindi sbrigati :smiley:

Ringrazio infinitamente per il supporto riguardo le regole ! Mi presento immediatamente nel link proposto.

ok Fatto :slight_smile:

docdoc purtroppo non sono pratica di codice momentaneamente :frowning: , chiedo perdono....

Sarebbe stato interessante un aiuto riguardo la compilazione del codice, così lo avrei sperimentato sul progettino cui ho inviato foto. Ma se ciò non fosse possibile non ci sono problemi, dico davvero..

DionisiaBot:
Ringrazio infinitamente per il supporto riguardo le regole ! Mi presento immediatamente nel link proposto.

... e leggi attentamente il punto 16.1 :smiley:

Guglielmo

... letta la tua presentazione, oltre ai link consigliati nel suddetto punto 16.1, ti suggerisco anche QUESTO libro :slight_smile:

Guglielmo

Grazie tantissimo Guglielmo! :slight_smile: , sarà fatto! Dove posso momentaneamente trovare il codice magari un po pronto per provarlo subitaneamente? Se fosse possibile? :frowning:

Cercando su "Google" degli esempi e dei programmini già fatti li trovi, ma ... senza studiare le basi, dubito che ci farai molto ::slight_smile:

Dai retta, spendi un po' di tempo a studiare quei link, comincia a fere delle cose molto più semplice, guarda gli esempi che trovi nell'IDE e, solo dopo, riavvicinati al tuo programma :slight_smile:

Guglielmo

intanto ho ordinato su amazon il libro da te suggerito Guglielmo, sembra ben fatto!
No su google quello che voglio realizzare su sketch non esiste purtroppo in quanto mi hanno detto che non è fattibile ... :frowning:

Seguirò tutti i tuoi suggerimenti..

Mi viene in mente una possibile soluzione di poche righe, che prevede di usare la funzione millis() come contatore di tempo per accendere i led in sequenza e permettere la pressione dei pulsanti, e l’uso di due array.

Il problema che spiegare, farti capire il funzionamento di queste cose come primo programma sarebbe impossibile :wink:

Molti hanno iniziato con arduino senza sapere niente di elettronica e di programmazione ottenendo alla fine
buoni risultati, ma spesso hanno iniziato con il fare lampeggiare un len, forse dovresti fare anche tu cosi e in breve tempo avrai le conoscenze base “questo certamente puoi starne certa” :slight_smile:

premetto che il progetto iniziale doveva comportarsi in questo modo :
"progetto :

premendo il pulsante centrale si azionano i 4 led gialli in sequenza.
Gli altri due pulsanti servirebbero per verifica: nel senso che se si preme uno dei due pulsanti laterali prima che la sequenza termini si accende il led verde, mentre se si premono sempre i citati pulsanti laterali dopo che termina la sequenza dei led gialli si accende un led rosso."

ecco le prove fino ad ora effettuate:

const int LED1[]={ 9, 10, 11 };
const int P1=2;
const int debaunceDelay=50;
int pinCount=3;
int Accendi = 0; 

void setup() {
 for (int thisPin = 0; thisPin < pinCount; thisPin++)  {
  pinMode(LED1[thisPin], OUTPUT);      
}
pinMode(P1, INPUT);
}

void loop() {

int valore = digitalRead(P1);

for (int thisPin = 0; thisPin < pinCount; thisPin++) {

if (valore == LOW) 
{     
 if (Accendi == 0)
 {
   Accendi=1; 
   digitalWrite (LED1[thisPin], HIGH);    
 }
 else 
 {
   Accendi=0;
   digitalWrite (LED1[thisPin], LOW);
 }  
} 
}
while (digitalRead(P1) == LOW)
{
 delay(10);
}

delay(debaunceDelay);

}/

risultato:
Premendo il tasto centrale si azionano sequenzialmente ed in alternanza i led rossi e un led verde centrale, mentre tasto dx e tasto sx non succede niente.

SECONDA PROVA

const byte LED1[]={ 9, 10, 11 };
const int P1=2;
const int debaunceDelay=100;
byte stato=1;  


void setup() {
pinMode(LED1[0], OUTPUT);
pinMode(LED1[1], OUTPUT);
pinMode(LED1[2], OUTPUT);      
pinMode(P1, INPUT);
}

void loop() {

if(digitalRead(P1))

{

  if(stato<3) stato=stato+1;

  else stato=1;

}
   
switch(stato)
{ case 1: 
  digitalWrite(LED1[0],HIGH);
  digitalWrite(LED1[1],LOW);
  digitalWrite(LED1[2],LOW);
  break;
case 2: 
  digitalWrite(LED1[0],LOW);
  digitalWrite(LED1[1],HIGH);
  digitalWrite(LED1[2],LOW);
  break;
case 3: 
  digitalWrite(LED1[0],LOW);
  digitalWrite(LED1[1],LOW);
  digitalWrite(LED1[2],HIGH);
  break;
}  

while (digitalRead(P1) == LOW)
{
  delay(10);
}

delay(debaunceDelay);

}/

Risultato:

Appena caricato lo sketck senza che venga prenuto nessuno dei tre pulsanti ( dalle foto di cui sopra che ho postato all’inizio) le tre luci gialle ( stranamente la luce gialla numero 4 non si aziona) lampeggiano in modo sequenziale, agendo sui tre pulsanti non succede nulla.

Cosa mi suggerite per perfezionare il mio progetto originale?

>DionisiaBot: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

Grazie , gentile come sempre Guglielmo, ho inserito bene i </>
?

No.
Devi mettere all'inizio di ogni scatch un aperta quadra code chiusa quadra. Mentre alla finendi ognuno un aperta quadra slash (barra del 7) code chiusa quadra.

Comunque hai già caputo gli array? Grande! Non ho letto lo scatch, poi guardo

Pensavo che "accendere i led in sequenza" significasse che premendo un pulsante si accendono automaticamente in sequenza :slight_smile:

Mentre dal tuo codice è alla pressione del pulsante si accende un led diverso.

Puoi modificare il tuo secondo codice, quello che contiene lo switch(), semplicemente aggiungendo la lettura di due pulsanti e controllando che i led sono accesi o spesi.

    if(pulsante2==HIGH){

           if(digitalRead(LED1[0])==LOW || digitalRead(LED1[1])==LOW ||digitalRead(LED1[2])==LOW ){

                // || significa or, significa O      

               // se led1 è spento o se led2 è spento o se led3 è spento

               // spengo il led tutti accesi 
                    
               // ACCENDO LED CORRISPONDENTE led spento digitalWrite(led,HIGH);
                    
 
           }


    }


    if(pulsante3==HIGH){

        // && significa and  E in italiano
       
        if(digitalRead(LED1[0])==HIGH && digitalRead(LED1[1])==HIGH && igitalRead(LED1[3])==HIGH) 
       {
               // spengo led led spenti
               // accendo led led tutti accesi 
        }
    }

DionisiaBot:
Grazie , gentile come sempre Guglielmo, ho inserito bene i </> ?

NO … non devi inserite < e > … quelli sono i simboli che compaiono sul bottone … cortesemente leggi con attenzione il mio post #11 e correggi. Grazie.

Guglielmo

Fatto! Grazie ancora Guglielmo, mai trovata così tanta pazienza e professionalità in altri forum!

DionisiaBot:
Fatto! Grazie ancora Guglielmo, mai trovata così tanta pazienza e professionalità in altri forum!

Perfetto, tutto a posto ... ora però ... rispondi a torn24 :grin: :grin: :grin:

Guglielmo

torn24

Grazie del tuo suggerimento :slight_smile:

il progetto iniziale, col codice che ho postato e che vorrei ottenere è questo :

premendo il pulsante centrale si azionano i 4 led gialli in sequenza.
Gli altri due pulsanti servirebbero per verifica: nel senso che se si preme uno dei due pulsanti laterali prima che la sequenza termini si accende il led verde, mentre se si premono sempre i citati pulsanti laterali dopo che termina la sequenza dei led gialli si accende un led rosso."

Se ho capito premi un pulsante e si accendono i led in successione, cioè, premo e si accende il primo led, premo di nuovo e si accende anche il secondo e poi il terzo. Esatto ?

Poi premendo uno qualsiasi dei due pulsanti, o uno o l'altro, accende e spegne un le specifico? Esatto?

Se è cosi occorrono solo poche modifiche al tuo switch(), e all'esempio che ti ho postato. Però dimmi se ho capito bene :slight_smile: