Detector de jefe flatulant (7 / 9 paso)

Paso 7: ahora para la parte difícil.

No es verdad que complicado si sabes un poco de electrónica, pero el trato es que necesitas usar la señal de disparo para activar el sistema. Puede utilizar un temporizador de un disparo, o un comparador o un temporizador 555, pero, para mí, lo más fácil es utilizar un microcontrolador de 8 pines. Usé un 12F675 Micro PIC. Con eso, podía desencadenar en cambio de entrada de un pin y flash de un LED rojo. También, si 5 personas a pie en no quiero la cosa volviendo loco durante 15 segundos, así que los pongo en una demora de 30 segundos para poder golpear una llave y apagarla. Por lo tanto, yo sólo fast fwd y mostrar el resultado final de los artilugios. Tenga en cuenta que cubrí el LED para que el ex jefe no vería un ligero giro en cada vez que él irrumpió en mi humilde 1/4 de un cubículo.

Esta foto es el producto final. Voy a dejar la electrónica como un ejercicio para el estudiante.

Aquí está el código para el PIC Micro 12F675:

;*****************************************************************************
; Nombre de archivo: Flatulant_Boss
; Procesador: 12F675
; Autor: Alan Mollick (alanmollick.com)
; Modo: Interrupción cambio de GP2
;
; ~ REGISTRA GPIO ~
; GP0 = entrada--n/c
; GP1 = salida, relé
; GP2 = entrada--alta = movimiento detectado
; GP3 = entrada--n/c
; GP4 = producción - LED rojo
;*****************************************************************************
lista p = 12F675; Directiva lista para definir procesador
#include < p12f675.inc >; definiciones de variables específicas del procesador
ERRORLEVEL-302; suprimir el mensaje 302 de archivo de la lista
CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

; ~ Variables de ~
w_temp EQU 0 x 20; variable utilizada para el ahorro del contexto
status_temp EQU 0x21; variable utilizada para el ahorro del contexto
hiB EQU 0x21; MSByte
lowB EQU 0x22; LSByte
Temp EQU 0x23
repuesto EQU 0x24
temp1 EQU 0x25; Bandera de interrupción de disparo
temp2 EQU 0x26
retardo EQU 0x27; tiempo de retardo
pernos de EQU 0x28; Estado del PIN
spare1 EQU 0x29
spare2 EQU 0x2a
cuenta EQU 0x2b; lazo cuenta
count1 EQU 0x2c; cuenta del lazo externo
count2 EQU 0x2d; cuenta del lazo externo
D1 EQU 0x2e; contador de retardo
D2 EQU 0x2f; contador de retardo
D3 EQU 0 x 30; contador de retardo
D4 EQU 0x31; contador de retardo
;**********************************************************************

RESET_VECTOR ORG 0X000; vector de reset del procesador
Goto principal; ir al principio del programa
INT_VECTOR ORG 0X004; Ubicación del vector de interrupción
movwf w_temp; guardar apagado W actual registro contenido
movf STATUS, w; entrar registro W a registro del estado
movwf status_temp; Ahorre descuento contenido del registro del estado

; código de ISR
Call motion_detect; enviar señales de alarma

banksel INTCON
BCF INTCON, INTF; limpiar bandera de GP2/INT

movf status_temp, w; recuperar copia del registro del estado
movwf STATUS; contenido del registro de estado de restauración pre-isr
swapf w_temp, f
swapf w_temp, w; restaurar el contenido del registro de pre-isr W
retfie; retorno de interrupción
;****************************************************************

principal:; principal del programa

; estas instrucciones primero 4 no son necesarias si no se utiliza el oscilador interno
Llame a 0x3FF; recuperar el valor de calibración de fábrica
bsf STATUS, RP0; Banco de registro de archivo el valor 1
movwf OSCCAL; registro de actualización con valor de fábrica cal
BCF STATUS, RP0; Banco de registro de archivo se establece en 0

;***********************************
; * Inicialización *
;***********************************
; GP0 = no usada, GP1 = salida de relé, GP2 = entrada (detección de movimiento),
; GP3 = entrada de control emergencia corte, GP4 = salida al indicador del LED,
; GP5 = no usada

; configurar dirección de pines de I/O
banksel TRISIO
movlw b '00000101'
; XX---no implementado
; --0---0 = salida, GP5 = n/c
; ---0---0 = salida, GP4 = LED
; ---x---no se utiliza, GP3, dedicada a MCLR
; ---1--1 = entrada, detecta movimiento de GP2
; ---0-0 = salida, GP1 = válvula solenoide
; ---1 1 = entrada GP0 = A/D
movwf TRISIO

