Utöver StandardFirmata - lägger till stöd för nya (6 / 10 steg)

Steg 6: Genomförandet av PyMata API-kommando och rapport metoder



KOMMANDOT meddelanden - pymata.py

Nästa kod vi PyMata API-metoder för de tre stepper motor underkommandon och en API metod att hämta rapporterade versionsnumret. All ändringar kod för API till pymata.py. De första tre metoderna, stepper_config, stepper_step och stepper_request_library_version översätta kommandot till en korrekt formaterad SysEx-kommando som sedan skickas till Arduino. Den sista metoden, get_stepper_version, leder inte till någon SysEx messaging, men helt enkelt Returnerar resultatet för en tidigare version begäran.

def stepper_config (self, steps_per_revolution, stepper_pins):
"""
Konfigurera stegmotor före operation.
steps_per_revolution: antal steg per motor revolution
stepper_pins: en lista över kontroll pin-nummer - antingen 4 eller 2
"""
data = [själv. STEPPER_CONFIGURE, steps_per_revolution & 0x7f, steps_per_revolution >> 7]
för PIN-kod i range(len(stepper_pins)):
data.append(stepper_pins[PIN])
Self._command_handler.send_sysex (self._command_handler. STEPPER_DATA, data)

def stepper_step (self, motor_speed, number_of_steps):
"""
Flytta en stegmotor för antalet steg vid den specificerade hastigheten
motor_speed: 21 bitar data ange varvtal
number_of_steps: 14 bitar för antal steg & riktning
positiva är framåt, negativ är omvänd
"""
om number_of_steps > 0:
riktning = 1
annat:
riktning = 0
abs_number_of_steps = abs(number_of_steps)
data = [själv. STEPPER_STEP, motor_speed & 0x7f, (motor_speed >> 7) & 0x7f, motor_speed >> 14,
abs_number_of_steps & 0x7f, abs_number_of_steps >> 7, riktning]
Self._command_handler.send_sysex (self._command_handler. STEPPER_DATA, data)

def stepper_request_library_version(self):
"""
Begära stepper bibliotek version från Arduino.
För att hämta versionen efter detta kommando kallas, ring
get_stepper_version
"""
data = [själv. STEPPER_LIBRARY_VERSION]
Self._command_handler.send_sysex (self._command_handler. STEPPER_DATA, data)

Slutligen genomför vi get_stepper_library_version:

def get_stepper_version (self, timeout = 20):
"""
tidsgräns: ange en tid att låta arduino att bearbeta och returnera en version
stepper versionsnumret om det var inställt.
"""
# få aktuell tid
start_time = time.time()

# vänta version komma från Arduino

medan self._command_handler.stepper_library_version < = 0:
om time.time() - starttid > timeout:
skriva ut "Stepper Version biblioteksbegäran timeout. Du skicka ett stepper_request_library_version kommando?"
returnera
annat:
passera
återgå self._command_handler.stepper_library_version

Detta avslutar alla ändringar till pymata.py. Stäng och spara pymata.py.


RAPPORTMEDDELANDEN - pymata_command_handler.py

Vi kommer nu lägga rapporten handler metoden till pymata_command_handler.py, så att den kan ta emot och bearbeta stepper bibliotek version rapporter. Observera att denna metod bygger ihop data från den SysEx meddelandet och butiker det i en intern variabel kallas stepper_library_version.

def stepper_version_response (self, data):
"""
Denna metod hanterar en stepper bibliotek version meddelande sänt från Arduino
data - två 7-bitars byte som innehåller versionsnumret bibliotek
"""
Self.stepper_library_version = (data [0] & 0x7f) + (data [1] << 7)

Slutligen måste vi att uppdatera tabellen command_dispatch för att bearbeta mottagandet av stepper version svar. Lägga till en ny post i botten av den befintliga tabellen för STEPPER_DATA som visas nedan. Varje post i tabellen command_dispatch består av kommandot SysEx, namnet på metoden hantering, och antalet 7 bitars värden returneras. 7 bitars värdena kommer ihop och tolkas enligt de SysEx meddelandeformat vi definierade tidigare.

