PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Arduino Due <--> Raspberry Python --> int16_t Zahlen senden empfangen



key007
02.04.2020, 22:04
Ich suche Leute die auch Arduinos Dues 32-bit ARM mit Raspbery Python 3.X per I2C kommunizieren lassen.

Ziel --> Zahlen Austausch per I2C zwischen Arduino due und Raspberry Python.
Die scheinbar einfache Aufgabe int16_t Werte per I2C hin und her senden beschäftigt mich schon Stunden.
Die Wertbereiche sind zwischen -255 bis 255 (um die Antriebsmotoren zu steuern)

Die Hauptaufgabe ist es die Zahlenwerte in Bytes zu zerlegen und auf der anderen Seite wieder in Zahlen zusammensetzen.

Ziel von diesem Thread wären folgende vier Funktionen: für Werte -255 bis 255

--> Arduino due --> int16_t Wert in zwei Bytes umwandeln (beim due ist int 4 Byte gross int32_t)
--> Arduino due --> zwei Bytes Werte in int16_t Wert umwandeln

--> Raspi Python --> Zahlen Wert in zwei Bytes umwandeln
--> Raspi Python --> zwei Bytes Werte in Zahlen Werte umwandeln

Ich bitte euch nur zu Antworten, wenn Ihr selber an diesem Thema dran seit. (BlaBla per private Nachrichten)
Es gibt schon viele Threads zu diesem Thema die aber theoretisch oder chaotisch enden. :p
Ich werde meinen Code noch besser dokumentieren und dann hier laufend veröffentlichen.

Meine aktuellen Schwierigkeiten sind die negativen Werte auf der Python Seite in Bytes umzuwandeln.
Die negativen Werte kommen noch seitenverkehrt an beim Arduino an . --> Bsp: -10 kommen als -246

def ConvertIntegerToBytesList(src):
barr = src.to_bytes(2, byteorder='little', signed=True)

liste = list(barr)

return liste

34919Ps: Das ist meine aktuelle Hardware "Robicar" fast alles mit dem 3D Drucker gedruckt.

Klebwax
03.04.2020, 21:28
Ich habe mal versucht, dein Beispiel nachzuvollziehen:

Python liefert mit to_bytes für -10 0xfff6. Und das ist genau das, was mir in C ein printf("%x", -10) auch liefert. Ich sehe da kein wirkliches Problem.

Was auf dem Due abläuft, kann ich nicht nachvollziehen. Ich hab weder einen noch sehe ich Code für ihn.

MfG Klebwax