Analoge inputs
Op het AXE091 bordje zijn een drietal analoge gevers te vinden; een licht afhankelijke weerstand (LDR, van het engelse Light Dependent Resistor) , een regelbare weerstand of potentiometer, en een temperatuurvoeler. Hier zitten ze:De LDR
Ik moest de LDR nog zelf solderen; hij zat er los bij.Wat er dient te gebeuren is:
- Lees de analoge waarde van de LDR digitaal in (readadc commando)
- Als de waarde boven een gegeven waarde ligt, switch dan de rode LED aan.
- Als de waarde beneden een gegeven waarde ligt, switch dan de groene LED aan.
- En zo niet, doe dan beide LEDs uit
- C4 gaat als output werken, en bestuurt de rode LED (rode draad)
- C0 gaat als output werken, en bestuurt de groene LED (groene draad)
- C1 gaat als input werken, en vraagt de LDR uit (gele draad)
Aan de invoer/uitvoer terminal kant ziet het er zo uit:
Programma
; connect C.4 (physical pin 3) to L1 (red)
; connect C.0 (physical pin 7) to L2 (green)
; connect C.1 (physical pin 6) to LDR
; LDR is documented to read values between 120 and 70; mine works with 190/140.
; of course, 127 should be the tripping point
symbol RED = C.4 ; define pin 3 with the name "RED"
symbol GREEN = C.0 ; define pin 7 with the name "GREEN"
symbol LDR = C.1 ; define pin 6 with the name "LDR"
; set picaxe type
#picaxe 08m2
main:
readadc LDR,b0 ; read ADC1 into variable b0
; if you want a real time feedback of the actual vaules, use
; debug b0
if b0 > 157 then RedOn ; if b0 > 157 then do RedOn
if b0 < 127 then GreenOn ; if b0 < 127 then do GreenOn
low RED ; else switch off RED
low GREEN ; and switch off GREEN
goto main ; jump back to the start
RedOn: ; make a label
high RED ; switch on Red LED
low GREEN ; switch off Green LED
goto main ; jump back to start
GreenOn: ; make a label
high GREEN ; switch on C.0
low RED ; switch off C.4
goto main ; jump back to start
Let op de introductie van een nieuw element, de subroutine.
Zowel RedOn, als GreenOn zijn subroutines, die vanuit het hoofdprogramma worden opgeroepen. Beide routines keren na aanroep terug naar de hoofdroutine "main" middels het goto main commando.
Er mag maar een main routine zijn (hoewel... de PICs zijn in staat meer dan een taak tegelijk te vervullen: parallel tasking).
Het resultaat: als de LDR wordt afgedekt, daalt de ingelezen waarde onder 127 en wordt de groene LED ontstoken. Onafgedekt valt zoveel licht op de LDR, dat de waarde boven de 157 komt, en de rode LED oplicht:
Geen opmerkingen :
Een reactie posten