Utöver StandardFirmata - lägger till stöd för nya (4 / 10 steg)
Steg 4: Definiera SysEx-protokollmeddelanden
I föregående steg, kunde vi har tilldelat separata SysEx kommandon för var och en av de operationer som måste utföras för att konfigurera och kontrollera motorn. Dock valde vi att tilldela endast ett värde, STEPPER_DATA, för att bevara det begränsade antalet tillgängliga SysEx kommandon.
Så, för att en STEPPER_DATA kommando ska utföra en av de tre åtgärder som anges av våra tidigare definierade PyMata API-metoderna, en kvalificerare byte eller underkommandot kommer att läggas till STEPPER_DATA meddelandet. Diagrammet ovan visar qualifier byte som skiljer STEPPER_DATA kommandon.
Nedan, vi upprepar API metod underskrifter som referens, samt Visa protokollspecifikationen för varje underkommando, byte för byte.
Observera att kommandot protokollmeddelanden är kommer från PyMata och skickas till FirmataPlus.
Observera också att API metod stepper_request_library_version(), inte innebär Firmata protokollet. Det återställer endast ett tidigare lagrat värde som behålls av PyMata.
STEPPER_CONFIGURE
API-metoden Definition:
def stepper_config (self, steps_per_revolution, stepper_pins)
stepper motor konfiguration meddelande definition för 2 ledare motor
0 START_SYSEX (0XF0)
1 STEPPER_DATA (0X72)
2 STEPPER_CONFIGURE (0X00)
3 steg per varv LSB
4 steg per varv MSB
5 motorisk kontroll stift 1
6 motorisk kontroll stift 2
7 END_SYSEX (0XF7)
stepper motor konfiguration meddelande definition för 4 ledare motor
0 START_SYSEX (0XF0)
1 STEPPER_DATA (0X72)
2 STEPPER_CONFIGURE (0X00)
3 steg per varv LSB
4 steg per varv MSB
5 motorisk kontroll stift 1
6 motorisk kontroll stift 2
7 motorisk kontroll stift 3
8 motorisk kontroll stift 4
9 END_SYSEX (0XF7)
STEPPER_STEP
API-metoden Definition:
def stepper_step (self, motor_speed, number_of_steps)
stepper motor motion meddelande
0 START_SYSEX (0XF0)
1 STEPPER_DATA (0X72)
2 STEPPER_STEP (0X01)
3 varvtal LSB varvtal har högst 21 bitar
4 varvtal bitar 8-14
5 varvtal MSB
6 antalet steg att flytta LSB
7 antalet steg att flytta MSB
8 motor riktning bestäms inom stepper_step metod
9 END_SYSEX (0XF7)
STEPPER_LIBRARY_VERSION
API-metoden Definition:
def stepper_request_library_version(self)
stepper motor begäran bibliotek version
0 START_SYSEX (0XF0)
1 STEPPER_DATA (0X72)
2 STEPPER_LIBRARY_VERSION (0X02)
3 END_SYSEX (0XF7)
Svaret på biblioteksbegäran version är endast meddelandet från Arduino för stegmotor. Därför kan vi helt enkelt använda STEPPER_DATA meddelandet utan någon underkommando qualifier. Om det fanns ytterligare en rapporttyper för stegmotor, skulle vi behöva lägga till ytterligare kval för rapporter.
Observera att meddelandet kommer från FirmataPlus och skickas till PyMata
stepper motor version svar
0 START_SYSEX (0XF0)
1 STEPPER_DATA (0X72)
2 version LSB
3 version MSB
4 END_SYSEX (0XF7)