Помогите в скетче.

jaguar32
Offline
Зарегистрирован: 02.03.2017

#include <VirtualWire.h>



void setup()

{

Serial.begin(9600);

vw_setup(200);

vw_set_tx_pin(7);

}



void loop()

{

if(Serial.available())

{

char c = Serial.read();



if(c == '1')

{

vw_send((uint8_t *)c, 1);

}

else if(c == '0')

{

vw_send((uint8_t *)c, 1);

}



if(c == '2')

{

vw_send((uint8_t *)c, 1);

}

else if(c == '3')

{

vw_send((uint8_t *)c, 1);

}



}

}



Этот скетч для 433MHz с радиопередатчика. Но этот скетч работает только с монитором порта. Когда в монитор порте отправляю 1 то приёмник принимает этот сигнал и реле срабатывает. Помогите что бы 

if(c == '1')

{

vw_send((uint8_t *)c, 1);

}

else if(c == '0')

{

vw_send((uint8_t *)c, 1);

}

работал с принажатый кнопкой.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
sigma_shig
Offline
Зарегистрирован: 30.12.2016

Ну, во-первых, такой код очень больно ранит глаз программиста :). Зачем вам столько if, если реакция на них одинаковая? Как звучит логика? "Если нажаты 0,1,2,3 то отправлять это значение в передатчик"? Тогда это лучше написать так:

if (c=='0' || c=='1' || c=='2' || c=='3') {
vw_send((uint8_t*)c,1);
} 

А вот фразу "работал с принажатый кнопкой." не понял вообще. Да, и еще нужно понимать, что 1 не равна '1'