Forum

Einloggen | Registrieren | RSS  

Arduino -> Arduino über OneWire (Netzwerktechnik)

verfasst von bastelix(R), 22.02.2017, 21:26 Uhr

Hallo,

Bei 1-Wire kannst du pro Bus nur einen Master (und N Slaves) betreiben.
Wie man den 1-Wire-Master in Software abbildet hat Maxim/Dallas veröffentlicht, darauf basiert auch die Arduino Bibliothek. Für den Slave ist das nicht so trivial, da es keine Dokumentation dazu gibt und das Timing ist auch nicht so einfach, wenn ich mich recht erinnere. Zudem sieht es Dallas nicht gerne, wenn man Code veröffentlicht der ihre Produkte in Code nachbildet, aber das hast du ja nicht vor. Es gab mal eine Seite die das recht schön ausgeführt hat, der Inhalt ist da aber leider nicht mehr abrufbar.
Du brauchst also für den Slave-Adruino eine andere Bibliothek, anbei ein paar Links zu Bibliotheken. Welche, falls überhaupt, für dich geeignet ist musst du selbst ausprobieren.

https://github.com/M-o-a-T/owslave
https://github.com/neuoy/OneWireArduinoSlave
https://github.com/MarkusLange/OneWireSlave

Dann zu deinen Fragen. Dass diese Methoden nur zum Schrieben vom Adruino-Master in den 1-Wire-Slave dienen ist dir ja spätestens jetzt klar.
» void write(uint8_t v, uint8_t power = 0);
Sendet ein Byte an den Slave - normalerweise sendet man damit Befehle an den Slave damit der etwas tut (z.B. die Temperatur messen und zurückschicken)
v : ist ein 8-Bit Wert der an den Slave gesendet wird.

» void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);
Sendet eine festgelegte Anzahl von Elemente aus einem Array an den Slave
buf: ist der Pointer auf das erste Array-Element
count: ist die Anzahl der zu schreibenden Array-Elemente, count darf kleiner aber nicht größer sein als die Anzahl der Array-Elemente insgesamt (das mit den Pointern und Arrays solltest aber eh kennen)

» void write_bit(uint8_t v);
Macht das gleiche wie write(uint_t v, 1);

Kannst du hier nochmal in den Quellcode-Kommentaren nachlesen: https://github.com/PaulStoffregen/OneWire/blob/master/OneWire.h

» Wie kann ich mit diesen Funktionen einen String senden?
uint8_t ist als unsigned char definiert, ein String ist ein Array von (signed) char (mit der Methode c_str() der String-Klasse kannst du auf dieses char-Array zugreifen).
Im Prinzip kannst du also einfach deinen c_str() in einen uint8_t/unsigned char casten, übertragen und auf Empfängerseite wieder zu char casten und wieder einen String daraus bauen.

» Könnte mir das jemand erklären oder auf hilfreiche Seiten verlinken?
» Beispiele wären super :D
Beispiele (für Master) https://github.com/PaulStoffregen/OneWire/tree/master/examples



Gesamter Thread:

Arduino -> Arduino über OneWire - Gassst, 22.02.2017, 17:15
Arduino -> Arduino über OneWire - bastelix(R), 22.02.2017, 21:26
Arduino -> Arduino über OneWire - Gassst, 23.02.2017, 16:48