Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám az egyik Arduino...

Hogyan tudnám az egyik Arduinoról a változók értékeit átküldeni egy másikra?

Figyelt kérdés

É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?



2016. ápr. 23. 22:43
 1/8 anonim ***** válasza:
Sima serialon keresztül mondjuk?
2016. ápr. 23. 23:36
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
uart?
2016. ápr. 24. 00:54
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
2016. ápr. 24. 07:30
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:

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.

2016. ápr. 24. 10:03
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

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?

2016. ápr. 24. 10:06
 6/8 A kérdező kommentje:

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!

2016. ápr. 24. 10:15
 7/8 anonim ***** válasza:
Ha a floatot át tudod alakítani stringgé, és vissza, akjor nyert ügyed van!
2016. ápr. 24. 18:58
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

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á.

2016. máj. 21. 12:06
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!