author
1Comments

Tell us about yourself!

  • #include //Integración de la librería Stepper.h para manejar motores a pasos#include //Integración de la librería math.h para diseño de operaciones matemáticas básicas//Declaración de constantes#define motorStephor 200 //Número de pasos del motor horizontal#define motorStepver 200 //Número de pasos del motor vertical//Uso de las entradas digitales de Arduino#define motor1hor 6#define motor2hor 7#define motor1ver 8#define motor2ver 9//Declaración de variablesint prom; //Promedio de los cuatroLDRint pyr; //Valor del fotodiodoint h=60; //Pasos ejecutados por el motor horizontalint v=5; //Pasos ejecutados por el motor verticalint ltsensor; //Valor del LDR superior izquierdoint rtsensor; //Valor del LDR superior derec…

    see more »

    #include //Integración de la librería Stepper.h para manejar motores a pasos#include //Integración de la librería math.h para diseño de operaciones matemáticas básicas//Declaración de constantes#define motorStephor 200 //Número de pasos del motor horizontal#define motorStepver 200 //Número de pasos del motor vertical//Uso de las entradas digitales de Arduino#define motor1hor 6#define motor2hor 7#define motor1ver 8#define motor2ver 9//Declaración de variablesint prom; //Promedio de los cuatroLDRint pyr; //Valor del fotodiodoint h=60; //Pasos ejecutados por el motor horizontalint v=5; //Pasos ejecutados por el motor verticalint ltsensor; //Valor del LDR superior izquierdoint rtsensor; //Valor del LDR superior derechoint rdsensor; //Valor del LDR inferior izquierdoint ldsensor; //Valor del LDR inferior derechoint sen=50; //Sensibilidadint dil; //Promedio del conjunto de LDR izquierdoint dit; //Promedio del conjunto de LDR arribaint dir; //Promedio del conjunto de LDR derechoint did; //Promedio del conjunto de LDR abajoint diff; //Diferencia entre los LDR de arriba con los abajoint diff2; //Diferencia entre los LDR de la izquierda con los de la derechaint pup; //Interruptor superiorint pdown; //Interruptor inferiorStepper horStep (motorStephor, motor1hor, motor2hor); //Inicia la librería StepperStepper verStep (motorStepver, motor1ver, motor2ver);//Inicialización del programavoid setup (){horStep.setSpeed (30); //RPM del motor horizontalverStep.setSpeed (10); //RPM del motor vertical//Inicialización del puerto Serial COMSerial.begin(9600);//Configuración de pines como entradaspinMode (pyr, INPUT);pinMode(ltsensor, INPUT);pinMode(rtsensor, INPUT);pinMode(ldsensor, INPUT);pinMode(rdsensor, INPUT);pinMode(pup, INPUT);pinMode(pdown, INPUT);}//Inicialización del buclevoid loop (){do //Comienza la estructura de control repetitiva do-while{pyr = analogRead(0); //Lectura de las entradas analógicasltsensor = analogRead(1)*1.022; //(La constante es para calibrar las fotorresistencias)rtsensor = analogRead(2)*1.007;ldsensor = analogRead(3);rdsensor= analogRead(4)*1.013;pup = digitalRead (3); //Lectura de los interruptorespdown = digitalRead(4);prom= (ltsensor + ldsensor + rtsensor + rdsensor)/4; //Promedio de los cuatro sensoresdit = (ltsensor + rtsensor)/2; //Promedio de los sensores de arribadid = (ldsensor + rdsensor)/2; //Promedio de los sensores de abajodiff =(dit - did); //Diferencia entre el nivel de radiacióndelay (50);if ((pyr==0)&&(pup==HIGH)&&(prom<=8)|| (pyr==0)&&(pdown==HIGH)&&(prom<=8))//Si el valor de pyr es cero y el promedio de los sensores es igual o menor a 8 y los interruptores tengan el rangomov(); //Ejecutar la función “mov”}while ( (pyr==0)&&(pup==HIGH)&&(prom<=8)|| (pyr==0)&&(pdown==HIGH)&&(prom<=8));//Mientras el valor de pyr sea cero y el promedio de los sensores sea igual o menor a 8 y los interruptores tengan el rango, sigue ejecutándose el bucleif (-1*sen > diff || diff > sen) //Si la diferencia medida entre el conjunto de sensores es mayor o menor al valor de la sensibilidad{if(dit < did) //Si el valor medio de los sensores de arriba es más pequeña que la de los sensores de abajo{if (pdown==HIGH) //Si pdown se activa{verStep.step (0); //Parar el motor en el sentido verticaldelay (10);}else if (pdown==LOW) //Si pdown esta inactivo{verStep.step (v); //Gira el motor hacia arribadelay (50);}} me parece que esta cerrando el bloque void loopelse if(dit > did)//Si el valor medio de los sensores de abajo es más pequeña que la de los sensores de arriba{if (pup==HIGH) //Si pup se activa{verStep.step (0); //Para el motor en el sentido verticaldelay (10);}else if (pup==LOW) //Si pup esta inactivo{verStep.step (-v); //Gira el motor hacia abajodelay (50);}}else //Para cualquier otro caso{verStep.step (0); //Parar el motor en el sentido verticaldelay (10);}}delay (10);pyr = analogRead (0); //Lectura de los sensores nuevamente por posible cambioltsensor = analogRead(1)*1.022;rtsensor = analogRead(2)*1.007;ldsensor = analogRead(3);rdsensor= analogRead(4)*1.013;dil = (ltsensor + ldsensor)/2; //Promedio de los sensores de la izquierdadir = (rtsensor + rdsensor)/2; //Promedio de los sensores de la derechadiff2 = (dil - dir); //Diferencia entre el nivel de radiacióndelay (50);if (-1*sen > diff2 || diff2 > sen) //Si la diferencia medida entre el conjunto de sensores es mayor o menor al valor de la sensibilidad{if(dil < dir) //Si el valor medio de los sensores de la izquierda es más pequeña que la de los sensores de la derecha{horStep.step (h); //Girar motor hacia la derechadelay (10);}else if(dil > dir)//Si el valor medio de los sensores de la izquierda es más grande que la de los sensores de la derecha{horStep.step (-h); //Girar el motor hacia la izquierdadelay (10);}else //Para cualquier otro caso{horStep.step (0); //Parar el motor en el sentido horizontaldelay (10);}}delay(10);}//Función “mov”void mov (){if (pup==HIGH) //Si pup está activo{verStep.step (72); //Gira 72 pasos hacia arribadelay (50);}else if (pdown==HIGH) //Si pdown está activo{verStep.step (-72); //Gira 72 pasos hacia abajodelay (50);}delay (10);}

    View Instructable »