Seguidor de linea

Dependencies:   Servo mbed

Committer:
AndreaC
Date:
Wed Dec 03 13:50:07 2014 +0000
Revision:
0:68aff7f85b84
Seguidor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndreaC 0:68aff7f85b84 1 #include "mbed.h"
AndreaC 0:68aff7f85b84 2 #include "Servo.h"
AndreaC 0:68aff7f85b84 3
AndreaC 0:68aff7f85b84 4 // Declaracion de las fotoresistencias
AndreaC 0:68aff7f85b84 5 AnalogIn Fotoresistencia1(PTB1);
AndreaC 0:68aff7f85b84 6 AnalogIn Fotoresistencia2(PTB2);
AndreaC 0:68aff7f85b84 7
AndreaC 0:68aff7f85b84 8 // Declaracion de la comunicacion serial
AndreaC 0:68aff7f85b84 9 Serial pc(USBTX,USBRX);
AndreaC 0:68aff7f85b84 10
AndreaC 0:68aff7f85b84 11 // Declaracion del servo
AndreaC 0:68aff7f85b84 12 PwmOut Servo(PTD4);
AndreaC 0:68aff7f85b84 13
AndreaC 0:68aff7f85b84 14 // Declaracion del motor DC
AndreaC 0:68aff7f85b84 15 PwmOut motorPin(PTC1);
AndreaC 0:68aff7f85b84 16
AndreaC 0:68aff7f85b84 17 int main()
AndreaC 0:68aff7f85b84 18 { // Inicializa el programa
AndreaC 0:68aff7f85b84 19 Servo.period_ms(20); // Establece el periodo Pwm del servo
AndreaC 0:68aff7f85b84 20
AndreaC 0:68aff7f85b84 21 while(1)
AndreaC 0:68aff7f85b84 22 { // Inicializa un ciclo infinito
AndreaC 0:68aff7f85b84 23
AndreaC 0:68aff7f85b84 24 motorPin = 1; // Se inicializa el motor DC
AndreaC 0:68aff7f85b84 25
AndreaC 0:68aff7f85b84 26 // Asigna a valorFotoresistencia el valor obtenido del sensor
AndreaC 0:68aff7f85b84 27 float valorFotoresistencia1 = Fotoresistencia1.read();
AndreaC 0:68aff7f85b84 28 float valorFotoresistencia2 = Fotoresistencia2.read();
AndreaC 0:68aff7f85b84 29
AndreaC 0:68aff7f85b84 30 // Imprime para cuestiones de calibracion
AndreaC 0:68aff7f85b84 31 pc.printf("%f\t%f\n", valorFotoresistencia1, valorFotoresistencia2);
AndreaC 0:68aff7f85b84 32 wait(0.1); // Espera de 0.1 segundos
AndreaC 0:68aff7f85b84 33
AndreaC 0:68aff7f85b84 34 while (valorFotoresistencia2 == 0.02 && valorFotoresistencia1 == 0.02)
AndreaC 0:68aff7f85b84 35 { // Mientras ambas fotoresistencias detecten blanco...
AndreaC 0:68aff7f85b84 36 Servo.pulsewidth_us(1800); // El servo se mantiene en su posicion inicial, hacia adelante
AndreaC 0:68aff7f85b84 37 }
AndreaC 0:68aff7f85b84 38
AndreaC 0:68aff7f85b84 39 while (valorFotoresistencia2 = 0.02 && valorFotoresistencia1 == 0.01)
AndreaC 0:68aff7f85b84 40 { // Mientras una resistencia lea blanco y otra negro...
AndreaC 0:68aff7f85b84 41 int movimiento = 1800; // Se declara una variable de nombre movimiento con un valor de 1500
AndreaC 0:68aff7f85b84 42 movimiento = movimiento + 35; // A este valor se le agrega 35
AndreaC 0:68aff7f85b84 43 Servo.pulsewidth_us(movimiento); // El servo se mueve a la posicion que indique la variable movimiento
AndreaC 0:68aff7f85b84 44 {
AndreaC 0:68aff7f85b84 45
AndreaC 0:68aff7f85b84 46 while (valorFotoresistencia 2 == 0.01 && valorFotoresistencia1 == 0.02)
AndreaC 0:68aff7f85b84 47 { // Mientras una resistencia lea negro y la otra blanco...
AndreaC 0:68aff7f85b84 48 int movimiento = 1800; // Se declara una variable de nombre movimiento con un valor de 1500
AndreaC 0:68aff7f85b84 49 movimiento = movimiento - 35; // A este valor se le resta 35
AndreaC 0:68aff7f85b84 50 Servo.pulsewidth_us(movimiento); // El servo se mueve a la posicion que indique la variable movimiento
AndreaC 0:68aff7f85b84 51 }
AndreaC 0:68aff7f85b84 52 }
AndreaC 0:68aff7f85b84 53 }