{code}
#pragma config(Sensor, S3, kosketus1, 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
*/
}
}
}
{code}
2. esimerkki jossa flipflop on sijoitettu omaan funktioonsa. Näin pääohjelmasta saadaan siistimpi.
{code}
#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
}
{code} |