Projektas #4: Kli??i? išvengimas
Išmokite sukurti program?, kad „Code & Drive“ roboto mašinos ultragarsiniam jutikliui aptikus objekt? arba lyg? pavirši? už 25 cm ar ar?iau, b?t? ?jungti šviesos diodai, ji imt? važiuoti atgal ir pasisuka, kad išvengt? kli?ties. Jai išvengus objekto, ji toliau jud?s ? priek? tiesia linija.
SUD?TINGUMO LYGIS: Vidutinis.
PRATIMO TRUKM?: 40 min.
MEDŽIAGOS:
- 1 žalios spalvos šviesos diodas
- 1 raudonos spalvos šviesos diodas
- 1 Ultragarso jutiklis
- 2 NS varikliai su ratais
- 1 USB - Micro USB kabelis
- Kompiuteris
„Code & Drive“ robotas mašina tur?s b?ti sukonstruotas pagal instrukcij? vadov?.
Kas yra ultragarsinis jutiklis?
Išmatuojant laik? tarp signal? ir žinant garso greit?, galima ?vertinti atstum? iki objekto nuo kurio paviršiaus atsispind?jo garso signalas.
JUNGTYS:
- Prijunkite šviesos diodus prie skaitmenini? kontakt? „9“ ir „10“.
- Prijunkite ultragarsin? jutikl? prie skaitmenini? kontakt? „12“ ir „13“.
- Prijunkite NS variklius prie „Build & Code 4in1“ plokšt?s pilkos jungties.
PROGRAMOS KODAS
Galite atlikti š? projekt? naudodami „Arduino“, „Bitbloq“ arba kit? suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Toliau pateikiamas reikiamas kodas.
„Arduino“ kodas
- Parsisi?skite ir ?diekite „Arduino IDE“ program?. Ji si?loma „Windows“, „Mac OS“ ir „Linux“.
- Paleiskite „Arduino“ program? ir nukopijuokite ? j? toliau pateikt? kod?:
int PinSpeedMA = 5, PinSpeedMB = 6; // DIGITAL PIN FOR THE SPEED OF THE MOTORS int PinTurnMA = 4, PinTurnMB = 7; // DIGITAL PIN FOR DIRECTION OF THE MOTORS int TrigPin = 13; // ULTRASONIC SENSOR PINS int EchoPin = 12; float SSound = 0.0343; // SOUND SPEED IN cm/us long Lengh, Distance ; // VARIABLES TO CALCULATE THE DISTANCE IN cm int PinLED1 = 9, PinLED2 = 10; // LED1 AND LED2 DIGITAL PINS void setup() { // put your setup code here, to run once: //CONFIGURATION OF THE DIGITAL PORTS pinMode(PinSpeedMA, OUTPUT); pinMode(PinSpeedMB, OUTPUT); pinMode(PinTurnMA, OUTPUT); pinMode(PinTurnMB, OUTPUT); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(PinLED1, OUTPUT); pinMode(PinLED2, OUTPUT); // SPEED OF THE MOTORS 100 TO 255 analogWrite(PinSpeedMA, 175); analogWrite(PinSpeedMB, 175); } void loop() { // put your main code here, to run repeatedly: DistanceCM(); // CALL THE FUNCTION TO CALCULATE THE DISTANCE if (( Distance < 25) && ( Distance > 1)) // IF THE DISTANCE IS BETWEEN 1 AND 25CM { digitalWrite(PinLED1,HIGH);//LED1 Y LED2 = ON digitalWrite(PinLED2,HIGH); digitalWrite(PinTurnMA, HIGH);// CODE&DRIVE BACKWARD digitalWrite(PinTurnMB, LOW); delay(1000); digitalWrite(PinTurnMA, HIGH);// CODE&DRIVE ROTATION digitalWrite(PinTurnMB, HIGH); delay(1000); } else { digitalWrite(PinLED1,LOW);// LED1 Y LED2 = OFF digitalWrite(PinLED2,LOW); digitalWrite(PinTurnMA, LOW); // CODE&DRIVE FORWARD digitalWrite(PinTurnMB, HIGH); } } void DistanceCM()// DISTANCE CALCULATION FUNCTION { // CALCULATE THE DISTANCE IN CM digitalWrite(TrigPin, LOW); // VERIFY THAT THE TRIGGER IS DEACTIVATED delayMicroseconds(4); // VERIFY THAT THE TRIGGER IS LOW digitalWrite(TrigPin, HIGH); // ACTIVATE THE OUTPUT PULSE delayMicroseconds(14); // WAIT 10µs. PULSE REMAINS ACTIVE DURING digitalWrite(TrigPin, LOW); // STOP PULSE AND WAIT FOR ECHO Lengh = pulseIn(EchoPin, HIGH) ; // pulseIn MEASURES THE TIME THAT TAKES TO THE DECLARED PIN (echoPin) TO CHANGE FROM LOW TO HIGH STATUS (FROM 0 TO 1) Distance = SSound* Lengh / 2; // CALCULATE DISTANCE
Kodas vaizdinio programavimo programinei ?rangai naudojan?iai blokus
- Parsisi?skite ir ?diekite program?.
- Paleiskite programin? ?rang? ir nukopijuokite toliau pateikt? kod?. Naudokite š? paveiksl?l? kaip vadov?:
- Sukonfig?ruokite ir ?kelkite kod? vadovaudamiesi instrukcijomis pateiktomis Code & Drive“ roboto mašinos pirm?j? veiksm? vadove
- Kad kod? ?keltum?te teisingai, ?sitikinkite, kad „Build & Code 4in1“ plokšt?s BTL/USB jungiklis yra teisingai nustatytas ? USB pad?t?.
„Bitbloq“ kodas
- Parsisi?skite „Bitbloq“ ir ?diekite „Web2board“ program?l?.
- Paleiskite programin? ?rang? ir nukopijuokite toliau pateikt? kod?:
- Aparatin? ?ranga
- Programin? ?ranga
- Aparatin? ?ranga
- Sukonfig?ruokite ir ?kelkite kod? vadovaudamiesi instrukcijomis pateiktomis Code & Drive“ roboto mašinos pirm?j? veiksm? vadove
- Kad kod? ?keltum?te teisingai, ?sitikinkite, kad „Build & Code 4in1“ plokšt?s BTL/USB jungiklis yra teisingai nustatytas ? USB pad?t?.
PRATIMO REZULTATAS:
„Code & Drive“ robotas mašina važiuos tiesiai ? priek?. Kai ultragarsinis jutiklis aptinka objekt?, esant? mažesniu nei 25 cm atstumu, „Code & Drive“ robotas mašina ?jungs šviesos diodus, pavažiuos 1 sekund? atgal ir dar vien? sekund? pasisuks. Tada ji patikrins, ar n?ra joki? kli??i?, išjungs šviesos diodus ir toliau jud?s tiesiai ? priek?.