Вопрос по подпрограмме (функции)

selan61
Offline
Зарегистрирован: 15.12.2017

Добрый день! Я начинающий пользователь 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);
   } 
}
b707
Offline
Зарегистрирован: 26.05.2017

потому что вызывать функцию в loop() надо без void.

Вы бы хоть чуть-чуть мануалы почитали, прежде чем такой глупый вопрос задавать.

selan61
Offline
Зарегистрирован: 15.12.2017

Спасибо за ответ, виноват, глюканул что то.