Как передавать символы или просто использовать xbee, как последовательный монитор
У меня есть arduino mega и uno, у mega есть xbee s2c в качестве координатора, а у uno-xbee s2c в качестве маршрутизатора, оба в режиме AT ( прозрачный ). Когда я отправляю целые числа из uno с помощью Serial.write (), координатор получает все в порядке, но когда я пытаюсь использовать float, отрицательные числа и символы, я получаю целые числа, но, как я узнал, отправляя символы, это в ASCII. Я попробовал Serial.print (), но безрезультатно. Есть ли способ отправить отрицательный float от одного xbee к другому в режиме AT?
Код координатора
void setup() {
Serial.begin(9600);
while (!Serial) {
; // дождитесь подключения последовательного порта. Требуется только для собственного USB-порта
}
Serial1.begin(9600);
Serial.println("Comersing test!");
}
void loop() {
if(Serial1.available()>0){
Serial.print(Serial1.read());
}
}`
Код UNO
#include <SoftwareSerial.h>
SoftwareSerial xbSerial(8, 7); // RX, TX
void setup() {
xbSerial.begin(9600);
xbSerial.write("First data sent!");
}
int x=4;
void loop() {
// put your main code here, to run repeatedly:
xbSerial.write(x);
x++;
delay(1000);
delay(1000);
delay(1000);
}
если я изменю x в Uno на плавающий, отрицательный или символ, я получу странные значения.
@chas ant, 👍1
Обсуждение1 ответ
XBee не может отправлять отрицательные целые числа, так как он работает в шестнадцатеричном формате и имеет диапазон от 0 до 255
Боюсь, что это неправда, если бы это было так, то ни один компьютер не смог бы представлять отрицательные числа. Все зависит от кодировки., @Code Gorilla
- Как использовать SPI на Arduino?
- Как подключиться к Arduino с помощью WiFi?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как получить уникальный идентификатор для всех плат Arduino?
- Как очистить буфер FIFO на MPU6050?
- Элегантное решение для обновления содержимого TFT-дисплея
- Считывание нескольких поворотных энкодеров
Пожалуйста, добавьте свой код (для отправки/получения). Похоже, у вас есть неявное преобразование типов., @Mikael Patel
Если вы можете отправлять ASCII и у вас есть контроль над обоими концами данных, вы можете отправлять числа в виде текстовых строк (не очень эффективно). Если номер имеет ограниченный диапазон, т. е. -127 -> +127, вы можете отправить 0, когда хотите передать -127, 1 для -126 и т. Д., @Code Gorilla