Итак, мой проект предназначен для школы, и мы в основном пытаемся отправить целочисленное значение (от потенциометра / джойстика) другому Arduino, используя радиопередатчик и приемник. Все отлично работает с использованием символов, как отправка наших имен, но при использовании целого числа все портится.
Вот код tx:
#include <RH_ASK.h>
#include <SPI.h>
#define JOYY A0
#define JOYX A1
RH_ASK rf_driver;
int pos_x;
int pos_y;
void setup() {
Serial.begin(9600);
rf_driver.init();
pinMode(13, OUTPUT);
pinMode(JOYY, INPUT);
pinMode(JOYX, INPUT);
}
void loop() {
readJoy();
//Serial.println(pos_y);
char *msg = (char*)pos_y;
Serial.println(*msg);
rf_driver.send(msg, strlen(msg));
rf_driver.waitPacketSent();
}
void readJoy() {
pos_x = analogRead(JOYX);
pos_y = analogRead(JOYY);
pos_x = map(pos_x, 497, 1023, 1, 173);
pos_y = map(pos_y, 497, 1023, 1, 173);
//Serial.println(pos_y);
//Serial.println(pos_x);
}
и это код rx:
#include <RH_ASK.h>
#include <SPI.h>
#include <Servo.h>
int val = 0;
int x = 0;
RH_ASK rf_driver;
Servo myservo;
void setup() {
rf_driver.init();
Serial.begin(9600);
myservo.attach(6);
}
void loop() {
uint8_t buf[10];
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, &buflen))
{
Serial.print("Message: ");
Serial.println((char*)buf);
//myservo.write(buf);
}
}
У меня проблема с
char *msg = (char*)pos_y;
Serial.println(*msg);
Я пытаюсь преобразовать целое число в символ, а затем распечатать его. Ошибок нет, но, глядя на последовательный монитор, ожидаемое значение 0 на самом деле просто ничто, а нажатие джойстика вверх или вниз просто записывает кучу этих ⸮, задних вопросительных знаков. Я перепробовал много разных методов, большинство из которых делают одно и то же.
Кто-нибудь может мне помочь? Спасибо.