Code Block |
---|
#pragma config(Sensor, S3, kosketus2kosketus1, sensorTouch) task main() { int kosketus2Value=0; int flipflop=0; int apu=0; int askel=0; while(true) { kosketus2Value = SensorValue(kosketus1); if(kosketus2Value==1&&apu==0) { flipflop=1; apu=1; } if(kosketus2Value==0&&flipflop==1) { apu=2; } if(kosketus2Value==1&&apu==2) { flipflop=0; apu=3; } if(kosketus2Value==0&&apu==3) { apu=0; } if(flipflop==1) { if(aksel==1) { if(valmis) { askel=2; } } if(askel==2) { } /* tänne ajotoiminnot */ } else { /* tänne pysäytykset */ } } } |
2. esimerkki jossa flipflop on sijoitettu omaan funktioonsa. Näin pääohjelmasta saadaan siistimpi.
Code Block |
---|
#pragma config(Sensor, S3, kosketus1, sensorTouch) int FlipFlopToiminto(); task main() { int toimii; while(true) { toimii=FlipFlopToiminto(); if(toimii==1) { /* tänne ajotoiminnot */ } else { /* tänne pysäytykset */ } } } //Talla funktiolla tutkitaan kosketusanturin toimintaa, joka toisella panalluksella funktio palauttaa nollan ja robotin pitaisi pysahtya int FlipFlopToiminto() { static int flipflop;//esitellaan muuttuja staattisena, jotta se muistaa edellisen kerran tilansa static int flipAskel;//0=odotellaan napin painallusta 1=nappi painettu alas 2=nappi paastetty ylos 3=nappi toisen kerran alas int kosketus2Value=0; kosketus2Value = SensorValue(kosketus1); if(kosketus2Value==1&&flipAskel==0)//eka painallus alas { flipflop=1; flipAskel=1; } if(kosketus2Value==0&&flipflop==1)//eka paasto { flipAskel=2; } if(kosketus2Value==1&&flipAskel==2)//toka kerta alas { flipflop=0; flipAskel=3; } if(kosketus2Value==0&&flipAskel==3)//toka kerta ylos { flipAskel=0; } return flipflop; //palautetaan funktion kutsujalle nolla tai yksi riippuen siitä kuikn mones kerta nappia painettiin } |