En de Arduino op de testbank.

Maar helaas bleek de Arduino wat minder nauwkeurig te werken, 60 % van de metingen werd goed gelezen en afgehandeld.
Bij 40% miste de Arduino een bit zodat op het adres of de taak niet goed werd gelezen.
De PIC 16F618a werkte 100%, daar heb ik geen enkele fout gemeten.
Misschien is er nog wat aan te passen aan de leestijden bij de Arduino?
De code in de Arduino is zowat hetzelfde als die van de PIC.
int ledPin = 13; // LED connected to digital pin 13
int InPin7 = 7; // connected to digital pin 7
int N = 0;
int S = 0;
int Tijd = 0;
int Adres = 0;
int Fout = 0;
int Taak = 0;
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(InPin7, INPUT); // sets the digital pin 7 as input
}
void loop()
{
Tijd=0;
while(digitalRead(InPin7)==LOW) {} // wachten op hoog signaal
while(digitalRead(InPin7)==HIGH) {Tijd=Tijd+1; delayMicroseconds(10);} // er is een hoog signaal, nu de tijd meten
if (Tijd>7 & Tijd<14) {S=0;} // dit moet een 0 zijn
if (Tijd>2 & Tijd <

{S=1;} // dit moet een 1 zijn De smile moet 8 zijn!!!!!!!!
if (N==37) {N=0; // Als het adres en/of de taak klopt, doe dan ...........
if (187==Adres) {digitalWrite(ledPin,HIGH); delay(1000); digitalWrite(ledPin,LOW); delay(1000);}
if (191==Taak) {digitalWrite(ledPin,HIGH); delay(2000); digitalWrite(ledPin,LOW); delay(1000);}
}
if (N==36) {Fout=Fout+1*S; N=N+1;}
if (N==35) {Fout=Fout+2*S; N=N+1;}
if (N==34) {Fout=Fout+4*S; N=N+1;}
if (N==33) {Fout=Fout+8*S; N=N+1;}
if (N==32) {Fout=Fout+16*S; N=N+1;}
if (N==31) {Fout=Fout+32*S; N=N+1;}
if (N==30) {Fout=Fout+64*S; N=N+1;}
if (N==29) {Fout=Fout+128*S; N=N+1;}
if (N==28 & S==0) {Fout=0; N=N+1;}
if (N==27) {Taak=Taak+1*S; N=N+1;}
if (N==26) {Taak=Taak+2*S; N=N+1;}
if (N==25) {Taak=Taak+4*S; N=N+1;}
if (N==24) {Taak=Taak+8*S; N=N+1;}
if (N==23) {Taak=Taak+16*S; N=N+1;}
if (N==22) {Taak=Taak+32*S; N=N+1;}
if (N==21) {Taak=Taak+64*S; N=N+1;}
if (N==20) {Taak=Taak+128*S; N=N+1;}
if (N==19 & S==0) {Taak=0; N=N+1;}
if (N==18) {Adres=Adres+1*S; N=N+1;}
if (N==17) {Adres=Adres+2*S; N=N+1;}
if (N==16) {Adres=Adres+4*S; N=N+1;}
if (N==15) {Adres=Adres+8*S; N=N+1;}
if (N==14) {Adres=Adres+16*S; N=N+1;}
if (N==13) {Adres=Adres+32*S; N=N+1;}
if (N==12) {Adres=Adres+64*S; N=N+1;}
if (N==11) {Adres=Adres+128*S; N=N+1;}
if (N==10 & S==0) {N=N+1; Adres=0;}
if (N<10 & S==0) {N=0;}
if (N<10 & S==1) {N=N+1;}
}