¿Hechicero de Warhammer en disco con LEDs y el Motor de Magnetically-Coupled (2 / 4 paso)

Paso 2: código

El código para el PIC se hizo para optimizar la duración de la batería y utilizar al azar "eventos".

Para tener la batería última tanto como sea posible, el circuito que use la menor cantidad de energía que podría figura, manteniendo la idea viva. Así que, decidí reducir la actividad inicial a un promedio de 1 flash LED o motor Mueva cada 6 segundos.

El código tiene 12 al azar «actividades», que van desde 1 LED de encendido, el motor encendido para diferentes períodos de tiempo o direcciones, esperar al azar estado. Eventos varían de 3 segundos de diferencia a más de 40 segundos de diferencia, basado en el evento aleatorio generado.

CÓDIGO

;===============================================================================
Controlador de disco
;
; -----------
; VCC -> |1 8| <-Vss
; M <> – GPIO5 |2 7| GPIO0---> LED1
; M <> – GPIO4 |3 6| GPIO1---> LED2
; GPIO3 -> |4 5| GPIO2---> LED3
; -----------
;
;===============================================================================
; Historia de revisión y notas:
; Cabecera inicial v1.0, Código 19/05/09
;
;
; (C) 5/2009
; Este código puede usarse para aprendizaje/uso/modificación de personal.
; Cualquier uso de este código en productos comerciales viola esta versión freeware.
; Para preguntas o comentarios, póngase en contacto con el circuito punto mago arroba yahoo punto com.
;-------------------------------------------------------------------------------

#include P12C672. INC

;===============================================================================
; Define
;-------------------------------------------------------------------------------

;===============================================================================
; Datos
;-------------------------------------------------------------------------------
; Variables de tiempo de mantenimiento

count1 equ 20
count2 equ 21
retardo equ 22
Randlo equ 23
Randhi equ 24
Wtemp equ 25
Temp2 equ 26
Rand equ 27
count3 equ 28

;===============================================================================
; Vectores de RESET
;
; COMPRUEBE LA CONFIGURACIÓN. PEDACITOS ANTES DE GRABAR!!!!!!
; INTOSC
; MCLR: HABILITADO
; PWRUP: HABILITADO
; TODOS LOS DEMÁS: DESACTIVAR!!!!
;
;-------------------------------------------------------------------------------
RESET_ADDR EQU 0 X 00

org RESET_ADDR
Goto Inicio
;===============================================================================
; ¡ Comience aquí!
;-------------------------------------------------------------------------------
Inicio
; Puertos de la entrada-salida de config
BCF STATUS, RP1
bsf STATUS, RP0
movlw h '08'; RA < 0-7 > salidas, PGIO3 siempre de entrada
Tris GPIO
movlw h '07'; Set GPIO a modo Digital
movwf ADCON1

; Sistema temporizador interno
movlw h'CF'; Fuente interna de Tmr0, prescale 1:256 TMR0
movwf OPTION_REG
movlw h '00'
movwf INTCON; Deshabilitar interrupciones de TMR0,
BCF STATUS, RP0

; Inicializar los registros
clrf GPIO
clrf count1
clrf count2
movlw h 045
movwf Randlo
movlw h 030
movwf Randhi

; espera 1 segundo.
debounce llamada; 0,2 seg.
llamada debounce
llamada debounce
llamada debounce
llamada debounce
;===============================================================================
; Principal
;-------------------------------------------------------------------------------
principal
Call twosec; min 2 segundos entre cada acción
RRF Randhi, W
xorwf Randlo, W
movwf Wtemp
swapf Wtemp
RLF Randhi, W
xorwf Randhi, W; LSB = xorwf(Q12,Q3)
xorwf Wtemp
RLF Wtemp
RLF Randlo
RLF Randhi

movfw Wtemp; tira al azar 16 a 7
andlw 0x0F
movwf rand
; selección aleatoria sistemática
xorlw 0 x 00; ¿0?
btfsc STATUS, Z
Goto flash1; Sí. Llame al 0
movfw rand
xorlw 0 x 01; ¿1?
btfsc STATUS, Z
Goto flash2; Sí. Llame al 1
movfw rand
xorlw 0 x 02; ¿2?
btfsc STATUS, Z
Goto flash3; Sí. Llame al 2 º
movfw rand
xorlw 0 x 03; ¿3?
btfsc STATUS, Z
Goto flashall; Sí. Llame al 3 º
movfw rand
xorlw 0 x 04; ¿4?
btfsc STATUS, Z
Goto movels; Sí. Llame al 4 º
movfw rand
xorlw 0 x 05; ¿5?
btfsc STATUS, Z
Goto movell; Sí. Llame a 5
movfw rand
xorlw 0 x 06; ¿6?
btfsc STATUS, Z
Goto movers; Sí. Llamar al 6 º
movfw rand
xorlw 0x07; ¿7?
btfsc STATUS, Z
Goto moverl; Sí. Llame al 7
movfw rand
xorlw 0x08; ¿8?
btfsc STATUS, Z
Goto moveburst; Sí. Llamar 8
movfw rand
xorlw 0 x 09; ¿9?
btfsc STATUS, Z
Goto Wait1; Sí. Llamar al 9
movfw rand
xorlw 0x0A; ¿A?
btfsc STATUS, Z
Goto Wait2; Sí. Llame a Ath
movfw rand
xorlw 0x0B; ¿B?
btfsc STATUS, Z
Goto Wait3; Sí. Llamada Bth

