Stap 2: Opgeven en ontwerpen van de nieuwe PyMata API en verslaggever methode Interfaces
Met behulp van de openbare interface van Stepper.h als een gids, kunnen we beginnen met de PyMata , stappenmotor API en verslaggever methode interfaces ontwerpen.
Eerste plaats moeten wij een methode die zal instrueren de seriële bibliotheek om te instantiëren van een motor-object. Laten we deze methode aanroepen, stepper_config, en gelijkaardig aan van de bibliotheek van de stepper constructeurs, wij zullen toestaan dat de beller te geven van het aantal stappen per omwenteling, evenals een lijst van motorische controle pinnen te verstrekken. Deze lijst, bij de bellers optie, zal bevatten 2 pin waarden voor een motor 2 dirigent of 4 voor een motor 4 dirigent.
Hier is de handtekening voor de API methode stepper_config.
def stepper_config(self, steps_per_revolution, stepper_pins): """ Configure stepper motor prior to operation. steps_per_revolution: number of steps per motor revolution stepper_pins: a list of control pin numbers - either 4 or 2 """
Verwijst naar Stepper.h, biedt de bibliotheek verschillende methoden om de snelheid van de motor te verplaatsen van de motor en een bepaald aantal stappen.
Onze PyMata interface zal moeten hetzelfde te doen, maar we willen maken van een ontwerpbesluit en het combineren van beide bewerkingen in één methode.
We zullen de naam van deze methode stepper_step en haar handtekening API is hieronder weergegeven.
def stepper_step(self, motor_speed, number_of_steps): """ Move a stepper motor for the number of steps at the specified speed motor_speed: 21 bits of data to set motor speed number_of_steps: 14 bits for number of steps & direction positive is forward, negative is reverse """
We moeten ook zorgen voor een methode als u wilt dat de gebruiker de Stepper Motor bibliotheek versie aan te vragen. Omdat asynchrone Firmata rapportage, zullen we kunnen afzonderlijke methoden voor het verzenden van het verzoek van de versie aan de Arduino, en voor het ophalen van het antwoord. Beide methoden zijn onderdeel van de openbare API.
De aanvraagmethode zal hebben de volgende API handtekening:
def stepper_request_library_version(self): """ Request the stepper library version from the Arduino. To retrieve the version after this command is called, call get_stepper_version(). """
Alvorens de bespreking van de laatste methode van de API, moeten we specificeren de handtekening van de methode van de verslaggever die de data van de Arduino naar de client verzonden verwerkt. Deze gegevens zijn in de vorm van twee 7 bit bytes die worden samengevoegd moeten tot het versienummer van de bibliotheek die door de client worden opgeslagen.
def stepper_version_response(self, data): """ This method handles a stepper library version message sent from the Arduino and stores the value until the user requests its value using get_stepper_version() data -Two 7 bit bytes that contain the library version number """
De resultaatwaarde van de Arduino in het bericht van de stepper_version_response worden intern opgeslagen door PyMata. Als u wilt de waarde ophalen, roept de gebruiker de get_stepper_version API methode. Als u wilt toestaan voor de overdracht van de gegevens van de Arduino en doorlooptijden, is een maximum wacht tijdparameter opgegeven. De standaardwaarde voor deze parameter is 20 seconden. Als de antwoorden van de Arduino voordat de maximumtijd verloopt, de waarde zal onmiddellijk worden geretourneerd en wordt de timer geannuleerd. De handtekening voor deze methode is:
def get_stepper_version(self, timeout=20): """ timeout: specify a max time to allow arduino to process and return the version the stepper version number if it was set. """
Een belangrijke opmerking
Alle PyMata "command" methoden worden toegepast in pymata.py. Dus wanneer we stepper_config, stepper_step, stepper_request_library_version en get_stepper_version code, zullen ze alle worden toegevoegd aan pymata.py.
Alle "verslaggever berichten" afkomstig uit de Arduino worden verwerkt door pymata_command_handler.py. Daarom zal de uitvoering van stepper_version_response naar dat bestand worden toegevoegd.