def run(self):
"""
Den här metoden startar tråden som går kontinuerligt för att ta emot och tolka
meddelanden från Firmata. Detta måste vara den sista metoden i den här filen
Den kontrollerar också deque för meddelanden som ska skickas till Firmata.
"""
# Om du vill lägga till ett kommando i tabellen kommandot dispatch, lägga till här.
Self.command_dispatch.Update ({själv. REPORT_VERSION: [self.report_version, 2]})
Self.command_dispatch.Update ({själv. REPORT_FIRMWARE: [self.report_firmware, 1]})
Self.command_dispatch.Update ({själv. ANALOG_MESSAGE: [self.analog_message, 2]})
Self.command_dispatch.Update ({själv. DIGITAL_MESSAGE: [self.digital_message, 2]})
Self.command_dispatch.Update ({själv. ENCODER_DATA: [self.encoder_data, 3]})
Self.command_dispatch.Update ({själv. SONAR_DATA: [self.sonar_data, 3]})
Self.command_dispatch.Update ({själv. STRING_DATA: [self._string_data, 2]})
Self.command_dispatch.Update ({själv. I2C_REPLY: [self.i2c_reply, 2]})
Self.command_dispatch.Update ({själv. CAPABILITY_RESPONSE: [self.capability_response, 2]})
Self.command_dispatch.Update ({själv. PIN_STATE_RESPONSE: [self.pin_state_response, 2]})
Self.command_dispatch.Update ({själv. ANALOG_MAPPING_RESPONSE: [self.analog_mapping_response, 2]})
Self.command_dispatch.Update ({själv. STEPPER_DATA: [self.stepper_version_response, 2]})

Kommandot dispatch tabell definieras som en karta i pymata_command_handler.py. Dessa kodkommentarer förklara dess användning och hur man kan lägga till nya kommandon till den.

# Det här är en karta som kan leta upp av kommandot handler metoder med ett kommando som nyckel.

# Detta är ifyllt i metoden kör efter python interpreter "ser" alla de
kommandot handler metod definierar (python inte har vidare referenser)

# "Nyckel" är kommandot och värdet innehåller en lista som innehåller metodnamnet
och antalet
# parameter-byte som metoden kräver för att bearbeta meddelandet (i vissa fall den
värdet är oanvända)

command_dispatch = {}

Spara och stäng pymata_command_handler.py. Förändringarna som klienten är nu komplett.

Se Steg
Relaterade Ämnen

Hur du lägger till en USB-fingeravtrycksläsare internt till laptop

jag hade en Dell Mini-9 att jag installerat Mac OS X på och i processen såg andra användare att lägga till en inbyggd GPS-mottagare. Detta fick mig att tänka, kunde jag lägga till en fingeravtrycksläsare i den. Användarna av http://www.mydellmini.com...

Hur man lägger till "Öppna med anteckningar" högerklicka

jag personligen hatar att använda "öppna med" på grund av tiden, även om det bara några sekunder, och att behöva komma ihåg då var exakt ett visst program finns i min katalog.Detta kommer att visa dig hur du lägger till något program högerklicka...

Hur du lägger till vipparm spool fästen till en Honda F4i

dessa är instruktioner för hur du lägger till vipparm spool monteringshålen en Honda F4i vipparm. Vipparm spolar ger en säkrare och mer bekväm metod för lyft på baksidan av din cykel för att göra ändringar av däck, kedja glidmedel, etc. De flesta cyk...

Hur du lägger till en Instructable till din lista med favoriter och Betygsätt en Instructable

för att lägga en Instructable till din lista över favoriter, klicka på länken "favorit" i det grå fältet under den Instructable bilder.Du lista över favoriter finns på din hemsida (Klicka på ditt användarnamn uppe till höger) under "Din Ins...

Hur du lägger till en SATA hårddisk till datorn

tid: 5-10 minuterDet krävs skicklighetsnivå: ingenSäkerheten är det första steget när leka med en dator.För att säkerställa att du inte chockera dig själv eller datorn, kommer att klädd i en anti-statiskt armband absorbera en avgift som du kan bära.D...

