Stap 4: De SysEx protocolberichten definiëren
In de vorige stap, kunnen we hebben toegewezen afzonderlijke SysEx opdrachten voor elk van de bewerkingen die moeten worden uitgevoerd om te configureren en beheren van de motor. We kozen er echter slechts één waarde, STEPPER_DATA, om te besparen op het beperkte aantal beschikbare SysEx opdrachten toe te wijzen.
Dus, om een STEPPER_DATA-opdracht uitvoeren een van de drie operaties opgegeven door onze eerder gedefinieerde PyMata API-methoden, een kwalificatie byte of subopdracht, zal worden toegevoegd aan het bericht van de STEPPER_DATA. Het bovenstaande diagram toont de kwalificatie bytes die onderscheiden van de opdrachten van de STEPPER_DATA.
Hieronder, we herhalen de API methode handtekeningen als referentie, alsmede Toon de protocolspecificatie voor elke subopdracht, byte voor byte.
Merk op dat de opdracht -protocolberichten zijn afkomstig is van PyMata en naar FirmataPlus worden gestuurd.
Merk ook op dat de API methode stepper_request_library_version(), niet over het Firmata-protocol gaat. Het geeft gewoon een eerder opgeslagen waarde dat wordt bewaard door de PyMata.
STEPPER_CONFIGURE
Definitie van API-methode:
def stepper_config (zelf, steps_per_revolution, stepper_pins)
// stepper motor configuration message definition for 2 conductor motor 0 START_SYSEX (0xF0) 1 STEPPER_DATA (0x72) 2 STEPPER_CONFIGURE (0x00) 3 steps per revolution LSB 4 steps per revolution MSB 5 motor control pin 1 6 motor control pin 2 7 END_SYSEX (0xF7)
// stepper motor configuration message definition for 4 conductor motor 0 START_SYSEX (0xF0) 1 STEPPER_DATA (0x72) 2 STEPPER_CONFIGURE (0x00) 3 steps per revolution LSB 4 steps per revolution MSB 5 motor control pin 1 6 motor control pin 2 7 motor control pin 3 8 motor control pin 4 9 END_SYSEX (0xF7)
STEPPER_STEP
Definitie van API-methode:
def stepper_step (zelf, motor_speed, number_of_steps)
// stepper motor motion message 0 START_SYSEX (0xF0) 1 STEPPER_DATA (0x72) 2 STEPPER_STEP (0x01) 3 motor speed LSB motor speed has a maximum of 21 bits 4 motor speed bits 8-14 5 motor speed MSB 6 number of steps to move LSB 7 number of steps to move MSB 8 motor direction determined within stepper_step method 9 END_SYSEX (0xF7)
STEPPER_LIBRARY_VERSION
Definitie van API-methode:
def stepper_request_library_version(self)
// stepper motor request library version 0 START_SYSEX (0xF0) 1 STEPPER_DATA (0x72) 2 STEPPER_LIBRARY_VERSION (0x02) 3 END_SYSEX (0xF7)
Het antwoord op het verzoek van de versie van de bibliotheek is de enige rapportbericht verzonden vanuit de Arduino voor de stappenmotor. Daarom gebruiken we gewoon het STEPPER_DATA bericht zonder elke subopdracht kwalificatie. Als er extra rapporttypen voor de stappenmotor, zou dan wij moeten aanvullende kwalificaties voor de rapporten toevoegen.
Merk op dat het verslag-bericht afkomstig van FirmataPlus is en naar PyMata gestuurd
// stepper motor version reply 0 START_SYSEX (0xF0) 1 STEPPER_DATA (0x72) 2 version LSB 3 version MSB 4 END_SYSEX (0xF7)