03 oktober 2015

Tutorial 2 - Analoge inputs


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
Om dat voor elkaar te krijgen, moeten de volgende verbindingen worden gemaakt:
  • 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)
Ziehier de PICAXE-08M2 kant:
De rode draad zit aan pennetje 3, de groene aan pennetje 7 en de gele aan pen 6.
Aan de invoer/uitvoer terminal kant ziet het er zo uit:
De rode draad zit in de L3 connector, de groene in de L1, en de gele in de LDR connector.


Programma

Onderstaand het programma in knip-en-plak mode:
; 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