• 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
esterno bottone software pulsante

[Problema] bottone esterno pulsante software
#1
Salve a tutti vorrei realizzare un semplice programma Python per Raspberry pi4 con Raspbian che accendesse un led alla pressione di un tasto fisico connesso al GPIO, e che però accendesse lo stesso led anche via software presentando una piccola interfaccia con un bottone.
Quindi il LED dovrebbe essere pilotato sia con il pulsante esterno che con quello software.
Potrei avere qualche spunto di programmazione in quanto sono digiuno di Python e l'ultimo strumento di programmazione che ho utilizzato è Visual Basic 6.
Grazie
Risposta
#2
Cerca qualche esempio in node-red.
https://youtu.be/4kNZWF0BJko
https://nodered.org/docs/faq/interacting-with-pi-gpio
https://www.microninja.me/risorse/il-tuo...io-inizia/
Saluti,
Fabrizio
Risposta
#3
Con Python, invece, usando la libreria gpiozero è abbastanza banale la parte di comando da pulsante fisico.
Esempio:
Codice:
from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(3)

button.when_pressed = led.on button.when_released = led.off

pause()
Per la parte da comandare via interfaccia,dipende da come fai l'interfaccia (web, tkinter, Qt ecc)

Inviato dal mio Redmi Note 8 utilizzando Tapatalk
Risposta
#4
Grazie Zzed ho gia raggiunto questo risultato riesco a pilotare il led sia con il pulsante fisico che con quello software
ma in due programmi separati, io non riesco ad unire le due cose in un unico programma.

(18/07/2020, 18:06)fabrizior Ha scritto: Cerca qualche esempio in node-red.
https://youtu.be/4kNZWF0BJko
https://nodered.org/docs/faq/interacting-with-pi-gpio
https://www.microninja.me/risorse/il-tuo...io-inizia/

Grazie fabrizior dovrei studiarmi il software da te proposto molto interessante ma forse traduce il progetto il un file Python?
Scusate forse la domanda è pò fuori tema.

Ho provato a fare cosi ma non funziona
codice:
Codice:
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setwarnings(False)
from tkinter import *  # Python 3
class Test:
   def __init__(self,parent):
   
class App:

   def __init__(self, master):
       frame = Frame(master)
       frame.pack()

       self.button = Button(frame, text="Esci", fg="red", command=master.destroy)
       self.button.pack(side=LEFT)

       self.hi_there = Button(frame, text="ON", command=self.say_hi)
       self.hi_there.pack(side=LEFT)

       self.hi_there = Button(frame, text="OFF", command=self.say_hi2)
       self.hi_there.pack(side=LEFT)

   def say_hi(self):
       print("accendo led")
       GPIO.output(17,GPIO.HIGH)
       
   def say_hi2(self):
       print("spengo led")
       GPIO.output(17,GPIO.LOW)
       
if GPIO.input(25): # if port 25 == 1
                                                                   #QUI tento di rilevare lo stato del bottone esterno perchè credo che il                                                       
                                                                   #programma  venga ripetuto ciclicamente ma è non è cosi.
               print ("LED ON")
               GPIO.output(17, 1)         # set port/pin value to 1/HIGH/True
               sleep(0.5)
else:
               print ("LED OFF")
               GPIO.output(17, 0)         # set port/pin value to 0/LOW/False
               sleep(0.5)  




root = Tk()
app = App(root)        
root.mainloop()
Risposta
#5
Dai, rpi.gpio nel 2020 non ha più senso usarlo
All'inizio importi time e anche sleep da time, credo ti serva solo quest'ultima..
Su tk non mi pronuncio perché non lo ho mai usato.
Se hai due programmi separati, hai provato a lanciarli insieme?

Io userei gpiozero (che usa internamente rpi.gpio, ma in modo più semplice e elegante) e guizero (che usa internamente tkinter, ma in modo più semplice e elegante) ..


Inviato dal mio Redmi Note 8 utilizzando Tapatalk
Risposta
#6
capisco..figurati che se fosse per me per programmare  utilizzerei ancora QuickBasic7!
comunque, si potrei lanciare i due programmi ma poi visto che intendo creare una interfaccia grafica
con 2 pulsanti  sarebbe piu comodo avere un solo programma dove cliccando sui pulsanti si pilota l'uscita
con il programma ma anche da un ingresso esterno.
Risposta
  


Vai al forum:


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