Forum
>>
Principianti
>>
input in loop e porta GPIO
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da trescon |
2016-09-04 22:08:55 - input in loop e porta GPIO
|
Buonasera , ed eccomi a chiedere ancora il vostro aiuto.
Devo fare un programmino che abbia un input in loop e che mi accenda un led sulla GPIO. I problemi sono , che comando usare per gestire l'input all'infinito... In base al dato inserito nell'input io dovrei accedere o spegnere dei led sulla gpio(la quale cosa funziona); il problema è che quando viene eseguito il codice all'interno dell'if il led si accende, quando finisce l'esecuzione il led si spegne anche se non c'è nessuna istruzione che lo spegne. from gpiozero import LED from time import sleep a=10000 i=0 def Led5_on(): red = LED(5) red.on() sleep(2) # l'ho messo perchè pensavo che potesse servire ma non cambia nulla def Led5_off(): red = LED(5) red.off() for a in range (0,a): i=eval(input ("inserisci 1/2 : ")) if i== 1: Led5_on() else : i== 2 Led5_off() Allego il codice , anche se è una boiata. Grazie ------
Alberto |
|
Scritto da Daniele aka Palmux |
2016-09-05 02:09:35 - Re: input in loop e porta GPIO
|
Un programmino che abbia in input il loop mi sfugge, cosa vuoi fare esattamente?
Torno a chiederti che vuoi fare, lasciare accesa la luce all'infinito finché non "killi" il processo? Ti basta poco, anche un semplice: >>> while True: [...]
Non ho mai usato quella libreria, ma credo proprio che quel red.off() spenga il tuo led, non credi anche tu? Ti lascio un semplice programmino, molto più semplice da capire: import RPi.GPIO as GPIO import time ### Setup iniziale ### GPIO.setmode(GPIO.BCM) PIN = 7 ### Ma scegli quello che ti piace di più ### GPIO.setwarnings(False) ### Serve solo per non stampare i warning a schermo, un po' li odio lo confesso ### GPIO.setup(PIN,GPIO.OUT) ### Accendi e spegni la lucetta finché non spari allo script ### while True: GPIO.output(PIN,True) time.sleep(1) GPIO.output(PIN,False) time.sleep(1)Questo script, buono per i fari e le ambulanze, lo trovo molto più intuitivo, che ne pensi? Cya |
|
Scritto da trescon |
2016-09-05 08:46:46 - Re: input in loop e porta GPIO
|
Grazie Daniele per la tua risposta completa di esempio che studierò di sicuro.
Per tornare alla mia domanda i comandi Red.on() e Red.off() funzionano egregiamente. (per spiegarti io ho una scheda di test innestata sulla Gpio del mio Raspy 3 dotata di protezione per le porte e di basetta sperimentale, è montato li il lede che si accende regolare.... L'unico problema è che come si accende si spegne, nel senso che se non metto uno sleep() dopo il comando Red.on() mi si spegne subito. Ecco io vorrei che la porta Gpio restasse a livello logico 1 finché non la spengo io.... È questo non succede) E poi il mio programmino non mi resta in loop per sempre in attesa della pressione di un tasto, ho messo un for con variabile a 10000 ma io vorrei che il programma giri all'infinito finché non lo killo io. Spero di averti chiarito il mio problemino. Grazie ancora ------
Alberto |
|
Scritto da trescon |
2016-09-05 08:50:15 - Re: input in loop e porta GPIO
|
Per completezza di informazione, quella libreria che tu non conosci (ci può stare sicuramente) è quella indicata nelle istruzioni della basetta sperimentale che ti dicevo.
Ecco , solo per chiarire Grazie ------
Alberto |
|
Scritto da Daniele aka Palmux |
2016-09-05 10:21:12 - Re: input in loop e porta GPIO
|
Ok, mi ritengo ufficialmente incuriosito.
Cos'è una basetta sperimentale, ti riferisci ad una breadboard evoluta? E cosa fa di particolare e diverso rispetto ad una tradizionale, libreria a parte? Cya UPDATE: Ok, bastava andare su wikipedia per sapere che basetta sperimentale è un sinonimo di breadboard, grazie cm. --- Ultima modifica di Daniele aka Palmux in data 2016-09-05 10:32:26 --- |
|
Scritto da trescon |
2016-09-05 12:01:42 - Re: input in loop e porta GPIO
|
------
Alberto |
|
Scritto da trescon |
2016-09-10 15:19:16 - Re: input in loop e porta GPIO
|
Partendo dal tuo script di esempio ho pensato di "scomporlo" ma ..... non va un cavolo (non segnala neppure errori però).
Lo posto cosi possiate darmi una dritta sugli errori fatti: import RPi.GPIO as GPIO import time ### Setup iniziale ### GPIO.setmode(GPIO.BCM) PIN5 = 5 ### Ma scegli quello che ti piace di più ### PIN6 = 6 PIN7 = 7 PIN8 = 8 GPIO.setwarnings(False) ### Serve solo per non stampare i warning a schermo, un po' li odio lo confesso ### GPIO.setup(PIN5,GPIO.OUT) GPIO.setup(PIN6,GPIO.OUT) GPIO.setup(PIN7,GPIO.OUT) GPIO.setup(PIN8,GPIO.OUT) def led5_on(): GPIO.output(PIN5,True) time.sleep(1) def led6_on(): GPIO.output(PIN6,True) time.sleep(1) def led7_on(): GPIO.output(PIN7,True) time.sleep(1) def led8_on(): GPIO.output(PIN8,True) time.sleep(1) def led5_off(): GPIO.output(PIN5,False) time.sleep(1) def led6_off(): GPIO.output(PIN6,False) time.sleep(1) def led7_off(): GPIO.output(PIN7,False) time.sleep(1) def led8_off(): GPIO.output(PIN8,False) time.sleep(1) ### Accendi e spegni la lucetta finché non spari allo script ### while True: led5_on led6_on led5_off led6_off Grazie Alberto ------
Alberto |
|
Scritto da Claudio_F |
2016-09-10 18:53:10 - Re: input in loop e porta GPIO
|
Le funzioni vanno chiamate
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione *** |
|
Scritto da trescon |
2016-09-11 16:19:56 - Re: input in loop e porta GPIO
|
Per un punto Martin perse la capa , per due parentesi Alberto perse la pazienza....
Grazie Claudio_F ------
Alberto |
Pagina: 1
Esegui il login per scrivere una risposta.