You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

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.

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