Veamos, el OUTPUT_FLOAT pone un pin en estado flotante osea lo pone en input. Para que? El driver L293B exige dos pines mas (EN1/2 y EN3/4) que activan y desactivan el par de lineas para cada motor. Despues de probar en proteus, descubri que podia parar los motores, poniendo en estado flotante los pines que excitan el motor. Asi, EN1/2 y EN3/4 los pongo a VCC y me ahorro dos pines mas.
Siguiente cuestion... en un ataque de autoestima, decidí que mi BOT debia ser excesivamente complicado... luego me tranquilice un poco y me puse manos a la obra. Resultado por ahora:
El robot tiene dos modos de movimiento:
1- Rastreo normal (libre albedrio, cuando toca pared retrocede y se mueve pa otro sitio).
2- Movimiento segun patron de conducta
Es este segundo modo en el q me concentro. La cuestion es, que el robot se mueve de acuerdo a las ordenes que lleva almacenadas en un array.
Asi, al principio el programa "lee" la primera orden del array, y de ahi sacará un sentido de giro (adelante,atras,izda,dcha) y una cantidad de ciclos (0...65535). Entonces, el TMR1 se pone en marcha, de modo que cada milisegundo salte la interrupcion, y decremente el numero de ciclos.
De mientras, en el MAIN se dan ordenes al motor segun el sentido, y se sigue adelante con el asunto, hasta que ciclos=0. Entonces, un flag se activa, y en consecuencia se salta del MAIN otra vez al interprete, y se lee la siguiente orden del array.
Asi suma y sigue hasta que acaba el array, una vez finalizado volveria a empezar del principio.
Por poneros un ejemplo de array: "SFA1000L400B5000R2000A5000EF" que se traduce como "Comienza Archivo, Adelante 1000ms, Izda 400ms, Atras 5000ms, Derecha 2000ms, Adelante 5000ms, Final Archivo".
Ah, los patrones de conducta estarian almacenados en una eeprom 24LC512 (caberian bastantes), y se seleccionarian mediante el LCD y los botones.
Cuando tenga mas os cuentoooo
salu2