Txaloei erantzun

Objektuak ekiditen dituen robotaren aldaera da honakoa: txalo jo bakoitzean atzera egin eta norabidez aldatuko du robotak. Soinu-sentsorea gehituko diogu 2 etiketadun portuan (talka-sentsorea bere horretan utzi, ez dugu-eta erabiliko).

Programa ‘Objektuak ekidin’ programaren berdina da kasik, 2 portuan soinu-sentsorea konektatu besterik ez dugu egin behar. Soinu-sentsoreak muga-balio bat gainditzen duenean (guk zehaztutakoa), robotak atzerantz egin eta norabidez aldatuko du.

Nola zehaztu muga-balioa? Gogoan izan soinu-sentsoreak 50-90 dB arteko soinuak detektatzen dituela, hau da, gizakiaren entzumen-gaitasunari egokitutako tartean lan egiten du. Baina balioak, 0-100 artean itzultzen ditu, 0 soinurik ez eta 100 soinu maximoa izanik.
Beraz, frogak egin beharko dituzue soinu-sentsorearekin, txalo bati dagokion muga-balioa finkatzeko.

Egin proba ea zer moduz dabilen. Robot interesgarriagoa izango genuke, soinu- eta talka-sentsoreak konbinatuz gero. Hau da, robotak atzera egin eta biratuko luke, baldin eta objekturen batekin talka egin edo txalo-hotsa entzungo balu. Zeure esku uzten dugu azken aldaera honen programazioa.

Hona txalo.nxc programa:

#define BI_MOTOR    OUT_AC	// Bi gurpilak
#define EZK_MOTOR   OUT_C	// Ezker gurpila
#define ESK_MOTOR   OUT_A	// Eskuin gurpila
#define SOINU       S2     	// Soinu sentsorea 2. portuan
#define ABD         50		// Abiadura
#define ATZERA_DENB 300		// Atzera denb.
#define BIRA_DENB   500   	// Bira denb.
#define MUGA        60		// Soinu muga

task main()
{
SetSensorSound(SOINU);	//Soinu sentsorea 2. sarreran

while (true)  		// Begizta infinitua
{
   OnFwd(BI_MOTOR, ABD);	// 2 motorrak aurrera
   if (SENSOR_2 > MUGA)		// Soinuak muga gainditu
   {
      OnRev(OUT_AC, ABD);	// Atzera
      Wait(ATZERA_DENB);
      if (Random() >= 0)	// ezk-esk biratu ausaz
      {
         OnFwd(EZK_MOTOR, ABD);
      }
      else
      {
         OnFwd(ESK_MOTOR, ABD);
      }
      Wait(BIRA_DENB + Random(BIRA_DENB));

   }
}
}

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude