Flatulant baas Detector (7 / 9 stap)

Stap 7: nu voor de lastige deel.


Het is niet echt dat lastig als je een beetje over elektronica weet, maar de deal is dat je nodig hebt om de trigger signaal gebruiken om het systeem te activeren. U kunt een one-shot timer, of een Comparateur, of een 555 timer gebruiken, maar voor mij is het gemakkelijkst om een 8-pins micro-controller te gebruiken. Ik gebruikte een PIC Micro 12F675. Met dat, kon ik leiden tot op verandering van de invoer van een pin, en een rode LED flash. Ook als 5 mensen lopen in wil ik niet het ding gek gedurende 15 seconden, dus heb ik in een vertraging van 30 seconden, zodat ik kon een dodenschakelaar hit en het uitgeschakeld. Dus, ik gewoon snel-fwd en Toon het eindresultaat van de contraptie. Let op, ik had betrekking op de LED zodat de ex-baas zou niet een lichte bocht zien op elke keer als hij barged in mijn nederige 1/4 van een kast.

Deze pic is het eindproduct. Ik laat de elektronica als een oefening voor de student.

Hier is de code voor de PIC Micro 12F675:

;*****************************************************************************
; Bestandsnaam: Flatulant_Boss
; Processor: 12F675
; Auteur: Alan Mollick (alanmollick.com)
; Modus: Interrupt op GP2 wijzigen
;
; ~ GPIO REGISTREERT ~
; GP0 = INPUT--n/c
; GP1 = OUTPUT--estafette
; GP2 = INPUT--hoog = bewegingsdetectie
; GP3 = INPUT--n/c
; Gp4 = OUTPUT--rode LED
;*****************************************************************************
lijst van p = 12F675; lijst richtlijn processor definiëren
#include < p12f675.inc >; specifieke variabele definities van processor
ERRORLEVEL-302; onderdrukken van bericht 302 uit lijstbestand
CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF _PWRTE_ON & _INTRC_OSC_NOCLKOUT

; ~ Variabelen ~
w_temp EQU 0x20; variabele gebruikt voor het opslaan van de context
status_temp EQU 0x21; variabele gebruikt voor het opslaan van de context
hiB EQU 0x21; MSByte
lowB EQU 0x22; LSByte
Temp EQU 0x23
Vrije EQU 0x24
temp1 EQU 0x25; trigger interrupt-vlag
temp2 EQU 0x26
vertraging EQU 0x27; vertragingstijd
pinnen EQU 0x28; PIN staat
spare1 EQU 0x29
spare2 EQU 0x2a
Graaf EQU 0x2b; lus graaf
count1 EQU 0x2c; graaf van de buitenste lus
count2 EQU 0x2d; graaf van de buitenste lus
D1 EQU 0x2e; vertraging teller
D2 EQU 0x2f; vertraging teller
D3 EQU 0x30; vertraging teller
D4 EQU 0x31; vertraging teller
;**********************************************************************

RESET_VECTOR ORG 0X000; Processor resetten vector
goto belangrijkste; Ga naar begin van programma
INT_VECTOR ORG 0X004; Interrupt vector locatie
movwf w_temp; registreren inhoud uit het huidige W opslaan
movf STATUS, w; status register gaan W register
movwf status_temp; uit de inhoud van STATUS register opslaan

; ISR code
oproep motion_detect; alarm signalen

banksel INTCON
BCF INTCON, INTF; GP2/INT markering wissen

movf status_temp, w; kopie van STATUS register ophalen
movwf STATUS; herstel pre-isr STATUS register inhoud
swapf w_temp, f
swapf w_temp, w; pre-isr W register inhoud terugzetten
retfie; retourneren uit interrupt
;****************************************************************

belangrijkste:; hoofdprogramma

; deze eerste 4 instructies zijn niet vereist wanneer de interne oscillator wordt niet gebruikt
oproep 0x3FF; fabriek kalibratie waarde ophalen
BSF STATUS, RP0; bestand register bank ingesteld op 1
movwf OSCCAL; Update inschrijven bij fabriek cal waarde
BCF STATUS, RP0; bestand register bank ingesteld op 0

;***********************************
; * Initialisatie *
;***********************************
; GP0 = niet gebruikt, GP1 = relaisuitgang, GP2 = input (beweging detecteren),
; GP3 = input voor cntrl/emergency cutoff, GP4 = output LED indicator,
; GP5 = niet gebruikt

; instellen van de richting van I/O pinnen
banksel TRISIO
movlw b "00000101"
; XX---niet geïmplementeerd
; --0---0 = output, GP5 = n/c
; ---0---0 = output, GP4 = LED
; ---x---niet gebruikt, GP3, gewijd aan Picssoftware
; ---1--1 = input, GP2 beweging gedetecteerd
; ---0-0 = output, GP1 = magneetventiel
; ---1 1 = input GP0 = A/D
movwf TRISIO

