Преобразование int в массив символов, чтобы отправить его другому Arduino - PullRequest
0 голосов
/ 02 февраля 2020

Итак, мой проект предназначен для школы, и мы в основном пытаемся отправить целочисленное значение (от потенциометра / джойстика) другому 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 на самом деле просто ничто, а нажатие джойстика вверх или вниз просто записывает кучу этих ⸮, задних вопросительных знаков. Я перепробовал много разных методов, большинство из которых делают одно и то же.

Кто-нибудь может мне помочь? Спасибо.

...