Buenas. Estoy trabado con el código y no puedo avanzar en el proyecto! A ver quien me da una mano.
Tengo un módulo LDR que quiero asignarle la siguiente función:
- Cuando hay luz (valor 400 aprox) el motor stepper gire hacia un lado 180º y la tira de led no encienda.
- CUando NO hay luz, el motor stepper vuelva a su posición original. Y se encienda la tira de leds.
Ya el conexionado lo tengo resuelto con fuente externa para led y el paso a paso.
Ahora, las variables las deberìa declarar al principio de ambos? (LED y Stepper)
Inserto el código que ya tengo de cada uno por separado, no sé como unirlos para que funcionen en simultáneo. Gracias!
Motor:
/ *Declaramos la correspondencia entre pines del ARDUINO y el driver ULN2003. */
int motorPin1 = 8; //pin8----1N4
int motorPin2 = 9; //pin8----1N3
int motorPin3 = 10; //pin8----1N2
int motorPin4 = 11; //pin8----1N1
// Definimos la función que provocará el giro antihorario
/* El parámetro de entrada "delayTime" definirá la velocidad de giro */
void gira_antihorario(int delayTime)
{
digitalWrite(motorPin1, HIGH); // Los pines se activan en secuencia
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
//Definimos la función que provocará el giro horario
void gira_horario(int delayTime)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH); // Los pines se activan en secuencia
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
void setup() {
pinMode(motorPin1, OUTPUT); // Configuración de los PINes como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
//gira media vuelta en sentido antihorario rápido
{
for (int i=0; i <= 1000; i++){ //cantidad de vueltas
gira_antihorario(5); // velocidad, mientras mas alto el valor, va mas lento
}
delay(4000);//espera 2 segundos
//gira media vuelta en sentido horario lento
for (int i=0; i <= 1000; i++){ //cantidad de vueltas
gira_horario(2); // velocidad, mientras mas alto el valor, va mas lento
}
delay(4000);//espera 2 segundos
}
LDR y LED
// Pin donde se conectan los leds
int pinLed1 = 3;
// Pin analogico de entrada para el LDR
int pinLDR = 0;
// Variable donde se almacena el valor del LDR
int valorLDR = 0;
void setup()
{
// Configuramos como salidas los pines donde se conectan los led
pinMode(pinLed1, OUTPUT);
// Configurar el puerto serial
Serial.begin(9600);
}
void loop()
{
// Apagar todos los leds siempre que se inicia el ciclo
digitalWrite(pinLed1, LOW);
// Guardamos el valor leido del ADC en una variable
// El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional
// con respecto a la luz percibida por el LDR
valorLDR= analogRead(pinLDR);
// Devolver el valor leido a nuestro monitor serial en el IDE de Arduino
Serial.println(valorLDR);
// Encender los leds apropiados de acuerdo al valor de ADC
if(valorLDR > 400)
}
Gracias de antemano!