Вопрос по подпрограмме (функции)
- Войдите на сайт для отправки комментариев
Втр, 13/02/2018 - 14:21
Добрый день! Я начинающий пользователь arduino, посему прошу не ругать за вопрос. Почему так работает
#include <VirtualWire.h>
void setup(){
//настройка virtualWire
vw_set_tx_pin(12); //пин передачи
vw_set_rx_pin(11); //пин приема
vw_set_ptt_inverted(true);
vw_setup(9000); //пин передачи
vw_rx_start(); // Старт мониторинга эфира
Serial.begin(9600);
}
void loop(){
char buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения
char buflen = VW_MAX_MESSAGE_LEN; // Длина буфера
if (vw_get_message(buf, &buflen)) { // Если принято сообщение
if (buf[0] != 'X') return; // Если сообщение адресовано не нам, выходим
char command = buf[2]; // Команда находится на индексе 2
int i = 3; // Числовой параметр начинается с индекса 4
int number = 0;
// Поскольку передача идет посимвольно, преобразуем набор символов в число
while (buf[i] != ' ')
{
number *= 10;
number += buf[i] - '0';
i++;
}
Serial.print(command);
Serial.print(" ");
Serial.println(number);
}
}
Создаю подпрограмму (функцию) void receiv(), а она не работает.
#include <VirtualWire.h>
void setup(){
//настройка virtualWire
vw_set_tx_pin(12); //пин передачи
vw_set_rx_pin(11); //пин приема
vw_set_ptt_inverted(true);
vw_setup(9000); //пин передачи
vw_rx_start(); // Старт мониторинга эфира
Serial.begin(9600);
}
//----------------------------------------------------------------
void loop(){
void receiv();
delay(1000);
}
void receiv() {
char buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения
char buflen = VW_MAX_MESSAGE_LEN; // Длина буфера
if (vw_get_message(buf, &buflen)) { // Если принято сообщение
if (buf[0] != 'X') return; // Если сообщение адресовано не нам, выходим
char command = buf[2]; // Команда находится на индексе 2
int i = 3; // Числовой параметр начинается с индекса 4
int number = 0;
// Поскольку передача идет посимвольно, преобразуем набор символов в число
while (buf[i] != ' ')
{
number *= 10;
number += buf[i] - '0';
i++;
}
Serial.print(command);
Serial.print(" ");
Serial.println(number);
}
}
потому что вызывать функцию в loop() надо без void.
Вы бы хоть чуть-чуть мануалы почитали, прежде чем такой глупый вопрос задавать.
Спасибо за ответ, виноват, глюканул что то.