Радиосвязь TinyDuino
В настоящее время я работаю над проектом с двумя TinyDuinos и двумя радиостанциями TinyShields 433 МГц (SI4432), чтобы передавать 3 оси (x, y, z) от одной к другой на большом расстоянии.
Я пробовал
- чтобы объединить оси в одну строку и отправить строку,
- чтобы отправить массив типа
string axes = { x , y , z
в получатель (разумеется, переменные уже определены), - отправить только одну строку. В данном случае у меня есть только первые две буквы строки. Например, если бы строка была
string first = "456"
, я бы получил"45"
на получателе
В примерах Radio Shield используется тип uint8_t и массивы для отправки и получения данных. Я уже пытался преобразовать строку в char*, а затем в uint8_t, и ничего особенного не произошло. Возможно, я что-то упускаю.
Ниже приведены снимки экрана моего кода. Я приведу 2 ссылки на примеры передатчика и приемника, от которых я получил код
Похожий проект: https://tinycircuits.com/blogs/learn/121634375- Учебное пособие по игре в футбол
Страница радиозащиты: https://tinycircuits.com/products/433mhz-long-range-radio -tinyshield
Основной щит TinyDuino: https://tinycircuits.com/collections/all/products/tinyduino-processor -доска
Скриншоты кода
1 ответ
Лучший ответ:
Для такого рода вещей вам нужно создать пакет, содержащий ваши данные. Лучший способ — использовать структуру.
struct coords {
int x;
int y;
int z;
};
Затем вы можете определить из него переменную:
struct coords myCoords;
И установите индивидуальные значения:
myCoords.x = 23;
myCoords.y = 180;
myCoords.z = -3817;
Теперь вы можете привести его к любому типу, который вам нужен для отправки:
manager.sendtoWait((uint8_t *)&myCoords, sizeof(struct coords), SERVER_ADDRESS);
Получение осуществляется примерно так же:
struct coords recCoords;
uint8_t len = sizeof(struct coords);
uint8_t from;
if (manager.recvfromAck((uint8_t *)&recCoords, &len, &from)) {
Serial.print("X = ");
Serial.println(recCoords.x);
Serial.print("Y = ");
Serial.println(recCoords.y);
Serial.print("Z = ");
Serial.println(recCoords.z);
}
В будущем, пожалуйста, опубликуйте свой реальный код, а не изображения вашего кода. Из-за этого становится очень тяжело постоянно прокручивать страницу вверх и вручную вводить фрагменты кода, а не иметь возможность скопировать и вставить пару строк.
- Проблема с загрузкой Bluetooth на Arduino HC-05 v4.0
- Нужен простой, маломощный, недорогой беспроводной коммутатор для передачи на Arduino
- Беспроводной Bluetooth USB-хаб с использованием Arduino nano
- Модуль LoRa Ra-02 Begin и BeginPacket не работают в Arduino Nano
- nRF24L01+ Невозможно установить адрес
- NRF24L01 PA+LNA с Arduino
- Состояние цифрового вывода Arduino не передается через NRF24L01, тогда как состояние аналогового вывода передается, почему?
- nRF24L01 +pa +lna link не связывается
Пожалуйста, добавьте код в свой вопрос, не используйте изображения/скриншоты. Это упрощает редактирование другими людьми и, что более важно, помогает поисковым системам., @MichaelT