Buenas tardes!
Llevo un tiempo trasteando con Arduino por la necesidad de automatizar y darle algo de vidilla a mi pasión princial: el modelismo. Estoy acostumbrado a investigar y solucionar mi cuenta los múltiples problemas y dudas que me van surgiendo, en cuanto a Arduino y todo. Me cuesta un poco la programación porque soy muuuy de letras (de otro tipo de letras!) pero voy tirando porque, además, Arduino tiene algo de droga.
Es la primera vez decido pedir algo de ayuda, porque llevo casi una semana intentando programar una maqueta que he hecho del popular ZOLTAR de la peli de BIG (aquí video con el funcionamiento), y ya no salgo de mi propio void loop XD Algo desesperadillo estoy ya. He investigado millis, whiles..., todo, pero llega un punto en que no entiendo nada o no sé si voy por el lugar correcto. Si lo llevo a saber utilizo un motor DC y ea, pero como ya he comprado e instalado el stepper, he de apechugar jaja
Mi problema es, creo, sencillo: Necesito que el stepper 28byj-48 que mueve la cabeza de Zoltar funcione SIEMPRE mientras tiene lugar una secuencia muy sencilla de leds que animan los paneles de info. Es decir, dos Void loops simultaneos.
He leído que en este caso es imposible utilizar el DELAY para la secuencia de Leds, que es mejor usar millis, pero lo he intentado y se escapa a mi comprensión. De verdad que agradecería enormemente algo de luz al respecto, la que sea.
Estoy usando Arduino NANO. Este es el código que he hecho:
// Include the Arduino Stepper.h library:
#include <Stepper.h>
int PANEL1 = 3; //OPCION 1 PANEL
int PANEL2 = 4; //OPCION 2 PANEl
int TEXTFRONT = 5; //TEXTO FRONTAL
int OJOS = 7; //OJOS
// Define number of steps per rotation:
const int stepsPerRevolution = 600;
// Create stepper object called 'myStepper', note the pin order:
Stepper myStepper = Stepper(stepsPerRevolution, 9, 11, 10, 12);
void setup() {
myStepper.setSpeed(45);
// Begin Serial communication at a baud rate of 9600:
Serial.begin(9600);
pinMode(PANEL1 , OUTPUT);
pinMode(PANEL2 , OUTPUT);
pinMode(TEXTFRONT , OUTPUT);
pinMode(OJOS , OUTPUT);
}
void loop() {
// Step one revolution in one direction:
digitalWrite(OJOS , HIGH);
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
digitalWrite (PANEL1 , HIGH);
delay(1500);
digitalWrite(PANEL2 , HIGH);
delay(1500);
digitalWrite(TEXTFRONT , HIGH);
delay(100);
digitalWrite(TEXTFRONT, LOW);
delay(100);
digitalWrite(TEXTFRONT , HIGH);
delay(100);
digitalWrite(TEXTFRONT, LOW);
delay(100);
digitalWrite(TEXTFRONT , HIGH);
delay(1000);
digitalWrite(OJOS , LOW);
delay(150);
digitalWrite(OJOS , HIGH);
delay(100);
digitalWrite(OJOS , LOW);
delay(150);
digitalWrite(OJOS , HIGH);
delay(100);
digitalWrite(OJOS , LOW);
delay(150);
digitalWrite(OJOS , HIGH);
digitalWrite(TEXTFRONT, LOW);
digitalWrite(PANEL1 , LOW);
digitalWrite(PANEL2 , LOW);
delay(100);
}