Hur du lägger till en mottagare lufttank för mer kompressor kapacitet

Om din lilla kompressor är inte tillräckligt för att driva din inverkan drivrutin eller andra kompressor bifogade filer, behöver du inte spendera en mindre förmögenhet på en nyare och större setup. Med dessa enkla instruktioner, ska jag visa dig hur...

Salta eller söta Carb eller NO Carb du bestämmer dig av vad du lägger till

Här är ett recept för att göra en välsmakande bröd eller en söt cookie beroende om du vill ett bröd typ recept med inga kolhydrater och mycket protein eller en mjuk kaka typ recept med lite sötma eller mycket, beroende på vad du sätter på den. Detta...

Hur du lägger till servrar i Minecraft Pocket Edition!

Detta instructable lär dig hur du lägger till publika servrar till Minecraft Pocket Edition!Steg 1: Komma igång Först öppna Minecraft och trycker på play.Steg 2: Lägga till något nytt Tryck på knappen ny värld i övre högra hörnet.Steg 3: + Nästa, try...

Hur du lägger till fler utgångar till din Microcontroller

detta Instructable visar dig steg för steg hur du lägger till 8 extra digitala utgångar, med endast 3 din microcontroller digital utgång.Steg 1: Vilken Microcontroller ska du använda? För att göra detta Instructable med din mikrokontroller, måste du...

Hur du lägger till en Lineart eller någon Skanna profil i Windows Faxa och skanna

Hej, trött av avsökningen din ritade bilder i färg eller gråskala läge och behöver ett bättre sätt att scanna dem? Du vet jag har, men jag nyligen upptäckt hur du lägger till en annan skanningsprofil i Windows Faxa och skanna. (Obs: detta är för Wind...

Hur du lägger till skript RSBot

Hej,Idag kommer jag att visa dig hur du lägger till ett skript till RSBot.Detta är mycket enkelt och tar inte så lång tid.Steg 1:1) samla nödvändiga objekt Behöver du följande saker:1) Java Development Kit - DL-2)rsbot(duh)3) skript för att lägga til...

Hur du lägger till anpassade sökmotorer i Opera

så använder du Opera? (Förmodligen ja eftersom du visar detta instructable)Du vet den "g * söka termen *" söka * söka termen * på Google, och samma för Wikipedia etc.?Jag använder dem hela tiden, och jag har lagt till ett par av mina egna, och b...

Hur du lägger till en frontlight till Gameboy färg

om du växte upp med att spela Game Boy som jag gjorde, jag är säker på att du minns otaliga timmar av pokemon strider, av vilka många var endast möjligt genom den frälsande nåd av din wormlight. Jag vet att jag är skyldig många långa nätter av Gamebo...

Hur man lägger till spel till LG VX9900 (env) (avund) mobiltelefon

jag kommer att visa dig steg för steg hur du lägger till flera .swf spel på telefonen LG VX9900 enV.Steg 1: Vad du behöver Här är en lista över saker som du behöver. Det ska inte kosta dig något förutsatt att du redan har en dator, en LG VX9900 env o...

Hur du lägger till textrutor

jag kunde aldrig hitta hur du lägger till de textrutor som gjorde livet så mycket easyer. Jag slutligen gjorde självklart, men för att göra det easyer å du stötarna... här är hur ya gör den.Steg 1: Här är en video på hur man gör det> här är en video...

Hur du lägger till flera bilder till Pintrest.

Här jag ska visa dig hur du lägger till flera bilder till ett stift på Pintrest. Det är lätt! Följ bara dessa några steg. Lets go!Steg 1: Ladda ner Photo Collage (iOS 6.12 +) jag använder iOS 6.12. Så om din med android då någon bild collage app fung...

Hur du lägger till blandade tal AKA blandade fraktioner

En enkel steg för steg video handledning om hur du lägger till blandade tal AKA blandade fraktioner....

Hur du lägger till bråk med till skillnad från nämnare

I den här videon visar jag steg för steg hur du lägger till bråk med till skillnad från nämnare....

Hur du lägger till fraktioner

I denna steg för steg video visar jag hur du lägger till bråk med som nämnare....