StandardFirmata - Unterstützung für neue Hardware hinzufügen hinausgehende (6 / 10 schritt)

Schritt 6: Umsetzung der PyMata API-Befehl und Bericht-Methoden


BEFEHLSMELDUNGEN - pymata.py

Als nächstes code wir die PyMata API-Methoden für die drei Stepper motor Sub-Befehle und eine API-Methode zum Abrufen der gemeldete Versionsnummer. Pymata.py werden alle Änderungen am Code für die API. Die ersten drei Methoden, Stepper_config, Stepper_step und Stepper_request_library_version übersetzen den Befehl in eine ordnungsgemäß formatierte SysEx-Befehl, der dann an den Arduino gesendet wird. Die letzte Methode, Get_stepper_version, führt keine SysEx-messaging, aber einfach das Ergebnis für eine vorherige Version-Anforderung zurückgegeben.

 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 """ data = [self.STEPPER_CONFIGURE, steps_per_revolution & 0x7f, steps_per_revolution >> 7] for pin in 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): """ 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 """ if number_of_steps > 0: direction = 1 else: direction = 0 abs_number_of_steps = abs(number_of_steps) data = [self.STEPPER_STEP, motor_speed & 0x7f, (motor_speed >> 7) & 0x7f, motor_speed >> 14, abs_number_of_steps & 0x7f, abs_number_of_steps >> 7, direction] self._command_handler.send_sysex(self._command_handler.STEPPER_DATA, data) 
 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 """ data = [self.STEPPER_LIBRARY_VERSION] self._command_handler.send_sysex(self._command_handler.STEPPER_DATA, data) 

Schließlich implementieren wir Get_stepper_library_version:

 def get_stepper_version(self, timeout=20): """ timeout: specify a time to allow arduino to process and return a version the stepper version number if it was set. """ # get current time start_time = time.time() 
 # wait for version to come from the Arduino 
 while self._command_handler.stepper_library_version <= 0: if time.time() - start_time > timeout: print "Stepper Library Version Request timed-out. Did you send a stepper_request_library_version command?" return else: pass return self._command_handler.stepper_library_version 

Dies schließt alle Änderungen an pymata.py. Schließen Sie und speichern Sie pymata.py.


Nachrichten melden - pymata_command_handler.py

Wir werden jetzt die Bericht-Handler-Methode pymata_command_handler.py, hinzufügen, damit es kann empfangen und verarbeiten von Schrittmotor-Bibliothek Version Berichte. Beachten Sie, dass diese Methode werden die Daten aus der SysEx-Nachricht und speichert es in eine interne Variable namens Stepper_library_version.

 def stepper_version_response(self, data): """ This method handles a stepper library version message sent from the Arduino data - two 7 bit bytes that contain the library version number """ self.stepper_library_version = (data[0] & 0x7f) + (data[1] << 7) 

Zu guter Letzt müssen wir die Command_dispatch-Tabelle, um den Erhalt der Stepper Version Antwort verarbeiten zu aktualisieren. Fügen Sie einen neuen Eintrag unten der vorhandenen Tabelle für STEPPER_DATA wie unten gezeigt. Jeder Eintrag in der Command_dispatch-Tabelle besteht aus den SysEx Befehl, den Namen der die Behandlungsmethode und die Anzahl der 7-Bit-Werte zurückgegeben. Die 7-Bit-Werte werden wieder zusammengesetzt und gemäß der SysEx-Message-Formate, die wir zuvor definierten interpretiert werden.

 def run(self): """ This method starts the thread that continuously runs to receive and interpret messages coming from Firmata. This must be the last method in this file It also checks the deque for messages to be sent to Firmata. """ # To add a command to the command dispatch table, append here. self.command_dispatch.update({self.REPORT_VERSION: [self.report_version, 2]}) self.command_dispatch.update({self.REPORT_FIRMWARE: [self.report_firmware, 1]}) self.command_dispatch.update({self.ANALOG_MESSAGE: [self.analog_message, 2]}) self.command_dispatch.update({self.DIGITAL_MESSAGE: [self.digital_message, 2]}) self.command_dispatch.update({self.ENCODER_DATA: [self.encoder_data, 3]}) self.command_dispatch.update({self.SONAR_DATA: [self.sonar_data, 3]}) self.command_dispatch.update({self.STRING_DATA: [self._string_data, 2]}) self.command_dispatch.update({self.I2C_REPLY: [self.i2c_reply, 2]}) self.command_dispatch.update({self.CAPABILITY_RESPONSE: [self.capability_response, 2]}) self.command_dispatch.update({self.PIN_STATE_RESPONSE: [self.pin_state_response, 2]}) self.command_dispatch.update({self.ANALOG_MAPPING_RESPONSE: [self.analog_mapping_response, 2]}) self.command_dispatch.update({self.STEPPER_DATA: [self.stepper_version_response, 2]}) 