; instellen van A/D converter
banksel ANSEL
movlw b '00010000'
; x---niet geïmplementeerd
; -001---001 = Focs/8 conversie kloksnelheid
; ---0---0 = digitale i/o, GP4, Fosc/4 clockout voor debug doeleinden.
; ---0--0 = digitale i/o, GP2
; ---0-0 = digitale i/o, GP1, relay/enz
; ---0 0 = digitale i/o, 1 = analoge GP0
movwf ANSEL

banksel ADCON0
movlw b "00000000"
; 0---1 = rechts uitgevulde resultaat
; -0---0 = Vdd is referentiespanning
; --xx---niet geïmplementeerd
; ---00--00 = Selecteer kanaal 0 (GP0)
; ---0-0 0 0/D-conversie niet gestart
; ---0 0 = A/D converter module uitgeschakeld is
movwf ADCON0

; initialiseren van de output pinnen
init
banksel GPIO
movlw b "00000000"
movwf GPIO

; initialiseren van interrupts
banksel INTCON
movlw b "00000000"
; 0---0 = globale interrupts uitgeschakeld
; -0---1 = inschakelen perifere interrupts
; --0---0 = uitschakelen TMR0 overflow interrupt
; ---1---1 = inschakelen GP2/INT externe interrupt
; ---0---0 = uitschakelen GPIO poort verandering interrupt
; ---0--0 = geen op overloop van de TMR0
; ------0- 1=
; ---0 0 = geen GPIO poort wijzigen
movwf INTCON

; initialiseren interrupt op pin wijzigen GP2
banksel IOC
movlw b '00000100'
; x---niet geïmplementeerd
; -x---niet geïmplementeerd
; --0---0 = disable GP5
; ---0---0 = disable GP4
; ---0---0 = disable GP3
; ---1--1 = inschakelen GP2/INTR ***
; ---0-0 = disable GP1
; ---0 0 = disable GP0
movwf IOC

banksel PIE1
movlw b "00000000"
; 0---0 = disable EE schrijven volledige interrupt
; -0---0 = disable A/D converter interrupt
; --xx---niet geïmplementeerd
; ---0---0 = Comparateur interrupt uitgeschakeld
; ---xx-niet uitgevoerd
; ---0 1 = inschakelen TMR1 overflow interrupt
movwf PIE1

banksel PIR1
movlw b "00000000"
; 0---0 = geen volledige EE-schrijven
; -0---0 = geen volledige A/D-conversie
; --xx---niet geïmplementeerd
; ---0---0 = geen interrupt comparator
; ---xx-niet uitgevoerd
; ---0 0 = geen overloop TMR1
movwf PIR1

;**********************************************************
; GP1 = output aan relay
; Gp4 = output naar LED
;**********************************************************

banksel INTCON
BSF INTCON, INTE; GP2 interrupt inschakelen
BSF INTCON, GIE

Main_Loop:
; Als GP2 = 1 dan uitvoer alarmsignalen op GP1, GP4 via interrupt

slaap
NOP
goto Main_Loop

;**********************************************************
; Motion detectie Interrupt Handler
;
; GP1 = output aan relay, GP4 = output naar LED
;**********************************************************
motion_detect:
BSF GPIO, 1; Energize relay voor 100 msec
oproep pause_100ms
BCF GPIO, 1; -activeren estafette

BSF GPIO, 4; LED voor 0,5 sec te activeren.
oproep pause_500ms
BCF GPIO, 4
terugkeer

;**********************************************************
; Online Generator van de Code van de vertraging
; http://massmind.org/techref/piclist/CodeGen/delay.htm
;**********************************************************

pause_100msec:
; Vertraging = 0.1 seconden
; Klokfrequentie = 4 MHz

movlw 0x1F; 99998 cycli
movwf d1
movlw 0x4F
movwf d2
Delay_100
decfsz d1, f
goto $+ 2
decfsz d2, f
goto Delay_100
goto $+ 1; 2 cycli
terugkeer

pause_500msec:
; Vertraging = 0,5 seconden
; Klokfrequentie = 4 MHz
movlw 0x03; 499994 cycli
movwf d1
movlw 0x18
movwf d2
movlw 0x02
movwf d3
Delay_500
decfsz d1, f
goto $+ 2
decfsz d2, f
goto $+ 2
decfsz d3, f
goto Delay_500

goto $+ 1; 6 cycli
goto $+ 1
goto $+ 1
terugkeer

pause_1sec
; Vertraging = 1 seconden
; Klokfrequentie = 4 MHz

movlw 0x08; 999997 cycli
movwf d1
movlw 0x2F
movwf d2
movlw 0x03
movwf d3
Delay_1sec
decfsz d1, f
goto $+ 2
decfsz d2, f
goto $+ 2
decfsz d3, f
goto Delay_1sec
goto $+ 1; 3 cycli
NOP
terugkeer

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

Gerelateerde Artikelen

Lichtnet Hum Detector / statische elektriciteit Detector

Lichtnet Hum Detector / statische elektriciteit Detector