; configurar el convertidor A/D
banksel ANSEL
movlw b '00010000'
; x---no implementado
; -001---001 = reloj de conversión Focs/8
; ---0---0 = entrada-salida digital, GP4, Fosc/4 clockout fines de depuración.
; ---0--0 = entrada-salida digital, GP2
; ---0-0 = entrada-salida digital, GP1, relé, etc.
; ---0 0 = entrada-salida digital, 1 = GP0 analógico
movwf ANSEL

banksel ADCON0
movlw b '00000000'
; 0---1 = resultado justificado a la derecha
; -0---0 = Vdd es referencia de voltaje
; --xx---no implementado
; ---00--00 = seleccionar el canal 0 (GP0)
; ---0-0 0 0/D conversión no iniciado
; ---0 0 = A/D convertidor módulo está apagado
movwf ADCON0

; Inicializa los pines de salida
init
banksel GPIO
movlw b '00000000'
movwf GPIO

; inicializar las interrupciones
banksel INTCON
movlw b '00000000'
; 0---0 = deshabilitadas las interrupciones globales
; -0---1 = habilitar las interrupciones periféricas
; --0---0 = disable TMR0 overflow interrupción
; ---1---1 = activar interrupción externa de GP2/INT
; ---0---0 = disable GPIO puerto cambio interrupción
; ---0--0 no = desbordamiento de TMR0 en
; ------0- 1=
; ---0 0 no = ningún cambio del puerto GPIO
movwf INTCON

; inicializar la interrupción cambio de pin GP2
banksel IOC
movlw b '00000100'
; x---no implementado
; -x---no implementado
; --0---0 = disable GP5
; ---0---0 = disable GP4
; ---0---0 = disable GP3
; ---1--1 = habilitar GP2/INTR ***
; ---0-0 = disable GP1
; ---0 0 = disable GP0
movwf IOC

banksel PIE1
movlw b '00000000'
; 0---0 = disable EE escribir interrupción completa
; -0---0 = interrupción del convertidor A/d de desactivar
; --xx---no implementado
; ---0---0 = interrupción comparador deshabilitado
; ---xx-no implementado
; ---0 1 = habilitar TMR1 overflow interrupción
movwf PIE1

banksel PIR1
movlw b '00000000'
; 0---0 no = escritura EE completa
; -0---0 no = completa de conversión A/D
; --xx---no implementado
; ---0---0 no = ninguna interrupción del comparador
; ---xx-no implementado
; ---0 0 no = desbordamiento de TMR1
movwf PIR1

;**********************************************************
; GP1 = salida a relé
; GP4 = salida para LED
;**********************************************************

banksel INTCON
BSF INTCON, INTE; habilitar interrupción de GP2
BSF INTCON, GIE

Main_Loop:
; Si GP2 = 1 entonces la salida de las señales de alarma en la GP1, GP4 via interrupción

sueño
NOP
Goto Main_Loop

;**********************************************************
; Manejador de interrupción de detección de movimiento
;
; GP1 = salida a relé, GP4 = salida para LED
;**********************************************************
motion_detect:
BSF GPIO, 1; energizar el relé de 100 mseg
llamar al pause_100ms
BCF GPIO, 1; desactivar el relé de

BSF GPIO, 4; activar LED durante 0,5 seg.
llamar al pause_500ms
BCF GPIO, 4
volver

;**********************************************************
; online generador de retardo
; http://massmind.org/techref/piclist/CODEGEN/Delay.htm
;**********************************************************

pause_100msec:
; Retardo = 0.1 segundos
; Frecuencia de reloj = 4 MHz

movlw 0x1F; 99998 ciclos
movwf d1
movlw 0x4F
movwf d2
Delay_100
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto Delay_100
Goto $+ 1; 2 ciclos
volver

pause_500msec:
; Retardo = 0,5 segundos
; Frecuencia de reloj = 4 MHz
movlw 0 x 03; 499994 ciclos
movwf d1
movlw 0x18
movwf d2
movlw 0 x 02
movwf d3
Delay_500
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto $+ 2
decfsz d3, f
Goto Delay_500

Goto $+ 1; 6 ciclos
Goto $+ 1
Goto $+ 1
volver

pause_1sec
; Retardo = 1 segundos
; Frecuencia de reloj = 4 MHz

movlw 0x08; 999997 ciclos
movwf d1
movlw 0x2F
movwf d2
movlw 0 x 03
movwf d3
Delay_1sec
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto $+ 2
decfsz d3, f
Goto Delay_1sec
Goto $+ 1; 3 ciclos
NOP
volver

;*****************************************************************************

Artículos Relacionados

Seguridad alarma Laser detector o sensor para arduino para principiantes

Seguridad alarma Laser detector o sensor para arduino para principiantes

