Hogyan tudnám az egyik Arduinoról a változók értékeit átküldeni egy másikra?
Érdekelne hogyan tudnék két Arduino Uno-t összekötni, hogy az egyikről több float típusú változó aktuális értékeit átküldje a másikra meghatározott időközönként.
Eddig I2C/TWI busszal próbálkoztam, több példát is találtam rá, de sem egynél több, sem float típusút nem sikerült átjuttatnom.
Milyen interfészen érdemes megcsinálni? Tudnátok példa programot mutatni? Egyéb javaslat, tapasztalat?
Kód nélkül nehéz megmondani, hogy mit csinálsz rosszul...
Azt tudod, hogy csak byteokat lehet átküldeni? Ha más típust akarsz átküldeni, akkor azt először byteok sorozatává kell alakítanod majd a vevőnél visszaalakítanod.
Köszönöm a válaszokat!
A sima serialt is próbáltam, de nekem nem sikerült. Nyilván bármelyikkel lehetséges lenne, a példák működnek is, de floathoz alapjáraton nem jók.
Pl. a MasterWriter-nél hiába rakom be az x helyér a float változó nevét hibát ír ki fordításkor.
Szóval valami bővebb javaslat esetleg?
Azt olvastam én is, hogy byte-ban küldi az adatokat, de az nem volt nekem egyértelmű, hogy hogyan. Mert a példa programban van egy sor ahol két " jel között beírt szöveget simán átküldi, ami több bájtból áll. Tehát ha ide string változót írnék a helyére annak értékét is át kellene tudnia küldeni bájtokként, nem?... Az x helyére meg float-ot írok akkor meg azt, nem?... Én így értelmeztem, ki is próbáltam, de egyik esetben sem működött, fordításkor hibát jelzett.
Itt van a MasterWrite példája:
#include <Wire.h>
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
}
byte x = 0;
void loop() {
Wire.beginTransmission(8); // transmit to device #8
Wire.write("x is "); // sends five bytes
Wire.write(x); // sends one byte
Wire.endTransmission(); // stop transmitting
x++;
delay(500);
}
forrás: [link]
Szóval akkor hogy van ez? Előre is hatalmas köszönet a segítségért!
Nos. MIvel ezek tizedes értékeket is képviselnek elsőnek én megnézném Kerekíteném mindig a legközelebbi egész számmá, majd a tizedes számot lecsípném és egész számként küldeném át. Itt kapsz 2 külön értéket.
Ebből már tudnia kell a másik arduinonak hogy az egész szám 3.144 esetén 3 lesz majd a másik szám 144. Ezeket össze fűzni és osztani a tizedes szám hosszával. Kb ennyi lenne a trükk. Most pontos példát nem adok, de ha nagyon nem megy megírom rá.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!