Der Befehlstabelle Versand ist definiert als eine Karte im pymata_command_handler.py. Diese Codekommentare erklären, seine Verwendung und wie man neue Befehle hinzufügen.

 # This is a map that allows the look up of command handler methods using a command as the key. # This is populated in the run method after the python interpreter "sees" all of the command handler method defines (python does not have forward referencing) 
 # The "key" is the command, and the value contains is a list containing the method name and the number of # parameter bytes that the method will require to process the message (in some cases the value is unused) command_dispatch = {} 

Speichern Sie und schließen Sie pymata_command_handler.py. Die Client-Änderungen sind nun abgeschlossen.

In Verbindung stehende Artikel

Fan-Unterstützung für Gen6 Elektronik hinzufügen

Fan-Unterstützung für Gen6 Elektronik hinzufügen

für eine Weile jetzt habe ich einen 3D-Drucker. Ein Orca V0.43 um genau zu sein.Dies ist ein 3D-Drucker von http://www.mendel-parts.com/.Ich bin sehr zufrieden mit dem Drucker, druckt es gut, es ist nicht so schwer, zusammen und es sieht gut aus.Aber
Werkzeuge-CLOUD: Neue Werkzeug hinzufügen

Werkzeuge-CLOUD: Neue Werkzeug hinzufügen

Neues Werkzeug hinzufügenSchritt 1: Klicken Sie "Werkzeug"Schritt 2: Daten bearbeitenGeben Sie BlueSwarf Dashboard sechsstellige Nummer, falls zutreffend. Wenn Sie eine zuweisen möchten, benutzen Sie diesen Zufallszahlen-Generator. Wenn Sie eine
ALTES MESSER NEUE HOLZ HINZUFÜGEN!

ALTES MESSER NEUE HOLZ HINZUFÜGEN!

Haben Sie ein altes Taschenmesser, Sie lieben, aber das Holz sieht schrecklich, nun ist es besser als neu aussehen könnte.Schritt 1: Finden Sie Holz ich habe einen Pice übrig gebliebenen Walnuss aus einem früheren Projekt aber können Sie, was Ihnen a
Wie Peter Ritters Auduino Projekt hinzufügen Schaltfläche Funktionen

Wie Peter Ritters Auduino Projekt hinzufügen Schaltfläche Funktionen

es macht Spaß! Gib nicht auf! Ich will nicht.Schritt 1: Erstellen der Auduino! Dieses Projekt ist einfach und sehr lustig. Ein großes Lob an Peter Ritter!Leute empfehlen in der Regel Prototyping mit einem Steckbrett sicherstellen, Ihre Töpfe arbeiten
Lebensdauer der Batterie für Ihre Turtle Beach X31 drahtlose Kopfhörer hinzufügen

Lebensdauer der Batterie für Ihre Turtle Beach X31 drahtlose Kopfhörer hinzufügen

haben Sie ein paar dieser Turtle Beach wireless-Gaming-Kopfhörer, Sie bereits wissen, sie sind ziemlich süß. Leider, Sie wahrscheinlich auch wissen, dass sie zu häufig aus Batterien ausgeführt werden können.Geringe Turtle Beach Attribute Akkulaufzeit
Mit Ihrem iPhone OSM POI-Standorte hinzufügen

Mit Ihrem iPhone OSM POI-Standorte hinzufügen

