• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
timer luci

Timer Luci
#21
Secondo me un forum non serve né per insegnare, né per avere soluzioni già pronte.. ma per discutere insieme di una passione comune. Quindi con una buona via di mezzo e del buonsenso, tutti si migliora, aiutandosi a vicenda.

Trovo affascinante la programmazione perché dato un problema, ti obbliga a scomporlo in vari passaggi logici, per fare in modo che la macchina lo possa comprendere e risolvere. Questa azione di scomposizione, di semplificazione, dopo un po', viene automatica, anche nei processi che non riguardano strettamente la programmazione. Ti ritrovi a pensare "se dovessi farlo fare a un computer, che percorso logico seguirei per scrivere un programma?". In altre parole, cominci a pensare da informatico. Ma questo modo di pensare può essere utilissimo anche nella vita di tutti i giorni, dove un problema intricato pare insormontabile, e avere la mente allenata a scomporlo in una serie di processi logici semplici, aiuta a vederlo da una prospettiva diversa (quella di uno stupido computer) e aiuta a risolverlo. Per questo dovrebbero insegnare a programmare in tutte le scuole.
Dopo tutta questa inutile premessa, vorrei riprendere il "buonsenso" citato più in su. Sono partito suggerendo un codice per scopo didattico, ma vedo che ci si sta "infangando", quindi forse è meglio fare un bel RESETTONE generale, che ne dite? ricominciamo:
Ci troviamo a dover programmare su un crono-calendario degli eventi (schedulare, tecnicamente).
Possibile che nessuno prima di noi abbia avuto tale esigenza? No, è una esigenza abbastanza comune. Come hanno risolto?
a) uno dei metodi più comuni è fare una chiamata ai comandi si sistema e usare crontab. Ma non è una soluzione che mi piace: funzionerebbe solo su Linux e si perderebbe la proprietà multipiattaforma tipica di Python. E' comunque percorribile, visto che già si deve usare una libreria specifica per Raspberry per comandare i GPIO, ma diciamo che è una soluzione che per motivi "stilistici" lascerei per utlima: se sto programmando in Python, preferirei fare tutto in Python.
b) usare una libreria esterna. Uno degli enormi vantaggi di Python è che esistono librerie che ti consentono di fare in modo semplice dei compiti che altrimenti sarebbero complicati/lunghi/noiosi. Per schedulare delle operazioni ho trovato un paio di librerie:
- sched (libreria già presente di serie) scritta dall' autore di Python, e quindi abbastanza macchinosa da usare (anche le varie risorse in rete non fanno altro che riportare pari pari l'esempio di codice ufficiale)
-schedule (libreria esterna) che sembra molto più comoda e pratica da usare. vediamo come:

innanzitutto installiamola, da terminale digitare:
Codice:
sudo pip install schedule

ecco invece il codice pyhton

#!/usr/bin/python

#importo le librerie
import schedule,time,gpiozero

#impostazioni
led = LED(24) # numero di pin GPIO in uso
ora_on = "19:30" # orario di accensione
ora_off = "07:30" # orario di spegnimento

#definisco le funzioni
def accendi():
led.on() #accendi il led. usare led.off() se serve funzionamento opposto
def spegni():
led.off() #spegni il led. usare led.on() se serve funzionamento opposto

# schedulo quando eseguire le funzioni
schedule.every().day.at(ora_on).do(accendi)
schedule.every().day.at(ora_off).do(spegni)

#esempi schedulazione
# schedule.every(15).minutes.do(funzione)
# schedule.every().hour.do(funzione)
# schedule.every().monday.do(funzione)
# schedule.every().wednesday.at("12:44").do(funzione)

# ciclo
while True:
schedule.run_pending()
time.sleep(55)
Risposta
#22
Ringrazio Zzed per la consueta disponibilità e per avermi "ricondotto" nell'alveo della discussione.
Non sapevo/ero documentato abbastanza e non conoscevo questa libreria, questa sera proverò a mettere in pratica quanto suggerito.
Grazie ancora.

Inviato dal mio SM-N910F utilizzando Tapatalk
Saluti
GP

Smile
Risposta
#23
Salve volevo sapere, senza fare troppi giri di parole,come faccio a far accendere un relè in un determinato orario, tramite linguaggiopython?

Grazie mille Huh
Risposta
#24
Beh, almeno una ricerchina con google andrebbe fatta...

per l'orario, se per te è uguale, puoi comandare tutto da crontab.
prepari due script, uno accendere e uno per spegnere. Poi imposti il crontab per lanciarli agli orari che ti servono.



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#25
Con il comando crontab posso dare sulla stessa riga di comando ora di accensione e spegnmento?
Risposta
#26
No, darai più righe. Una per ogni singolo comando di accensione e di spegnimento

Inviato con Tapatalk col mio Honor4X



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#27
Ho unito la discussione con una preesistente. Rileggila. Come vedi, si può anche fare tutto con Python, anche senza crobtab (più versatile, forse)
Risposta
#28
Ci sei già dentro Smile

Inviato con Tapatalk col mio Honor4X



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#29
Il mio problema consiste nel programmare giornalmente...l orario di accensione e spegnimento led, con il programma che viene esposto, devo ogni volta entrare all interno del programma stesso per immettere l'orario? Grazie gentilissimo Zzed
Risposta
#30
Assolutamente no, schedule every day significa "ogni giorno".
Con quella libreria puoi fare anche ogni ora, ogni lunedì, ogni martedì alle 13:00 ecc ecc.
Risposta
  


Vai al forum:


Navigazione: 4 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect