Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Wiki Markup
Tässä esimerkissä ajellaan teipin päästä päähän ja käännytään takaisin teipoin päässä. Ohjelman toiminnot, ajo suoraan ja kääntyminen esitetään askelilla. Tällä tavalla suurenkin sekvenssin toiminnot on helppo jakaa osiin.

{code}
#pragma config(Sensor, S4,     RGB,                 sensorCOLORFULL)
#pragma config(Sensor, S2,     kosketus1,           sensorTouch)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

//esitellaan funktio, jolla kysellaan halusta ajella robotilla
int FlipFlopToiminto();//tämä funktio on esitelty wikissä muualla

//paaohjelma
task main()
{
  int suunnanToistojenMaaraValkoisella=0;
  int suunnanToistojenMaaraMustalla=0;
  int askel=1;//1 = aja suoraan, 2 = kaanny teipin paassa
	while(1)
	{
	  wait1Msec(10);//odotellaan 10 millisekuntia
	  if(FlipFlopToiminto())//testataan koko ajan kayttajan halua ajaa robottia
	  {
	    if(askel==1)
	    {
				if(SensorValue(RGB)== 6) //WHITECOLOR) valkoinen havaittu, yritetaan takaisin mustalle
				{
				  suunnanToistojenMaaraMustalla=0;//nollataan toisen suunnan laskuri
					motor[motorC] = 0;
					motor[motorB] = 80;
					suunnanToistojenMaaraValkoisella++;//lisataan taman suunnan laskuriin yksi
				}
				if(SensorValue(RGB) == 1) //BLACKCOLOR) musta havaittu, yritetaan takaisin valkoiselle
				{
				  suunnanToistojenMaaraValkoisella=0;
					motor[motorC] = 80;
					motor[motorB] = 0;
					suunnanToistojenMaaraMustalla++;
				}
				//testataan: paattyiko teippi eli jos maaraaikaan mennessa ei loytynyt teipin paa niin vaihdetaan askeleelle kaksi
				if(suunnanToistojenMaaraValkoisella>50||suunnanToistojenMaaraMustalla>50)
				{
				  suunnanToistojenMaaraMustalla=0;
				  suunnanToistojenMaaraValkoisella=0;
				  askel=2;
				}
			}
			if(askel==2)
			{
			    //kaannytaan paikoillaan ympari
					motor[motorC] = -40;
					motor[motorB] = 40;//moottori peruuttaa

			if(SensorValue(RGB) == 1) //BLACKCOLOR)
				{
				  askel=1;//kun teippi loytyi vaihdetaan takaisin askeleelle yksi
				}
			}
		}
		else//pysaytetaan robotti, jos painetaan toisen kerran kosketusanturia
		{
		  	motor[motorC] = 0;
		        motor[motorB] = 0;
		}
	}
}
{code}