Welkom,Dit instructable is over een klein en eenvoudig circuit die detecteert Mains Hum dwz die kunt u detecteren lichtnet bevinden van buiten de muur. Het detecteert ook statische elektriciteit en ook kan worden vermomd als een Ghost-Detector.Dus, v
FM Bug Detector Kit

FM Bug Detector Kit

Dit is voor alle spionnen/paranoïde mensen daar. Een essentieel stuk van apparatuur voor elke spy is een elektronische Bug Detector. Je weet nooit welke regering agentschap probeert te luisteren op uw gesprekken of u wilt in het geheim video tape.De
Metaal Detector

Metaal Detector

Waarom niet ontbloten de verlorenen van schatten van vervlogen beschavingen (of misschien vergeten goederen uit een aan het strand partij) met uw zeer eigen metaaldetector? In dit Instructable, ik zal u laten zien hoe het bouwen van een metaaldetecto
Lucht vervuiling Detector

Lucht vervuiling Detector

Dit apparaat is bedoeld om de gebruiker met een kosten-efficiënte middel om de luchtkwaliteit te bepalen. Onze sensor richt zich op de vijf onderdelen van de Environmental Protection Agency Air Quality Index: ozon, zwevende deeltjes, koolmonoxide, zw
Child's Robot kostuum met geluidseffecten, Candy Detector en meer

Child's Robot kostuum met geluidseffecten, Candy Detector en meer

ik maakte mijn dochter deze robot kostuum voor halloween. Ik was geïnspireerd door Dit Kid Robot kostuum. Ik nam mij een beetje in een andere richting en toegevoegd een paar meer nieuwigheden zoals lichten in de antennes en oren, een grote knop pad m
Eenvoudige vals geld detector - UV-Black Light Lamp

Eenvoudige vals geld detector - UV-Black Light Lamp <>

In deze post zal ik u tonen hoe kan een UV-Lamp ( zwart ) in minder dan 10 minuten en voor minder dan 2 $.Deze setup kan efficiënt worden gebruikt als een low-cost vals geld detector.Veel biljet heeft een ingebouwde kleine stukjes materiaal die fluor
DIY Portable vals geld detector en fakkel

DIY Portable vals geld detector en fakkel

In plaats van het kopen van een van die dure vals geld detectoren, maken uw eigen met behulp van een paar ultraviolette LED's een knoopcelbatterij geplaatst en 3D print de onderdelen toegevoegd in stap 2, die mooi past en knus in uw portefeuille/beur
Nachtlampje IR Detector Hack

Nachtlampje IR Detector Hack

nachtlampje IR Detector HackDeze hack is zo eenvoudig dat, als er een boek of Hacks, deze zou worden gevonden op de bovenkant van de eerste pagina van hoofdstuk 1, Volume 1. Infrarood (IR) is elektromagnetische straling met een frequentie die lager i
IR Detector

IR Detector

In dit Instructable zal ik u tonen hoe maak je een eenvoudige infra rood (IR)-detector.Wanneer uw TV niet meer reageert op de afstandsbediening is het moeilijk te zeggen als de TV gebroken is of de afstandsbediening werkt niet. Met deze kleine zakfor
Bliksem! De Lightning-Detector voor Raspberry Pi weerstation (bijgewerkt)

Bliksem! De Lightning-Detector voor Raspberry Pi weerstation (bijgewerkt)

In dit Instructable leer je:Hoe een verbinding een Lightning Detector voor een zonne-aangedreven weerstationHet ontwerpen en plaatsen van de bliksem detector voor beste perfomanceHoe je kunt verzamelen van gegevens Zie het verhaal van de bliksem als
Aardbeving Detector

Aardbeving Detector

ik groeide op in Californië, en hebben het fortuin van het ervaren van elke grote aardbeving in deze staat sinds ik geboren ben. Ik hou van hen en hen tegelijkertijd bang! Aardbevingen zijn spannend, maar ook mysterieus. Wonen in zo'n seismisch actie
Ring van de Bell Trio: Oui, liefde Detector, Coral Garden

Ring van de Bell Trio: Oui, liefde Detector, Coral Garden

ingrediënten voor Oui Ring:-1 gouden lijm-op ring terug-1 Oui charme-1 antieke koperen mooie bloemblaadjes bead GLB-1 glas kraal, 4 mm-2 inch antieke koperen draad, 28 metenKlik hier voor een printbare versie van deze tutorialIngrediënten voor de lie
REAL Ghost Detector

REAL Ghost Detector

Ik geloof niet in bovennatuurlijke dingen maar na het lezen van te veel boeken en artikelen over de realiteit van geest die ik kwam te weten dat spook zijn niet zoals ze worden weergegeven in horrorfilms! maar eigenlijk is het een vorm van energie di
Attiny85 EMF detector

Attiny85 EMF detector

Dit is een eenvoudig tutorial te maken van een EMF-detector. U kunt Arduino voor deze job, maar is beter gebruik een microcontroller genaamd Attiny85. Het is mogelijk het programma throe de Arduino interface.Wat is een magnetisch veld [uit Wikipedia]