Utöver StandardFirmata - lägger till stöd för nya (2 / 10 steg)
Steg 2: Ange och utforma de nya PyMata API och Reporter metod gränssnitt
Med Stepper.h offentliga gränssnitt som en guide, kan vi börja utforma PyMata stegmotor API och reporter metod gränssnitt.
Först behöver vi en metod som instruerar seriell biblioteket att instansiera ett motor-objekt. Låt oss kalla denna metod, stepper_config, och liknar stepper bibliotekets konstruktörer, vi gör att den som ringt att ange antalet steg per varv, samt att tillhandahålla en lista över motorisk kontroll stift. Denna listan, vid alternativet som ringer kommer att innehålla 2 pin värden för en 2 ledare motor eller 4 värden för en 4 ledare motor.
Här är signatur för API-metoden stepper_config.
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
"""
Hänvisning till Stepper.h, erbjuder biblioteket separata metoder att ställa in hastigheten på motorn och att flytta motorn ett visst antal steg.
Vår PyMata gränssnitt kommer att behöva göra samma sak, men vi ska göra en designbeslut och kombinera både verksamheten i en metod.
Vi kommer namn denna metod stepper_step och dess API signatur visas nedan.
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
"""
Vi måste också tillhandahålla en metod för att tillåta användaren att begära Stepper Motor bibliotek version. På grund av den asynkrona naturen för Firmata rapportering, kommer vi att tillhandahålla separata metoder att skicka version begäran till Arduino, och hämta svaret. Båda dessa metoder ingår i den offentliga API: N.
Metoden begäran har följande API signatur:
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().
"""
Innan vi diskuterar den sista API-metoden, måste vi ange signaturen för metoden reporter som bearbetar data som skickas från Arduino till klienten. Dessa data är i form av två 7-bitars byte som ska vara ihop för att bilda det bibliotek versionsnummer som lagras av klienten.
def stepper_version_response (self, data):
"""
Denna metod hanterar stepper bibliotek version meddelanden som skickas
från den Arduino och butiker begär värdet tills användaren
dess värde med hjälp av get_stepper_version()
data-två 7-bitars byte som innehåller versionsnumret bibliotek
"""
Värdet som returneras av Arduino i stepper_version_response meddelandet lagras internt av PyMata. Om du vill hämta värdet, anropar användaren metoden get_stepper_version API. För att möjliggöra Arduino dataöverföring och handläggningstiderna är anges en maximal vänta tid parametern. Standardvärdet för den här parametern är 20 sekunder. Om Arduino svarar innan den maximala tiden löper ut, värdet kommer att returneras omedelbart och timern är inställd. Signaturen för metoden är:
def get_stepper_version (self, timeout = 20):
"""
tidsgräns: ange en max tid att låta arduino att bearbeta
och returnera versionen
stepper versionsnumret om det var inställt.
"""
En viktig anmärkning
Alla PyMata "kommando" metoder implementeras i pymata.py. Därför när vi kod stepper_config, stepper_step, stepper_request_library_version och get_stepper_version, kommer de alla läggas till pymata.py.
Alla "reporter brev" med ursprung från Arduino hanteras av pymata_command_handler.py. Genomförandet av stepper_version_response kommer därför att läggas till filen.