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)); } } }