Goto nada; 1/4 del tiempo, nada durante 10 segundos.

flash1
BSF GPIO, 0
llamada debounce
BCF GPIO, 0
Goto principal
flash2
BSF GPIO, 1
llamada debounce
BCF GPIO, 1
Goto principal
Flash3
BSF GPIO, 2
llamada debounce
BCF GPIO, 2
Goto principal
flashall
BSF GPIO, 0
BSF GPIO, 1
BSF GPIO, 2
llamada debounce
llamada debounce
BCF GPIO, 0
BCF GPIO, 1
BCF GPIO, 2
Goto principal
movels
BSF GPIO, 4
BCF GPIO, 5
llamada debounce
BCF GPIO, 4
Goto principal
movell
BSF GPIO, 4
BCF GPIO, 5
llamada debounce
llamada debounce
BCF GPIO, 4
Goto principal
Movers
BCF GPIO, 4
BSF GPIO, 5
llamada debounce
BCF GPIO, 5
Goto principal
moverl
BCF GPIO, 4
BSF GPIO, 5
llamada debounce
llamada debounce
BCF GPIO, 5
Goto principal
moveburst
BCF GPIO, 4
BSF GPIO, 5
debounce llamada; mover derecha 3 veces, ráfagas de corta.
BCF GPIO, 5
llamada debounce
llamada debounce
BSF GPIO, 5
llamada debounce
llamada debounce
BCF GPIO, 5
llamada debounce
llamada debounce
BSF GPIO, 5
llamada debounce
BCF GPIO, 5
llamada debounce
llamada debounce
llamada debounce
llamada debounce
BSF GPIO, 4; mover izquierdas 3 veces, breves ráfagas.
BCF GPIO, 5
llamada debounce
llamada debounce
BCF GPIO, 4
llamada debounce
llamada debounce
BSF GPIO, 4
llamada debounce
llamada debounce
BCF GPIO, 4
llamada debounce
llamada debounce
BSF GPIO, 4
llamada debounce
llamada debounce
BCF GPIO, 4
llamada debounce
llamada debounce
Goto principal
Wait1; Espere segundos 1
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
Goto principal
Wait2; Espere 0,6 segundos
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
Goto principal
Wait3; Espere 4 segundos
llamar al twosec
llamar al twosec
Goto principal

nada
movlw.50; Demora 10 segundos Total
movwf count3
nothing_loop
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
decfsz count3, F
Goto nothing_loop

Goto principal

;===============================================================================
; esperar 2 segundos
;-------------------------------------------------------------------------------

twosec
movlw.10; Retardo de 2 segundos Total
movwf count3
twosec_loop
movlw.255; Retardo de 2/10 de segundo debounce.
movwf count2
llamar al pon_wait
decfsz count3, F
Goto twosec_loop
volver

;===============================================================================
; Debounce señal
; 4 ciclos de carga y llamar, 2 ciclos para volver.
; 4 Tc Mhz:: count2 = 255 -> 0,2 seg.
;-------------------------------------------------------------------------------
Debounce

movlw.127; Retardo de 1/10 segundo debounce.
movwf count2
llamar al pon_wait
volver
;-------------------------------------------------------------------------------
; count1 = d:: 775 255 ciclos ciclos 0, + 3 para volver.
;-------------------------------------------------------------------------------
pon_wait

big_loopS
movlw.255
movwf count1
short_loopS
decfsz count1, F
Goto short_loopS
decfsz count2, F
Goto big_loopS
volver

final

Artículos Relacionados

Hacer girar la luz el árbol de Navidad con LEDs y juguete Motor

Hacer girar la luz el árbol de Navidad con LEDs y juguete Motor

Awsome DIY arbolito con mini luces led y motor del juguete dc su fácil DIY y buen regalo para Navidad, usted puede hacer cualquier color de su elección eligiendo diverso color led luces, para hacer sólo requiere 3v batería de la moneda y batería de 9
TARDIS de LEGO con LED parpadeante

TARDIS de LEGO con LED parpadeante

Tenía curiosidad por ver si podía combinar un circuito de parpadeo del LED con la TARDIS LEGO (#21304 - http://shop.lego.com/en-US/Doctor-Who-21304). Con un poco de la perforación, he podido montar un LED debajo de la azotea de la TARDIS y mostrar a
Último sentido pulsera con LED

Último sentido pulsera con LED

Vamos a hacer una pulsera de fieltro con LEDs!Me gusta hacer fieltro, y también me gusta jugar con la electrónica, así que decidí ponerlos juntos y hacer algo que está de moda y geek al mismo tiempo. En este Instructable, utilicé fieltro que he hecho
Arduino - Sensor ultrasónico con LED y zumbador

Arduino - Sensor ultrasónico con LED y zumbador

Hola chicos este es mi primer tutorial, apenas he empezado a aprender electrónica hace unos meses (previamente he supe cómo programar en C y Python). Cuando he terminado este proyecto (me llevó unas 5 horas o algo) he decidido compartir para ayudar a
Su propio Sensor de Color con LED

Su propio Sensor de Color con LED

¿Sabía usted que usted puede hacer un "barato" pero eficaz color sensor utilizando algunos componentes básicos?Esta super fácil instructable le guía para hacer tu propio color sensor usando un montón de LEDs y una LDR.He conseguido hacer un sens
MADRE se burlan con LEDs de UV de

MADRE se burlan con LEDs de UV de

Todo el mundo desde desde el niño más joven a los ancianos más viejos está fascinado por luces negras. Luz de la misma UV asociado la mayoría de personas con la década de 1960 y 70 la escena hippy es también uno de los más versátiles y divertidas her
Un buen rato tonto con LED

Un buen rato tonto con LED

Más proyectos de electrónica Wearables con LED!Paso 1: Diversión tonta con LEDDirígete a la tienda de dólar y agarrar un montón de basura (no duro) como libro luces (vienen con pilas y un interruptor on/off!), diademas, zapatillas... Luego ir al lado
Con LEDs (parte 4) - las nuevas tecnologías de AC

Con LEDs (parte 4) - las nuevas tecnologías de AC

algunos de los obstáculos en general aceptación de LED en el hogar ha sido el relativo alto costo por lumen y los sistemas de conversión de energía complicado y torpe.En los últimos meses, una serie de nuevos desarrollos promete llevarnos un paso más
Traje de robot con LED

Traje de robot con LED

las razones de por qué yo quería hacer un robot traje son complejas. Para hacer el cuento largo, quería un traje que podría utilizar para entretener a mis compañeros mientras ellos cuidadosamente preparaban para los exámenes finales. Pero no quería c
Simon Says con LEDs y sonido

Simon Says con LEDs y sonido

Hola y Bienvenidos de nuevo a Instructables!Todos muchos de nosotros han jugado Simon Says donde inevitablemente te encuentras saltando alrededor en un pie mientras elefante ruidos y te preguntas a ti mismo por qué nunca fue una buena idea de decir "
Con LEDs (parte 3) - la gran luz de AC

Con LEDs (parte 3) - la gran luz de AC

en uso AC con LEDs, parte 1 y parte 2, vieron maneras para adaptar la corriente a los LEDs sin la habitual conversión DC puro primero.Aquí, en la parte 3, combinamos lo que aprendimos antes de diseñar una luz LED que funciona directamente desde la re
Mod portatil con LEDs reactiva música

Mod portatil con LEDs reactiva música

Bueno, hay muchos instructables haciendo música reactivas LEDs algunos usando Adruino, mientras que otros con transistor TIP31. Vi uno con OP-AMP así. Inspirado por los quería personalizar mi portatil con LEDs que le parpadean con la música a través
Red con LEDs

Red con LEDs

Primero de todos RIP Ingles: pHola chicos en este instructables voy para mostrarle cómo conectar leds a principal fuente (230v) y pocos proyectos usarlo. La esperanza de enfermos que lo disfruten.Cada mal paso mostrarle diferentes proyectos y esos pr
Mejorar la exhibición de fibra óptica con LED y el microcontrolador.

Mejorar la exhibición de fibra óptica con LED y el microcontrolador.

Este árbol de los bonsais óptica fibra preciosa estaba muerto, la fuente de alimentación era nada ser encontrado, pero más importante, el motor estaba muerto. Se trataba de un motor de giro lento que no es algo que puedo encontrar un reemplazo fácil