Buenos días muchachos.
Buscando posibles soluciones para un proyecto que estaba encarando, me encontré con los "protothreads". Me parece una herramienta que puede ser utilísima, peeero... No logro compilar mi código.
La librería fue desarrollada por Adam Dunkels y está disponible en su sitio personal o en el administrador de librerías del IDE de ARduino.
El tutorial que seguí es el siguiente blinkea 3 leds conectados a los pines 7, 8 y 9 a distintas velocidades. Pueden verlo en:
y el código del ejemplo es:
#include <pt.h>
struct pt hilo1;
struct pt hilo2;
struct pt hilo3;
void setup() {
PT_INIT(&hilo1);
PT_INIT(&hilo2);
PT_INIT(&hilo3);
}
void loop() {
parpadeo(&hilo1);
parpadeo(&hilo2);
parpadeo(&hilo3);
}
void parpadeo(struct pt *pt) {
PT_BEGIN(pt);
// void setup() {
static long t = 0;
pinMode(10, OUTPUT);
// }
do {
// void loop() {
digitalWrite(10, HIGH);
t = millis();
PT_WAIT_WHILE(pt, (millis()-t)<1000);
digitalWrite(10, LOW);
t = millis();
PT_WAIT_UNTIL(pt, (millis()-t)>=1000);
// }
} while(true);
PT_END(pt);
}
void parpadeo2(struct pt *pt) {
PT_BEGIN(pt);
// void setup() {
static long t = 0;
pinMode(9, OUTPUT);
// }
do {
// void loop() {
digitalWrite(9, HIGH);
t = millis();
PT_WAIT_WHILE(pt, (millis()-t)<500);
digitalWrite(9, LOW);
t = millis();
PT_WAIT_UNTIL(pt, (millis()-t)>=500);
// }
} while(true);
PT_END(pt);
}
void parpadeo3(struct pt *pt) {
PT_BEGIN(pt);
// void setup() {
static long t = 0;
pinMode(8, OUTPUT);
// }
do {
// void loop() {
digitalWrite(8, HIGH);
t = millis();
PT_WAIT_WHILE(pt, (millis()-t)<250);
digitalWrite(8, LOW);
t = millis();
PT_WAIT_UNTIL(pt, (millis()-t)>=250);
// }
} while(true);
PT_END(pt);
}
Cuestión que cuando quiero verificarlo me tira una serie de errores (adjunto un txt con el resultado de la salida por si alguien le quiere echar una ojeada).
exit.txt (38.7 KB)