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