#c #arduino #arduino-uno
#c #arduino #arduino-uno
Вопрос:
Привет всем, я новичок в Arduino и c , и у меня возникли проблемы с некоторым кодом, и я надеялся, что кто-нибудь просто скажет мне, что не так, и я смогу это исправить.
По сути, я пытаюсь заставить светофор и скрипт приемника запускаться одновременно. В настоящее время происходит то, что по завершении светового цикла код приемника выполняется один раз и фиксируется только один передаваемый сигнал. Я хочу, чтобы он был постоянно готов к приему информации от передатчика.
Я попытался создать две отдельные функции, но они по-прежнему либо не работают (не горят), либо выполняются один раз за цикл
#include <RH_ASK.h>
#include <SPI.h>
int ledPins[] = {2,3,4};
RH_ASK rf_driver;
void setup() {
int index;
for (index = 0; index <= 2; index ) { // Intilaize ASK object
rf_driver.init();
// Setup Serial Moniter
Serial.begin(9600);
}
{
pinMode(ledPins[index], OUTPUT);
}
}
void loop() { /****** LOOP: RUNS CONSTANTLY ******/
int oneAfterAnotherLoop();
int RadioController();
} //--(end main loop )---
void oneAfterAnotherLoop() {
int delayTime = 100;
digitalWrite(ledPins[0], HIGH);
delay(4000);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], HIGH);
delay(5000);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], HIGH);
delay(4000);
digitalWrite(ledPins[2], LOW);
}
void RadioController() {
uint8_t buf[19];
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, amp;buflen)) {
Serial.print("Message Recived: ");
Serial.println((char*)buf);
}
}
Комментарии:
1. Arduinos — это только один поток AFAIK. Таким образом, вам всегда придется приостанавливать одно, чтобы делать другое.
2. не используйте
delay
. Делайте все в одном цикле. Проверьте millis для последовательности светодиодов. Проверьте, не блокируется ли путь, если есть доступные данные, затем прочитайте его, затем проанализируйте и, если все в порядке, выведите сообщение3. Прочитайте здесь arduinoplusplus.wordpress.com/2019/07/06 / … Также обратите внимание, что если у вас есть Arduino на базе STM32, работающий под управлением FreeRTOS , вы действительно можете запускать несколько задач / задач. Удачи!
4. Посмотрите другие комментарии, а также взгляните на вашу setup(); Ваш цикл for — беспорядок и не устанавливает все выводы для вывода.