UTEC

UTEC
Catedra: Principios de Robotica

martes, 7 de junio de 2011

Código del Programa

Programa AVR-BASCON
Para la programación de el Microcontrolador


Digitación del Programa



Código del Programa


'*************************
'Carro Seguidor de Linea / Bigotes (Detector de Obstaculos)
'ATMEGA168
'CNY70
'Principios de Robotica
'Lucia, Rafael, Carmen y Ricardo
'*************************

'//Directivas
$regfile = "m168def.dat"
$crystal = 8000000

'//Configuraciones
 Configurar los pines de entrada y salidas, asi como los manejos de las velocidades de los motores

'//Alias
Asignaciones de Varias

'Sensores Alias Pinc

Big_1 Alias Pind.0
Big_2 Alias Pind.1

Led_centro Alias Portd.2


Giro_izq Alias Pwm1a
Giro_der Alias Pwm1b



Buzzer Alias Portb.5

'//Dimensionamiento

Dimencionamientos de las variables a utilizar


'// Inicializaciones

Sensores = 0 : Portb.6 = 1
Waitms 200 : Portb.6 = 0
Sound Buzzer , 500 , 500


Portd.2 = 1
Waitms 500
Portd.2 = 0
Waitms 500
Portd.2 = 1
Waitms 500
Portd.2 = 0
Waitms 500
Portd.2 = 1
Waitms 500


Portb.6 = 1 : Portb.7 = 1 : Portd.5 = 1 : Portd.6 = 1
Waitms 200
Portb.6 = 1 : Portb.7 = 0 : Portd.5 = 1 : Portd.6 = 1
Waitms 200
Portb.6 = 1 : Portb.7 = 1 : Portd.5 = 0 : Portd.6 = 1
Waitms 200
Portb.6 = 0 : Portb.7 = 1 : Portd.5 = 1 : Portd.6 = 1
Waitms 200
Portb.6 = 0 : Portb.7 = 1 : Portd.5 = 1 : Portd.6 = 0
Waitms 200
Portb.6 = 1 : Portb.7 = 0 : Portd.5 = 0 : Portd.6 = 1
Waitms 200



'//Programa Principal

Inicio:


 If Big_1 = 0 And Big_2 = 1 Then Gosub Obstaculo_d
 If Big_1 = 1 And Big_2 = 0 Then Gosub Obstaculo_i
 If Big_1 = 1 And Big_2 = 1 Then Gosub Obstaculo_frente




If Sen_2 = 0 And Sen_3 = 0 And Sen_4 = 0 And Sen_5 = 0 And Big_1 = 0 And Big_2 = 0 Then Goto Detenido
If Sen_2 = 1 And Sen_3 = 0 And Sen_4 = 0 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Adelante


If Sen_2 = 1 And Sen_3 = 0 And Sen_4 = 1 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_i_v1
If Sen_2 = 0 And Sen_3 = 0 And Sen_4 = 1 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_i_v2
If Sen_2 = 0 And Sen_3 = 1 And Sen_4 = 1 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_i_v3

If Sen_2 = 1 And Sen_3 = 1 And Sen_4 = 0 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_d_v1
If Sen_2 = 1 And Sen_3 = 1 And Sen_4 = 0 And Sen_5 = 0 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_d_v2
If Sen_2 = 1 And Sen_3 = 1 And Sen_4 = 1 And Sen_5 = 0 And Big_1 = 0 And Big_2 = 0 Then Goto Giro_d_v3


If Sen_2 = 1 And Sen_3 = 1 And Sen_4 = 1 And Sen_5 = 1 And Big_1 = 0 And Big_2 = 0 Then Goto Rutina


Goto Inicio


'//Subrutinas

Obstaculo_d:
Sound Buzzer , 125 , 200
Pwm1a = 0 : Portb.0 = 0 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 0 : Portb.3 = 0
Waitms 500
Pwm1a = 70 : Portb.0 = 0 : Portd.7 = 1
Pwm1b = 70 : Portb.4 = 0 : Portb.3 = 1
Waitms 750
Pwm1a = 75 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 75 : Portb.4 = 0 : Portb.3 = 1
Waitms 500
Goto Inicio

Obstaculo_i:
Sound Buzzer , 125 , 200
Pwm1a = 0 : Portb.0 = 0 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 0 : Portb.3 = 0
Waitms 500
Pwm1a = 70 : Portb.0 = 0 : Portd.7 = 1
Pwm1b = 70 : Portb.4 = 0 : Portb.3 = 1
Waitms 750
Pwm1a = 75 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 75 : Portb.4 = 0 : Portb.3 = 1
Waitms 250
Goto Inicio


Obstaculo_frente:
Sound Buzzer , 125 , 200
Pwm1a = 0 : Portb.0 = 0 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 0 : Portb.3 = 0
Waitms 500
Pwm1a = 70 : Portb.0 = 0 : Portd.7 = 1
Pwm1b = 70 : Portb.4 = 0 : Portb.3 = 1
Waitms 750
Pwm1a = 75 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 75 : Portb.4 = 0 : Portb.3 = 1
Waitms 250
Goto Inicio


Detenido:
Pwm1a = 0 : Portb.0 = 1 : Portd.7 = 1
Pwm1b = 0 : Portb.4 = 1 : Portb.3 = 1
Goto Inicio


Adelante:

Pwm1a = 65 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 65 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio


Atras:
Pwm1a = 65 : Portb.0 = 0 : Portd.7 = 1
Pwm1b = 65 : Portb.4 = 0 : Portb.3 = 1
Goto Inicio

'giro lentisimo
Giro_d_v1:
Pwm1a = 60 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 50 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_d_v2:
Pwm1a = 60 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 40 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_d_v3:
Pwm1a = 60 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_d_v4:
Pwm1a = 75 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_d_v5:
Pwm1a = 75 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 0 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio



Giro_i_v1:
Pwm1a = 50 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 60 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_i_v2:
Pwm1a = 40 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 60 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_i_v3:
Pwm1a = 0 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 60 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_i_v4:
Pwm1a = 65 : Portb.0 = 1 : Portd.7 = 1
Pwm1b = 65 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Giro_i_v5:
Pwm1a = 65 : Portb.0 = 0 : Portd.7 = 1
Pwm1b = 65 : Portb.4 = 1 : Portb.3 = 0
Goto Inicio

Rutina:
Pwm1a = 60 : Portb.0 = 1 : Portd.7 = 0
Pwm1b = 60 : Portb.4 = 0 : Portb.3 = 1
Goto Inicio


End

No hay comentarios:

Publicar un comentario