Projektas #6: Avarini? tarnyb? automobilis
Išmokite sukurti program?, kad „Code & Drive“ robotas mašina imituot? greitosios pagalbos automobil?. Pavyzdžiui: policijos automobil?, greit?j? ar ugniagesi? automobil?.
SUD?TINGUMO LYGIS: Vidutinis.
PRATIMO TRUKM?: 60 min.
MEDŽIAGOS:
- 6 AA elementai
- 1x USB – Mikro USB kabelis
- Kompiuteris
JUNGTYS:
„Code & Drive“ robotas mašina tur?s b?ti sukonstruotas ir prijungtas pagal instrukcij? vadov?.
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 MdirectionA = 4, velocityA = 5, MdirectionB = 7, velocityB = 6; // MOTOR A AND MOTOR B SPEED AND DIRECTION int trigPin = 13; // ULTRASONIC SENSOR PINS int echoPin = 12; float SSound = 0.0343; // SOUND SPEED IN cm/us long length, distance ; // VARIABLES TO CALCULATE DISTANCE IN cm int LEDG = 9; // GREEN LED PIN int LEDB = 10; // BLUE LED PIN void setup() { //BUILD&CODE 4IN1 PORTS CONFIGURATION pinMode ( MdirectionA, OUTPUT); pinMode ( velocityA, OUTPUT); pinMode ( MdirectionB, OUTPUT); pinMode ( velocityB, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDG , OUTPUT); pinMode(LEDB , OUTPUT); } void loop() { // CALCULATE DISTANCE digitalWrite(trigPin, LOW); // VERIFY THAT THE TRIGGER IS DEACTIVATED delayMicroseconds(4); // VERIFY THAT THE TRIGGER IS IN LOW digitalWrite(trigPin, HIGH); // ACTIVATE THE PULSE delayMicroseconds(14); // WAIT 10µs. THE PULSE REMAINS ACTIVE THIS TIME. digitalWrite(trigPin, LOW); // STOP THE PULSE AND WAIT FOR ECHO length = pulseIn(echoPin, HIGH) ; //pulseIn MEASURE THE TIME IT TAKES THE DECLARED PIN (echoPin) TO CHANGE FROM LOW TO HIGH STATUS (FROM 0 TO 1) distance = SSound* length / 2; // CALCULATE DISTANCE if (( distance < 25) && ( distance > 1)) // IF THE MEASURED DISTANCE IS BETWEEN 15 AND 1 CM { // BACK //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,HIGH); // MOTOR B ROTATION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 150); // MOTOR A SPEED, FROM 0 (STOP)TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,LOW); // MOTOR A DIRECTION ROTATION, HIGH (FORWARD) , LOW (BACKWARD) delay (1000); // TURN RIGHT //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,LOW); // MOTOR B ROTATION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 0); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,HIGH); // MOTOR A DIRECTION ROTATION, HIGH (FORWARD) , LOW (BACKWARD) delay (1000); } else if ( distance > 25) // IF DISTANCE IS HIGHER THAN 25 cm { //FORWARD //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,LOW); // MOTOR B ROTATION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 150); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,HIGH); // MOTOR A DIRECTION ROTATION, HIGH (FORWARD) , LOW (BACKWARD) } // ACTIVATE THE LIGHTS AND THE EMERGENCY SOUND Emergency(); } void Emergency () { digitalWrite(LEDG, HIGH);// GREEN LIGHT ON digitalWrite(LEDB, LOW);// BLUE LIGHT OFF tone(8, 494, 500);// BUZZER delay(400); // 400ms PAUSE digitalWrite(LEDG, LOW);// GREEN LIGHT OFF digitalWrite(LEDB, HIGH);// BLUE LIGHT ON tone(8, 440, 500);// BUZZER delay(400);// 400ms PAUSE }
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 jud?s ? priek?, jo šviesos diodai ir signalizatorius bus ?jungti ir jis imituos avarini? tarnyb? automobilio pavojaus signal?. Ultragarsiniam jutikliui aptikus objekt?, esant? už mažiau nei 25 cm, „Code & Drive“ robotas mašina ims jud?ti atgal, pasisuks ir jud?s ? priek? kita kryptimi.
Galite sujungti šio projekto kod? su projekt? Nr. 4 („Kli??i? išvengimas“) ir Nr. 5 („Linijos sekiklis“) kodais.
J?s galite individualizuoti „Code & Drive“ robot? mašin? naudodami autobusiuko važiuokl?s šablon?. Naudokite š? šablon?, kad gal?tum?te sukurti savo apipavidalinim? ir paverskite „Code & Drive“ robot? mašin? greitosios pagalbos automobiliu, policijos automobiliu ar priešgaisriniu automobiliu.