Muy buenas a todos! Hace poco que corro por este foro y flipo con las ganas de colaborar que desprende este sitio!
Pues bien,Hace un par de años hice un pez robot lamado 16-FISH-84 que me gusto mucho, lo probe muy poco y al final no supe encontrar una silicona para con un molde hacer el cuerpo asi que el cuerpo era muy cutre... pero funcionaba. La cuestion es que quiero colgar aqui lo poco que queda de aquel proyecto, mas que nada por si a alguien le pudiera interesar o servir para algo... El robot funciona con un 16F84A como se puede deducir ,i la rutina de movimiento de la cola esta esrita en ASM... puede ser que la veais i digais que soy un primo eh. yo aviso .
La cuestion es que el robot tiene 3 servos i dos fotoresistores nada mas ah bueno y una pila de 9v.
La placa del pic esta en el frontal inclinada.
el tercer servo es para mover unos alerones a modo de aletas en la parte frontal del robot porque tiene una flotabilidad neutra i con esas aletas y un poco de velocidad puede subir o bajar ,(aunque no mucho) i solo lo utilize un dia.
Mola por que lo haces nadar en circulo en un acuario (choca bastante y es bastante chungo) pero si se acerca al cristal , tu le acercas mucho la mano al cristal del acuario , nota la diferencia de luz y hace un movimiento rapido que siempre es el mismo pero mola jejejejeje
del robot ya no queda nada murio hace tiempo, pero voy a poner un dibujito i el programa en asm para nadar en linea recta sin sensores
Espero que no este haciendo el primo !
Feliz Navidad!
el codigo: (espero no colgarme con el tamaño del post...)
;*******************************************************************
; Programa robot 16-FISH-84. Jaume Bonet Morató Octubre 2004
;*******************************************************************
list P=16F84
RADIX HEX
INCLUDE jb16f84.inc
CONTA equ 0x0C ;Control bucle PAUSA
CONTADEU equ 0x0D ;Control bucle PAUSATEN
SETP equ 0x0E ;Valor gir servo 1 (de 128 a 255)
BAND equ d'16' ;Bandera
CNT equ d'17'
SETPB equ d'18' ;Puls servo 2
PIN equ d'19'
FICARR equ d'20' ;Fi de recorregut
FICARR_B equ d'21'
org 0
bsf STATUS,5
movlw b'00000000'
movwf PA
movlw b'11110000'
movwf PB
bcf STATUS,5
clrf PB
bcf PB,0
;----------------------------------------------------------
INICI movlw d'220'
movwf SETP
movlw d'220'
movwf SETPB
bsf CNT,0
;----------------------------------------------------------
LOOP btfsc CNT,0
goto SUB_A
BUCLE_B btfsc CNT,1
goto SUB_B
BUCLE_C btfsc CNT,2
goto ADD_A
BUCLE_D btfsc CNT,3
goto ADD_B
goto LOOP
;-----------------------------------------------------------
SUB_A movlw 0x00
movwf PIN
movlw d'1'
subwf SETP
call MODPULS
btfss SETP,6 ;si arriba a 190
goto SUMA_A
goto LOOP
;-----------------------------------------------------------
SUB_B movlw 0xFF
movwf PIN
movlw d'1'
subwf SETPB
call MODPULS_B
btfss SETPB,6
goto SUMA_B
goto LOOP
;------------------------------------------------------------
ADD_A movlw 0x00
movwf PIN
movlw d'1'
addwf SETP
call MODPULS
movlw d'220' ;final de carrera A
movwf FICARR
movfw SETP
subwf FICARR
btfss STATUS,2
goto LOOP
goto SUMA_C
;-------------------------------------------------------------
ADD_B movlw 0xFF
movwf PIN
movlw d'1'
addwf SETPB
call MODPULS_B
movlw d'220' ;final de carrera B
movwf FICARR_B
movfw SETPB
subwf FICARR_B
btfss STATUS,2
goto LOOP
goto SUMA_D
;-------------------------------------------------------------
SUMA_A bcf CNT,0
bsf CNT,1
goto LOOP
SUMA_B bcf CNT,1
bsf CNT,2
goto LOOP
SUMA_C bcf CNT,2
bsf CNT,3
movlw d'220'
movwf SETP
goto LOOP
SUMA_D bcf CNT,3
movlw d'220'
movwf SETPB
clrf CNT
bsf CNT,0
goto LOOP
;-------------------------------------------------------------
MODPULS bsf PB,1
movfw SETP ;**128 = 1Ms , 255 = 2Ms**
movwf CONTA
call PAUSA
bcf PB,1
movlw 0xFF
movwf CONTADEU
movlw d'12'
movwf CONTA
call PAUSATEN
Return
;------------------------------------------------------------
MODPULS_B
bsf PB,3
movfw SETPB ;**128 = 1Ms , 255 = 2Ms**
movwf CONTA
call PAUSA
bcf PB,3
movlw 0xFF
movwf CONTADEU
movlw d'12'
movwf CONTA
call PAUSATEN
Return
;------------------------------------------------------------
PAUSA nop
nop
nop
nop
nop
decfsz CONTA
goto PAUSA
Return
;------------------------------------------------------------
PAUSATEN
decfsz CONTA ;10.2 Ms
goto PAUSATEN
movlw d'12'
movwf CONTA
decfsz CONTADEU
goto PAUSATEN
Return
;------------------------------------------------------------
End