Передача данных
- Войдите на сайт для отправки комментариев
Пнд, 10/03/2014 - 11:36
Здравствуйте в данный момент пытаюсь реализовать передачу данных с ардуино на ардуино по портам Rx и Tx. Я передаю 3 значения первое 30.21230 второе 59.76884 и третье 360. Проблема заключается в том что он выводит мне не корректно данные т.е. первое число 30.0000 второе 59.000 а третье там совсем не 360.
Вот скетч передачи данных:
#include <SoftwareSerial.h> SoftwareSerial qwe (9,8); int n,m,i,j,c; char A[3]; long B[15]; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. Serial.begin(9600); qwe.begin(9600); } // the loop routine runs over and over again forever: void loop() { for (i=0;i<3;i++){ if (i%3==0) { A[i]=30.21230; // sprintf( A, n) // n++; qwe.write(A[i]); } else if (i%3==1) { A[i]=59,76884; // m++; qwe.write(A[i]); } else{ A[i]=130; qwe.write(A[i]); } // Serial.println(A[i]); // char bytes[3]={ n, m, c}; // qwe.write(bytes); // qwe.println(bytes); } delay(1000); }
Вот скетч приема данных:
#include <SoftwareSerial.h> SoftwareSerial qwe (9,8); int n,m,i,j; double A[3]; int B[15]; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. Serial.begin(9600); qwe.begin(9600); } // the loop routine runs over and over again forever: void loop() { while(qwe.available()>0) { A[i]=qwe.read(); // B[i]=qwe.read(); i++; if (i>=3) break; } ////////////////////////////////////////// for (m=0;m<3;m++) { if (B[m]==A[m])break; } //////////////////////////////////// for (j=0;j<3;j++) { B[j]=A[j]; } if(i>0){ for (n=0;n<i;n++) Serial.println(A[n]); B[n]=A[n]; // Serial.println(B[n]); //Serial.println(""); i=0; }}
Здравствуйте в данный момент пытаюсь реализовать передачу данных с ардуино на ардуино по портам Rx и Tx. Я передаю 3 значения первое 30.21230 второе 59.76884 и третье 360. Проблема заключается в том что он выводит мне не корректно данные т.е. первое число 30.0000 второе 59.000 а третье там совсем не 360.
char A[3]; A[i]=30.21230; A[i]=59,76884;
эта программа не встречалась с компилятором :-)
1. Исправьте синтаксис (, .) и приведите в соответствие объявленный char используемый как float тип данных
2. При передаче данных размером >= 2 байта (int long float) учитывайте порядок байтов
Вот передаю данные с одной ардуино
float A[3];
B[n]=A[n];
использовал все типы и всеравно не получается как надо (((
порядок приема-передачи байтов
+ ++++++++++++++++++++++++
тренируйтесь в первой версии на единичных байтах , а не на float и long
Не обращайте внимание на массив В так как он не где не выводится и некуда не записывается. Я пользуюся только массивом А.
цикл for пропустили
если это, конечно, имеет значение на фоне общего непонимания
http://upload.akusherstvo.ru/image614439.png
Serial.println(my_float_var);
void loop() {
ладно, если намеков не понимаете, спрошу в лоб - чему равно значениет переменной "i"?
хотя какие там циклы...
вам же дело посоветовали
тренируйтесь в первой версии на единичных байтах , а не на float и long
Вот подругому сделал передача данных:
Вот смотрите при передачи данных просто в монитор порт A[0]=30.54672; Serial.println(A[0], 5) то значение мне выводит правельно, но при передаче через Rx и Tx он выведет 30.0000. Каким методом можно вывести число правельно?
Не томите душу подскажите лудше )))
Вообщем косяк тут в самом порту, почемуто большое число не хочет записываться в порт
Не томите душу подскажите лудше )))
Мягкий знак пропустили...
Навскидку, у Вас где-то происходит преобразование типа float в int, в результате десятичная часть теряется безвозвратно. Если так хочется работать только с целыми - ну, умножайте исходное число на 100 или 1000, чтобы дробная часть перешла в целое...
Вот смотрите при передачи данных просто в монитор порт A[0]=30.54672; Serial.println(A[0], 5) то значение мне выводит правельно, но при передаче через Rx и Tx он выведет 30.0000.
дык знамо дело у них правильно, ведь монитор порта писали люди, которые умеют читать данные, а вы не только не умеете, но и не хотите учиться.
зы.
гляньте на досуге, что возвращает softwareserial.read
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...