Hola, chicos hoy me y todos vamos a hacer un detector de láser trabajan con un Arduino y piezo.Cómo funciona. Cuando el láser está bloqueado por el jefe de módulo el piezoalarma para arriba.permite así iniciar. :):):):):):):):):):):):):):):):):):):):
Detector láser de Arduino con teclado

Detector láser de Arduino con teclado

Hola a todos!!!!!!He sido jugar con unos pocos componentes y mi arduino. He descubierto este proyecto la semana pasada y sólo tenía que compartir con todos ustedes. Lo que es, es un rayo láser que golpea una célula fotoeléctrica. El arduino lee la cé
Detector de metales

Detector de metales

¿Por qué no descubrir la pérdida de los tesoros de civilizaciones pasadas (o bienes tal vez olvidados de una fiesta junto a la playa) con su propio detector de metales? En este Instructable, te voy a mostrar cómo construir un detector de metales que
Detector de contaminación de aire

Detector de contaminación de aire

Este dispositivo está diseñado para proporcionar al usuario un medio costo-eficiente de determinar la calidad del aire. Nuestro sensor se centra en los cinco componentes del índice de calidad de aire de la Agencia de protección ambiental: ozono, part
Prevención de incendios de la casa con el seccionador de Detector de humo

Prevención de incendios de la casa con el seccionador de Detector de humo

Hace casi una década comenzó un incendio mayor. Sí, los accidentes ocurren y a veces un pequeño error puede tener graves consecuencias. Un joven fabricante de perder el tiempo con electricidad puede ser particularmente vulnerable a este tipo de accid
Sentidos de la máquina: Detector de humo de la nariz

Sentidos de la máquina: Detector de humo de la nariz

Si lo piensas, máquinas y equipos son como nosotros en muchos aspectos, tienen cerebros (procesadores), ojos (cámaras), orejas (micrófonos), etc. La máquina sentidos es una serie de artefactos que pretenden revertir la perspectiva en la forma en que
Red Hum Detector / Detector de electricidad estática

Red Hum Detector / Detector de electricidad estática

Bienvenida,Este instructable es un circuito pequeño y sencillo que detecta red Hum, es decir, que se puede detectar donde se encuentran desde fuera de la pared los cables de red. También detecta electricidad estática y también puede ser disfrazado co
Kit Detector de error de FM

Kit Detector de error de FM

Esto es para todos los espías/paranoico por ahí. Un pedazo esencial de equipo para cualquier spy es un Detector de fallos electrónicos. Nunca se sabe qué gobierno Agencia puede estar intentando escuchar sus conversaciones o tratando de secreto video
Traje niño de Robot con efectos de sonido, Detector de caramelo y más

Traje niño de Robot con efectos de sonido, Detector de caramelo y más

que hice a mi hija este traje de robot para halloween. Me inspiré por este traje de Kid Robot. Tomé en un poco de una dirección diferente y había añadido algunos más novedades como luces en antenas y orejas, una almohadilla de botón grande con un efe
Detector de voltaje sin contacto

Detector de voltaje sin contacto

Detector de voltaje sin contacto es un dispositivo práctico que es útil para indicar si hay corriente actual en el circuito o sistema.consta de tres transistores que actúa como un interruptor en el circuito que amplifican la corriente detectada y una
Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Este video demuestra rápido y acercamiento fácil de reducir el consumo de energía de ATMEGA 328p basado en placas Arduino en torno al 70-75% mediante sensores PIR o PID para detección de movimiento.Este proyecto introduce a raíz de las cosas-1) inter
Cartón y fibra de vidrio Halo 3 inspira traje de Jefe Maestro

Cartón y fibra de vidrio Halo 3 inspira traje de Jefe Maestro

Hice un disfraz de Halloween de Jefe Maestro de Halo 3 completo para mi hijo de cartón y fibra de vidrio. Empecé con el casco. Aquí están los pasos que he seguido. Una pequeña figura de acción y las imágenes encontradas internet fueron utilizados com
Detector de humedad de la planta de niños

Detector de humedad de la planta de niños

Este es un gran proyecto para los niños que son nuevos en Arduino usando la tarjeta de expansión de Edison. Este proyecto sería una gran adición a un curso superior de primaria, secundaria o bachillerato en Ciencias de la tierra, ingeniería ambiental
Detector de luz/oscuridad usando un op-amp

Detector de luz/oscuridad usando un op-amp

Esto es una demostración simple que muestra cómo utilizar un op-amp y una célula fotoeléctrica para detectar la luz u oscuridad.Se necesita:LM741 Op-amp Digikey parte #LM741CNNS/NOPB-NDresistor 1/4 Watt de 10 kΩ Digikey parte #CF14JT10K0CT-NDΩ 470 1/