Nuova sezione libri disponibile!

Implementiamo un subscriber con un interruttore

Ludovico Russo

lettura in 1 minuto

Ora utilizziamo un po' di pi√Ļ l'hardware! Configuriamo un pin di input per dare il segnale ad un led per accendersi. Il codice a questo punto √® molto semplice. Importiamo un messaggio nuovo che √® Input. Questo √® il messaggio che pubblicher√† l'interruttore quando verr√† premuto. Quindi abbiam un subscriber che rimane in ascolto, e ogni volta che l'interruttore viene premuto il subscriber richiamer√† la funzione on_input. Dentro questa funzione in fine c'√® un publisher che far√† accendere i led a frequenze diverse. C'√® un trick inoltre che √® led_msg.led1 = self.cnt % 2 == 1. Questa √® la versione compatta del if-then-else che abbiamo visto prima per cambiare continuamente stato al lede da true a false. La sintassi in modo compatto √® dividi self.cnt per 2 se da resto 0 allora o (False) se no √® 1 (True).

import dotbot_ros
from dotbot_msgs.msg import Input, Led
import sys

class Node(dotbot_ros.DotbotNode):
    node_name = 'input_node'
    def setup(self):
        self.cnt = 0
        dotbot_ros.Subscriber('input', Input, self.on_input)
        self.led_pub = dotbot_ros.Publisher('led', Led)
        print 'Input Node Started'
        sys.stdout.flush()

    def on_input(self, msg):
        if msg.input1 == True:
            self.cnt += 1
            led_msg = Led()
            led_msg.led1 = self.cnt % 2 == 1
            led_msg.led2 = (self.cnt/2) % 2 == 1
            led_msg.led3 = (self.cnt/4) % 2 == 1
            self.led_pub.publish(led_msg)
            print "pressed"
            sys.stdout.flush()

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di pi√Ļ sulla mia Privacy Policy.

Ti potrebbe anche interessare

HB Cloud Tutorial #1 - Uso dei Led
Iniziamo ad utilizzare la piattaforma di Cloud Robotics
HB Cloud Tutorial #2 - Uso dei Bottoni
Rieccomi con il secondo tutorial legato all'uso dei bottoni per il robot **DotBot-ROS**. In questo tutorial, vedremo come configurare ed utilizzare in Python un bottone attaccato ad un pin GPIO del Raspberry Pi 3.
HB Cloud Tutorial #3 - I Motori
I Motori sono una delle parti essenziali dei robot. In questo tutorial, vederemo come è possibile in modo semplice ed intuitivo implementare un programma in Python che controlla i motori in base a comandi inviati via Wifi al Robot.
Utilizzare la RaspiCam in streaming con la piattaforma Cloud
Breve tutorial che spiega come abilitare la RaspiCam su ROS e la piattaforma di Cloud Robotics
Installiamo ROS su Raspberry Pi
Un breve tutorial su come utilizzare ROS sul Raspberry Pi
Video Corso ROS Rokers - Completati i video di Introduzione
Sono disponibili online i video tutorial del corso di ROS partito dalla community Rokers
Un IDE web Arduino sviluppato in Python e Flask
Un mio progetto dell'estate del 2015 che permette di programmare Arduino da un'interfaccia Web esposta da un Raspberry Pi
Utilizziamo Atom come editor di testo remoto su Raspberry Pi
Come usare Atom come editor di testo remoto per Raspberry Pi
Canopy: una Pythonica alternativa a Matlab
Presento questo interessante tool python che può essere considerato una buona alternativa a Matlab per l'analisi dei dati!
Python + Arduino = Nanpy
Programmare Arduino in Python con Nanpy
Utilizzo di Nanpy con il sensore di temperatura/umidità della famiglia DHT
Come utilizzare Nanpy col sensore DHT di temperatura e Umidità
Gestire le macchine virtuali senza sforzo con Vagrant
Introduzione ed esempio di utilizzo su Vagrant, il tool che semplifica la gestione delle macchine virtuali per lo sviluppo.
Implementiamo un bot Telegram con Python
Una semplice guida per iniziare a muovere i primi passi nello sviluppo di chatbot Telegram con Python
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram