U bevindt zich hier: prak EE parallelle poortproefjes  
 PRAK EE
'droogte'-detector
spelen met een ouwe GSM
parallelle poortproefjes
ad-omvormertje
Lappie-detector
regenwatersysteem
dossier simpele leugendetectors
variabel voedinkje
renovatie platendraaiertje
detectorschakeling
renovatie versterker
vintage audio
'vintage'-teller
upgrade klokradio
LFR
lichtdetectie
deurbel
kristalradio
En-schakelingetje
zonnepaneeloefening
flatscreen
Arduino-toestanden
99 teller

PROEFJES MET DE PARALLELLE POORT
 

Op de parallelle poort zitten 8 data-uitgangen gaande van pinnetje 2 tot en met pinnetje 9. We spelen eerst eventjes met deze uitgangen. later betrekken we er de 5 status-pinnetjes bij, ofwel de input-pins...Ik maak gebruik van onderstaand schema.


 

We maken gebruik van 2 data-uitgangen. 




 

ledje, zoemer, weerstandjes, transistorkes... 




 

Vervolgens moeten we nog een programma(tje) schrijven om met deze schakeling te kunnen werken. Ik kies voor C++, gewoon...voor de lol...



 

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "iostream.h"

int main()
{
int keuze;
int teller;
int teller1;
int teller2;
int teller11;
int teller22;
const int sec_high = 29985681;
const int sec_low = 29985681;
cout <<"interface-programma versie2 " <<endl;
cout <<"ledje(1) of zoemer(2) ? " ;
cin >> keuze;
if (keuze == 1)
{
cout <<"hoeveel keer mag het ledje branden?" ;
cin >> teller;
cout <<"hoe lang mag het ledje branden? (sec)" ;
cin >> teller1;
teller11 = teller1 * sec_high;
cout <<"hoe lang mag het ledje niet branden? (sec)" ;
cin >> teller2;
teller22 = teller2 * sec_low;
for ( int loper = 1 ; loper <= teller ; loper++)
{
_outp(888,1);
for ( int loper1 = 1 ; loper1 <= teller11 ; loper1++)
{
}
_outp(888,0);
for ( int loper2 = 1 ; loper2 <= teller22 ; loper2++)
{
}
}

}
if (keuze == 2)
{
cout <<"hoeveel keer mag de zoemer gaan?" ;
cin >> teller;
cout <<"hoe lang mag de zoemer gaan? (sec)" ;
cin >> teller1;
teller11 = teller1 * sec_high;
cout <<"hoe lang mag de zoemer niet gaan? (sec)" ;
cin >> teller2;
teller22 = teller2 * sec_low;
for ( int loper = 1 ; loper <= teller ; loper++)
{
_outp(888,2);
for ( int loper1 = 1 ; loper1 <= teller11 ; loper1++)
{
}
_outp(888,0);
for ( int loper2 = 1 ; loper2 <= teller22 ; loper2++)
{
}
}
}
else cout<<"u hebt een getal ingegeven die niet 1 of 2 was. " <<endl;



return 0;
}



 

Sluit het printje aan op de parallelle poort van je win95-systeem en laat het programma lopen. Het programma vraagt je of je het ledje of de zoemer wilt gebruiken. Vervolgens vraagt het hoeveel keer de led of de zoemer moet gaan en voor hoelang en voor hoelang niet. Ik heb geprobeerd het aantal cpu-ticks per seconde te bepalen zodat men de gevraagde duurtijd in seconden kan ingeven maar het lijkt steeds maar weer te variëren, zelfs met dezelfde pc. (ik wil dus maar zeggen, uiteindelijk is het maar een ruwe benadering, schiet me dus niet dood...)



 

Ok, we gaan een beetje spelen met de data-ingangen. Ik sluit een transistor en een drukknop aan op pinnetje nr15 en een massapin. Dit stelt een 'sensor' voor. De transistor beschermt de poort tegen te hoge sensor-spanningen. Inderdaad, zet er nooit meer dan 5 volt op anders zou het wel eens 'gedaan' kunnen zijn. Dankzij mijn transistor en een spanningsdeler krijgt mijn poort ofwel 5 ofwel quasi 0 volt terwijl m'n sensorbasisspanning 9 of nul volt is.
Het adres om deze data-ingangen uit te lezen is 889.




 

het 'sensor'-gedeelte staat rechts... 




 

Vooraleer aan te sluiten op de pc: eerst testen! 




 

Onderstaand stukje programma doet het volgende. Zolang de sensor ingedrukt wordt moet de zoemer gaan en moet het ledje uitgaan. Wordt de sensor niet ingedrukt dan brandt het ledje en gaat de zoemer niet. U hebt vast zelf genoeg fantasie om ook toffe dingen te maken...




 

#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "iostream.h"



int main()
{
int a = 1;
int b = 2;
while ( a < b )
{
if (_inp(889) == 127)
_outp(888,1);
if (_inp(889) == 119)
_outp(888,2);
}

return 0;
}



 

doordat a altijd kleiner is dan b wordt de lus oneindig aantal keren doorlopen en wordt er constant uitgekeken of de waarde 119 of 127 is. sensor ingedrukt of niet...