mlsscnvs Inserito: 3 gennaio 2020 Segnala Inserito: 3 gennaio 2020 (modificato) Salve a tutti, mi chiamo Melissa e spero vivamente di riuscire a trovare un'aiuto in questo forum. Praticamente devo realizzare un progetto con arduino in cui si verifica l'accensione di 4 Led comandati da due pulsanti uno di marcia (che fa partire tutto il circuito) e l'altro di stop che dunque va ad interrompere il circuito. Vi sono presenti, inoltre, un potenziometro che ha il compito di gestire la velocità dei led ed uno switch che ha il compito di invertitre il segnale di marcia dei led ( se prima andavano da sinistra a destra ora devono andare da destra a sinistra) Allego il progetto usato tramite il software "tinkercad". Spero vivamente che qualcuno riesca ad aiutarmi possibilmente senza variare i valori delle resistenze. Modificato: 3 gennaio 2020 da Livio Orsini tolti links
Livio Orsini Inserita: 3 gennaio 2020 Segnala Inserita: 3 gennaio 2020 Prima cosa i 2 links ch hai inserito dove portano? Richiedono un indirizzo mail e questo è in contrasto con la politica del forum.Se vuoi inserire un tuo file devi usare o olo spazio di upload del forum, oppure metterlo in un sito di hosting che non richieda registrazioni. Il tuo è un progetto didattico per una scuola? Comunque sia io sono contrario a dare soluzioni belle e pronte, ma sono dispostissimo ad aiutare per trovare la soluzione. Vediamo per prima cosa se ho capito bene il problema Ci sono 4 LED che devono accendersi in sequenza ciclica. Un potenziometro determina la velocità con cui questi LEDs effettuano la sequenza di accensione. Il senso della sequenza basso ---> alto o alto ---> basso è determinato dalla posizione di uno switch. La sequenza ha inizio con il riconoscimento della pressione del pulsante "Marcia" e termina con il riconoscimento della pressione del tasto "Arresto". Ho interpretato correttamente? Poi cosa c'è che non funziona? Non fa la sequenza corretta? non effettua l'inversione? non riconosce i comandi? Oppure non funziona alcunchè? 28 minuti fa, mlsscnvs ha scritto: possibilmente senza variare i valori delle resistenze. C'è un valore minimo di ressitenza al di sotto del quale non si può scendere perchè si danneggerebbe la porta di arduino(o il LEDs); c'è anche un valore massimo di resistenza al di sopra del quale la luminosità del LED diventa insufficiente. Se le tue resistenze sono conprese tra questi 2 valori, non c'è ragione di variarle; comunque non penso che sia questo la causa del non funzionamento
mlsscnvs Inserita: 3 gennaio 2020 Autore Segnala Inserita: 3 gennaio 2020 6 ore fa, Livio Orsini ha scritto: Prima cosa i 2 links ch hai inserito dove portano? Richiedono un indirizzo mail e questo è in contrasto con la politica del forum.Se vuoi inserire un tuo file devi usare o olo spazio di upload del forum, oppure metterlo in un sito di hosting che non richieda registrazioni................ ....................................... ....................................... C'è un valore minimo di ressitenza al di sotto del quale non si può scendere perchè si danneggerebbe la porta di arduino(o il LEDs); c'è anche un valore massimo di resistenza al di sopra del quale la luminosità del LED diventa insufficiente. Se le tue resistenze sono conprese tra questi 2 valori, non c'è ragione di variarle; comunque non penso che sia questo la causa del non funzionamento il link doveva portare al progetto su un sito che uso per testare se funziona o meno senza montare ogni volta l'arduino. L'oggetto l'ha interpretato correttamente. Il problema iniziale è che quando premo il pulsante MARCIA si avviano in sequenza il led 4 poi il 3 e di nuovo il 4 poi il ciclo parte dall' 1,2,3,4 come giusto che sia solo che al raggiungimento di quest'ultimo si inverte il senso di marcia senza l'utilizzo dello switch e se provo a premerlo non accade nulla dunque l'arduino non legge lo switch Non riesco a capire dove possa aver sbagliato nel programma: #define switch 5 #define buttom_s 6 #define buttom_m 7 #define led1 10 #define led2 11 #define led3 12 #define led4 13 bool ciclo=0; bool puls_m=0; bool puls_s=0; bool marcia=0; int counter=0; int I=0; void setup() { pinMode(switch,INPUT); pinMode(buttom_s,INPUT); pinMode(buttom_m,INPUT); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(led3,OUTPUT); pinMode(led4,OUTPUT); } void loop() { I=analogRead(A0); I=1*I; puls_m = digitalRead(buttom_m); puls_s = digitalRead(buttom_s); marcia= digitalRead(buttom_m); if ((puls_m==1)&&(puls_s==0)) { ciclo=1 ; } if (puls_s) { ciclo=0 ; } if (ciclo) { if (counter==0) { digitalWrite (led1,HIGH); digitalWrite (led2,LOW); digitalWrite (led3,LOW); digitalWrite (led4,LOW); if (marcia) { counter= counter+1; } else { counter= 3; } delay(I); } else { if (counter==1) { digitalWrite (led1,LOW); digitalWrite (led2,HIGH); digitalWrite (led3,LOW); digitalWrite (led4,LOW); if (marcia) { counter=counter+1; } else { counter= counter-1; } delay(I); } else { if (counter==2) { digitalWrite (led1,LOW); digitalWrite (led2,LOW); digitalWrite (led3,HIGH); digitalWrite (led4,LOW); if (marcia) { counter= counter+1; } else { counter =counter-1; } delay(I); } else { if (counter==3) { digitalWrite (led1,LOW); digitalWrite (led2,LOW); digitalWrite (led3,LOW); digitalWrite (led4,HIGH); if (marcia) { counter= 0; } else { counter= counter-1; } delay(I); } } } } } else { digitalWrite (led1,LOW); digitalWrite (led2,LOW); digitalWrite (led3,LOW); digitalWrite (led4,LOW); } delay(50); } Inserisco la foto del circuito.
Lorenzo-53 Inserita: 4 gennaio 2020 Segnala Inserita: 4 gennaio 2020 Il comune dello switch non sembra collegato, hai anche lo schema?
Livio Orsini Inserita: 4 gennaio 2020 Segnala Inserita: 4 gennaio 2020 Per prima cosa un nota operativa, per inserire il codice c'è il tasto apposito quello con l'icona "<>", così riporti il codice in modo più ordinato, come nell'editor di arduino, e si comnprende meglio. Io ti consilglio di usare il monotor di seriale per tracciare l'evoluzione del programma. Metti dei messaggi in punti in cui il programam deve passare per effettuare le operazioni, così verifichi se passa o non passa correttamente. Per acendere i LEDs io ti consiglio di usare uno "switch" in funzione dello stato del contatore e per invertire il movimento invertire il conteggio da incrementa a decrementa e viceversa. poi non vedo filtraggio (debouncing) dei pulsanti e switch, questo potrebbe provocare dei falsi. Ti consiglierei anche di suddividere il programma con alcune sottofunzioni sopecifiche, in questo modo viengono più facilie sia il debugging, sia le medifiche.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora