Запись полученных данных в переменную

Gamakiv

✩✩✩✩✩✩✩
9 Сен 2023
1
0
Ru
Всем привет! Осваиваю Arduino и столкнулся со сложностью. Имеем приемник и передатчик по 433Mhz. Использую либу Gyver433 - https://github.com/GyverLibs/Gyver433/tree/main

Суть проекта такова:
При нажатии на кнопку №1 - оправить 1, при нажатии на кнопку №2 - отправить собственно 2. Со стороны приемника принять это и в зависимости от принятого числа выполнить какое либо действие.

Передача:
C++:
void loop() {
  
   // включаем светодиод при нажатой кнопке
  if(digitalRead(switchPin_bol_blue) == HIGH)
    {
      led.brightness(RGBLed::BLUE, 10);
      led.flash(RGBLed::BLUE, 5000);
      char data[] = "1";
      tx.write((byte*)data, sizeof(data));
    }
  else
    {
      led.off();
    }

  if(digitalRead(switchPin_ant_yell) == HIGH)
    {
      led.brightness(RGBLed::YELLOW, 10);
      led.flash(RGBLed::YELLOW, 5000);
      char data[] = "2";
      tx.write((byte*)data, sizeof(data));
    }
  else
    {
      led.off();
    }
}
Приемник:
C++:
void setup() {
  Serial.begin(9600);
  attachInterrupt(0, isr, CHANGE);  // прерывание пина радио по CHANGE
}

void isr() {
  rx.tickISR();
}

void loop() {
  if (rx.gotData()) {// если успешно принято больше 0
    // выводим сырые байты в порт
    Serial.write(rx.buffer, rx.size);
    Serial.println();
  }           
}


  /* O_o надо разобраться с переменной((
   switch (case_fellow) {
    case 1:
      Serial.println("On fan1");
      break;

    case 2:
      Serial.println("On fan2");
      break;
   }

   */
При нажатии на кнопки в передатчике, все нормально отправляется и я вижу это на приёмнике в порту.

1694283499405.png

Вопрос. Как то что "прилетело" и вывелось в порт, положить в переменную, чтобы можно было дальше с ней работать? Можно ли сразу положить в переменную минуя порт?
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,703
474
@Старик Похабыч, так вроде пишет принятые данные в монитор порта Serial. С целью посмотреть. Как по мне - то здесь всё правильно.

Можно ли сразу положить в переменную минуя порт?
Можно, кладите. ;)

Как то что "прилетело" и вывелось в порт, положить в переменную, чтобы можно было дальше с ней работать?
Про данные и переменные, а так же как с ними работать, можно прочитать здесь . Но лучше в учебнике. Например, Кернигана и Риччи, или Страуструпа.
Если хотите самостоятельно писать программы - начинать надо с изучения языка программирования. Причём, обязательно по учебнику, а не по каким-то сраным видосикам. А уж потом "осваивать Ардуино".
Без знания языка вы только и будете заниматься тем, что бегать по форумам и задавать дурацкие вопросы. Хотите идти по этому пути - дело ваше.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,277
1,303
Москва
@Старик Похабыч, так вроде пишет принятые данные в монитор порта Serial. С целью посмотреть. Как по мне - то здесь всё правильно.
Точно, я не туда посмотрел . Мне показалось, что он из из приемника читает write-ом. Вот что значит 2 лишние капли валерьянки.

Если данные 1 байт, то все очень просто,
rx.buffer[0] и будет этот байт,