Det finns ganska mycket man kan göra med t.ex. paralellporten som faktiskt är det mest enkla sättet att ansluta styrningar, på ett relativt enkelt sätt.
Efter man tillverkat "hårdvaran" kommer alltid epitetet mjukvaran, det är här man oftast stöter på problemen (Klart, man stöter ofta på fel med hårdvaran här också i form av felsökning). Ett förslag dock är att du experimenterar med en gammal dator först innan du ger dig på mer komplexa programmeringsspråk som t.ex. Visual Basic, C++, Delphi osv. och testar att ta hem
Quick BASIC. På den sidan hittar du flertalet kompilatorer, dock rekommenderar jag Quick BASIC 4.5
Det lite "tråkiga" är förstås att det är DOS-miljö och stora & klumpiga tecken, men det kan kanske ses som en fördel att det inte är större yta eftersom det tenderar att bli ganska mycket text i ett program man skriver.
Som operativsystem rekommenderar jag Windows 95 eller 98 (Beroende på datorn, vad den klarar av osv) eftersom det kan vara bra att kunna köra andra saker också, t.ex. USB-kameror, USB-hårddiskar mm.
Nästa problem är förstås själva programmet.
Det finns faktiskt en ganska bra hjälp i QB (Quick BASIC) där man får hjälp med programexempel och en syntaxförklaring (Hur kommandona fungerar och hur de används). Sedan finns det också Google där man kan söka efter diverse sidor där man kan ta hem programexempel.
Hur som helst, om vi fokuserar oss på paralellporten, LPT1 (Line Printer Port 1). Hur göra, och vad göra?
Om vi ska t.ex. styra en transistor som styr ett relä - I korthet styra ett relä, måste vi veta först och främst vad vi gör.
Vi har ett relä och dess styrpinne (En 'tåt' som styr det, till & från)
Vi har en LPT-port, och
WikiPedia's sida om skrivarporten säger oss att vi har 8 st 'pinnar' som vi kan använda som styrportar, D0-D7 (D för Data).
Då är det bara att ansluta "relämodulen" till pinne
2 (Databit 0), och sedan kommer nästa steg; Att aktivera kräket
Om vi tittar runt lite på WikiPedias sida (Länken ovan) så ser vi att skrivarporten har en unik adress, vilken vi måste åberopa för att kunna göra något.
En kik senare har avslöjat att den har adress &H378 (Där &H betyder att det är ett hexadecimalt värde) eller decimala värdet på det blir 888. Ok, härligt då vet vi det.
Men när vi vet vart den "bor", hur talar vi om för den hur den ska göra då?
Jo, lite efterforskningar talar om att eftersom det är 8 bitar, med värdet 1 eller 0 på vardera, kan vi ställa in allt från 0 (ingen, 0) till 255 olika kombinationer binärt.
Nu blev det kanske rörigt, men ett litet tips:
Starta kalkylatorn i Windows, gå till menyn "Visa" och välj "Avancerad"
Knappa in värdet "255" och klicka sedan på radioknappen "Bin" och du bör få resultatet "11111111", vilket är hur det skulle se ut på paralellporten om du skrev det värdet i QB som programmet under demonstrerar.
Om vi skriver ett par enkla rader i Quick BASIC:
Kod: Markera allt
CLS 'Rensa skärmen
OUT &H378,0 'Nollställer porten, allting=Av
SLEEP 5 ' "Sov" 5 sekunder
OUT &H378,1 ' Ställer bit 0 som en logisk 1:a och aktiverar relämodulen
SLEEP 5 ' "Sov" 5 sekunder
OUT &H378,0 'Nollställer porten igen
END 'Avslutar programmet
Om vi ansluter en till relämodul:
Kod: Markera allt
CLS 'Rensa skärmen
OUT &H378,0 'Nollställer porten, allting=Av
SLEEP 5 ' "Sov" 5 sekunder
OUT &H378,1 ' Bit 0 logisk 1:a och aktiverar relämodul 1
SLEEP 5 ' "Sov" 5 sekunder
OUT &H378,3 ' Bit 1 logisk 1 aktiverar relämodul 2, inaktiverar relämoul 1
SLEEP 5 ' "Sov" 5 sekunder
OUT &H378,0 'Nollställer porten igen
END 'Avslutar programmet
Toppen, kan inte bli bättre... Men jag läste att man kunde läsa information från skrivarporten också, hur gör jag det?
Det är faktiskt ganska enkelt, egentligen.
Först måste vi kolla på "databladet" och en titt senare konstaterar att in-portarna har en egen adress, nämligen &H379.
Samma sak gäller här, fast omvänt såklart eftersom vi ska skicka in en "bit" i datorn och få den känna av detta.
Anslut en strömbrytare (2-vägs) mellan + och jord (2 av tre pinnar) och mittenuttaget till ett motstånd, typ 1 kΩ blir lagomt som du ansluter till t.ex. pinne 15 (Status-bit 0).
-Ok, nu har jag gjort det, sen då?
Jag låter BASIC-koden tala för sig självt:
Kod: Markera allt
CLS
DO 'Starta....
X=INP(&H379) 'Ställer parametern X utifrån vad den läser från porten
LOCATE 10: PRINT X ' Gå till teckenplats 10, skriv parametervärdet av X
LOOP UNTIL INKEY$" " '...loopen tills mellanslagstangenten är intryckt
Sen behöver det ju förstås inte vara en strömbrytare som ändrar ett värde. Det kan vara en annan komponent, en annan dator eller vad som helst som kan leverera en logisk 1:a (från ca. 2,7 till 5 Volt
Om vi t.ex. låter strömbrytaren i exemplet ovan styra reläet:
Kod: Markera allt
CLS ' Töm skärmen
DO ' Starta....
X= INP(&H379) 'Läs in parametern X som in-värdet på porten
IF X = 7 THEN OUT &H378,1 'Om strömbrytaren är på, dra relämodulen
LOOP ' ... loopen
Sedan är det bara fantasin som sätter gränserna
Detta är bra som ett första-steg innan man ger sig in på större programmeringsspråk. Själv har jag aldrig orkat eftersom jag är lite 'trög' och orkar inte därefter lära mig de där mer komplicerade programmeringsspråken.
Jag hoppas jag har inspirerat till något häftigt & ballt
Åh, just ja. Litet tips: Om du inte har en redan, skaffa en "bibel" från Elfa. Där finns det mkt kul att läsa och låta sig inspireras av.
Men ska du beställa t.ex. TTL-kretsar rekommenderar jag att du gör det hos Electro:kit
Edit:
Glömde bort att skriva en sak ang. värdet
7 som parametervärdet.
Just nu minns jag inte vad det brukar vara eftersom 3 bitar (tåtar) aldrig ser insidan/utsidan av datorn utan används internt / inte alls. I exemplet ovan utgick jag från att de var satta som 1: or, utom en av dem.
De är förresten inverterade också, vilket innebär att värderna blir annorlunda... Därför om du använder min kod ovan, byter du ut
7 mot det värdet du får från programexemplet ovan.
Edit 2: Skrev fel pinne på paralellporten