#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
      */
    }
  }
}

2. esimerkki jossa flipflop on sijoitettu omaan funktioonsa. Näin pääohjelmasta saadaan siistimpi.

#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
}
  • No labels
You must log in to comment.