hinzufügen von Orten von Interesse (OVI) Standorte für das Projekt Open Street Map (OSM) ist ein guter Weg, um die digitale Darstellung von den umliegenden Gemeinden zu verbessern! Es ist einfacher als Sie denken, da Sie einfach mit Ihrem iPhone (und
Gewusst wie: Hinzufügen von Übergängen in iMovie HD

Gewusst wie: Hinzufügen von Übergängen in iMovie HD

Dieser Screencast zeigt Ihnen die Grundlagen des Hinzufügen von Übergängen in iMovie HD. Es bietet Ihnen Schritt für Schritt Anleitung beginnen ganz am Anfang des gewusst wie: Öffnen Sie die Anwendungen und starten Sie ein neues Projekt hinzufügen vo
Gewusst wie: hinzufügen Emoticons auf iOS 6

Gewusst wie: hinzufügen Emoticons auf iOS 6

Schritt 1: Öffnen Sie die Einstellungen Einstellungen öffnen, und tippen Sie auf allgemein.Schritt 2: Wählen Sie Tastatur Tastatur finden Sie im unteren Bereich.Schritt 3: Wählen Sie Tastaturen.Schritt 4: Wählen Sie neue Tastatur hinzufügenSchritt 5:
Hinzufügen von Digispark (mit Bootloader) Unterstützung zu bestehenden Arduino 1.6.x IDE

Hinzufügen von Digispark (mit Bootloader) Unterstützung zu bestehenden Arduino 1.6.x IDE

Digispark ist kleiner Arduino IDE kompatibel Entwicklungsboard basiert auf dem Atmel attiny85, die direkt mit USB verbunden. Es hat sehr wenige Pins, aber immer noch einige nette Dinge tun kann. Digispark ist copyright von Digistump LLC (digistump.co
ESP8266 mit Beispielcode Test Arduino-Unterstützung hinzufügen

ESP8266 mit Beispielcode Test Arduino-Unterstützung hinzufügen

Esp8266 packt eine Menge Punch. Es ist nicht nur ein WiFi-Modul, sondern auch einen anständigen Mikrocontroller erbaut. Jetzt ist das beste Teil hat die Gemeinschaft gemacht Programmierung dieser eingebauten Mikrocontroller sehr einfach durch das Hin
Hinzufügen von Bluetooth-Unterstützung zu Ihrem Auto

Hinzufügen von Bluetooth-Unterstützung zu Ihrem Auto

Ich kaufte mir eine gebrauchte Toyota Matrix 2011 und es hat einen AUX-Anschluss Ihr Handy oder MP3-Player anschließen, so dass es auf das Autoradio spielt. Es ist ein großartiges Feature und ich nutze es aber das Audio-Kabel ist ärgerlich und ist im
Machen Sie unentbehrlich, Portable, nützliche Unterstützung Beiträge.

Machen Sie unentbehrlich, Portable, nützliche Unterstützung Beiträge.

Diese instructable zeigt wie man eine portable, und äußerst hilfreiche Unterstützung post(s). Einsetzbar in vielen Funktionen, viele Bereiche. Wie Sie sehen werden, gibt es viele Einsatzmöglichkeiten für diese Beiträge.Schritt 1: Verwenden von Formul
Stativ-Unterstützung für eine QuickCam (oder andere Webcam)

Stativ-Unterstützung für eine QuickCam (oder andere Webcam)

es gibt viele Gründe, vielleicht möchten Ihre Webcam auf einem Stativ zu setzen.  Ich musste dies tun, da Stand für meine Logitech QuickCam Pro 4000 fehlte, aber es oft schön, im Allgemeinen für bessere Bilder mit einem Stativ verwenden, ist vor alle
Unterstützung der Obdachlosen auf einem Etat

Unterstützung der Obdachlosen auf einem Etat

Ich arbeite an einer sehr belebten Ecke in L.A. mit einer signifikanten obdachlose Bevölkerung in der Nachbarschaft. Es ist ein besonderer Kerl mit einem kleinen Hund, der immer vor dem gleichen Restaurant, und jedes Mal, wenn ich an ihm vorbeiging,