I början tackar jag igen Anders Jackson
samt alla andra, som har korrigerat mitt text.
Mera text samt bilder kommer dagligen! Fråga gärna!
När vi nu fått vår leksak färdig, kan vi börja leka med den. Först
stänger vi av datorn, för säkerhets skull. Därefter kopplar vi in
skrivarporten, slår på datorn och bootar den i DOS.
För att veta hur skrivarporten kan programeras, bör vi veta vilken
adress den har. Då är det bra att ha tillgång till programmet
DEBUG.EXE som finns i DOS.
Så om vi inte är i dos, så startar vi om datorn i DOS-läge.
I DOS skriver vi sedan följande:
debug
Efter debug-kursorn skriver vi:
-d 0040:0008 L8
På skärmen syns:
0040:0008 78 03 78 02 00 00 00 00
eller något liknande
Nu skriver vi upp de fyra första siffrorna på skärmen lite baklänges.
Så detta exempel ger oss 0378 och 0278. Adressen 0378 ger oss
adressen till LPT1 och 0278 är adressen till LPT2. Om man inte
använder helt standardiserade portar, så kan adresserna man får vara
lite annorlunda. I så fall så får ni byta ut 0378 i exemplena mot det
ni då får.
OUT &H378, 0
(då slås D0 på LPT1 av)
OUT &H378, 1
(då slås D0 på LPT1 på)
Om allt fungerar så skall lysdioden vara tänd nu. Om vi nu skriver:
OUT &H378, 0
så kommer ljusdioden att slockna.
Så enkelt fungerar det, i vart fall om allt är rätt kopplat. Om
ljusdioden inte lyser och slocknar som den skall, så kontrollera att
ni har gjort alla kopplingar och lödningar på rätt sätt. Jag kan
tyvärr inte hjälpa er med detta. Så se till att optokopplaren är
kopplat till D0 på skrivarporten.
Ifall ni inte har tillgång till DEBUG.EXE, så kan skrivarportens
adress vara någon av följande adresser: 0378 eller 03BC. Man kan
alltså prova dem, men enklast hittar man adressen med DEBUG.EXE.
Init-pinnen hör till kontrolldelen av skrivarporten, vilket gör att
man hittar den på en högre adress: Om dataporten är 0378, så är
kontrollporten 037A (dvs två steg högre upp). Om dataporten är 03BC
så är kontrollporten på 03BE, osv. Init är D2 på kontrollporten, dvs
binärt 4 (D0=1, D1=2, D2=4, D3=8, D4=16, D5=32, D6=64 och D7=128).
Blinkande ljusdiod programmeras t.ex. så här:
CLS ' Töm skärmen
DO
SLEEP 1 ' Vänta en sekund
PRINT "Ljusdioden släcks"
OUT &H378, 0 ' Släck ljusdioden
SLEEP 1
PRINT "Ljusdioden tänds"
OUT &H378, 1 ' Tänd ljusdioden
LOOP ' Tillbaka till looppens början
När detta program körs kommer lysdioden att blinka med en sekunds
intervall. Om man vill styra D1, så byter man ut 1:an i OUT &H378 mot
2 (enligt ovan). Om skrivarporten inte är på adress 0378, så byter
man ut 378 mot den adress som skrivarporten använder.
Nu är det tillfälle att tillverka leksak 2. Dvs nu skall vi ha nio lysdioder i rad som vi skall kunna kontrollera
från datorn. Detta är ett lämpligt verktyg att lära sig kontrollera
dessa portar innan man kopplar in ljusrampen på riktigt.
Vad vi gör är att vi tar åtta likadanna motstånd, optokopplare,
lysdioder och socklar som tidigare och kopplar dem till stift D1-D7
samt till stift Init på skrivarkabeln (dvs stift 3-9 samt 16).

Den nionde hade jag på en extra veroplatta, vilket inte visas på
bilden. Optokopplarna finns som vita eller svarta.P>

Här kommer ett par program som man kan prova portarna med.
CLS
DO
PRINT "Månen släcks"
OUT &H37A, 0
OUT &H378, 0
FOR a = 1 TO 255
PRINT a;" ";
OUT &H378, a
SLEEP 1
NEXT
PRINT
PRINT "Månen tänds"
OUT &H37A, 4
SLEEP 1
LOOP
De olika ljusdioder tänds med:
OUT &H378,a
där a är = 1,2,4,8,16,32,64,128
OUT &H37A, 4
för att tända Init-stiftet.
och släcks med att sätta a=0.
OUT &H378,0
OUT &H37A,0
Nu börjar spänningen stiga, hoppas jag.
Vi börjar nu tillverka den analoga delen, med vilken belysningen styrs.
Skillnaden mot det vi redan gjort är inte så stor. Alla nio
kopplingar mellan optokopplarna och datorns parallellport är samma som
vi har gjort, men på andra sidan tas ljusdioderna bort samt motstånden
byts och kopplas annorlunda.
Vi bygger ett enkelt motståndsnät, med vilket binära värden bygger upp
analog spänning. Det kommer således att bli 255 olika spänningar att
styra ljuset med. Det finns färdiga digital till analogomvandlare
(D/A-omvandlare) att köpa, men de kostar lite mer. Det är dock enkelt
(och billigt) att bygga en egen omvandlare, som ger 0 - 10 volt.

Motstånden:
R1 = 1 Kohm (1 kilo-ohm, 1/4w 8 stk)
R2 = 20 Kohm (20 kilo-ohm, 1/4w 9 stk.)
R3 = 10 Kohm (10 kilo-ohm, 1/4w 7 stk.)

Batterieliminator i 220 volts uttag som levererar 12 volt.
Fortsättning följer...
Till del 1
Till del 3
Till början av sidan
Sist uppdaterad 9.9.2003 12:40
E-mai till mig:
Kopiera mitt E-mail-address