Projektas #5: Linijos sekiklis
Išmokite sukurti program?, kad „Code & Drive“ robotas mašina sekt? linij? nupiešt? ant plokš?io paviršiaus. Jei paviršius yra baltas arba šviesios spalvos, linija turi b?ti juoda. Jei paviršius yra tamsios arba juodos, linija turi b?ti balta, kad linijos sekiklis gal?t? j? aptikti.
SUD?TINGUMO LYGIS: Vidutinis.
PRATIMO TRUKM?: 45 min.
MEDŽIAGOS:
- 6 AA elementai
- 1 USB – Mikro USB kabelis
- Kompiuteris
„Code & Drive“ robotas mašina tur?s b?ti sukonstruotas pagal instrukcij? vadov?.
JUNGTYS:
Šiame projekte j?s naudosite du linijos sekikli? jutiklius. Linijos sekikliai yra sukalibruoti pagal numatytuosius nustatymus, ta?iau nat?rali šviesa gali juos paveikti. Nor?dami juos sukalibruoti iš naujo, atlikite šiuos veiksmus:
- Ant linijos sekikli? viršaus yra sumontuotas potenciometras. Tai maža m?lyna d?žut? su baltu apskritimu.
- Nor?dami sureguliuoti potenciometr?, kad jis atpažint? juod? linij? naudokite kryžmin? atsuktuv?.
- Pad?kite „Code & Drive“ robot? mašin? ant linijos ir linijos sekiklio jutikliais ant linijos.
- Patikrinkite, ar ?sijung? ant jutiklio esantis raudonos spalvos diodas. Jei ne, sureguliuokite potenciometr?, kol ?sijungs raudonos spalvos diodas.
- Kai potenciometras yra sureguliuotas, perkelkite „Code & Drive“ robot? mašin? ant balto ar šviesios spalvos paviršiaus ir patikrinkite, ar ant linijos sekiklio jutiklio esantis raudonos šviesos diodas ?sijungia./li>
Linijos sekiklio jutikliai yra sukalibruoti teisingai, jeigu, pad?jus „Code & Drive“ robot? mašin? ant juodos linijos, ?sijungia ant jutikli? esantys raudonos spalvos diodai, o pad?jus „Code & Drive“ robot? mašin? ant balto paviršiaus raudonos spalvos diodai išsijungia.
Linij? sekiklio jutikliai perduoda skaitmenin? signal?, kur? galime matyti sumontuotame raudonos spalvos diode. Jei jutikliai aptinka juod? linij?, ?sijungs raudonos spalvos diodai. Jei jutikliai aptinka balt? ar šviesios spalvos pavirši?, raudonos spalvos diodai išsijungs.
Tokiu b?du, kai ?jungtas raudonos spalvos diodas, jis išsi?s ? valdymo pult? reikšm? „1“. O, kai raudonos spalvos diodas išsijungia, jis ? valdymo pult? išsi?s reikšm? „0“.
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; // SPEED AND DIRECTION OF MOTOR A AND MOTOR B int pinR = 2, pinL = 3, followerR, followerL; // LINE FOLLOWER SENSOR PINS void setup() { //BUILD&CODE 4IN1 PORTS CONFIGURATION pinMode ( MdirectionA, OUTPUT); pinMode ( velocityA, OUTPUT); pinMode ( MdirectionB, OUTPUT); pinMode ( velocityB, OUTPUT); pinMode (pinR, INPUT); pinMode (pinL, INPUT); } void loop() { // LINE FOLLOWER SENSOR READINGS followerR = digitalRead (pinR); followerL = digitalRead (pinL); if ((followerR == 0)& (followerL == 0)) // FORWARD { //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,LOW); // MOTOR B ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 150); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,HIGH); // MOTOR A ROTATION DIRECTION, HIGH (FORWARD), LOW (BACKWARD) } if ((followerR == 0)& (followerL == 1)) //RIGHT { //MOTOR B analogWrite (velocityB, 0); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,LOW); // MOTOR B ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 150); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,HIGH); //MOTOR A ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) } if ((followerR == 1)& (followerL == 0)) //LEFT { //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,LOW); // MOTOR B ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 0); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,HIGH); //MOTOR A ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) } if ((followerR == 1)& (followerL == 1)) //BACK { //MOTOR B analogWrite (velocityB, 150); // MOTOR B SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionB,HIGH); // MOTOR B ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) //MOTOR A analogWrite (velocityA, 150); // MOTOR A SPEED, FROM 0 (STOP) TO 255 (MAXIMUM SPEED) digitalWrite ( MdirectionA,LOW); //MOTOR A ROTATION DIRECTION, LOW (FORWARD), HIGH (BACKWARD) } }
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:
Pad?jus „Code & Drive“ robot? mašin? ant baltos paviršiaus su juoda linija (arba atvirkš?iai), linijos sekiklis j? aptiks ir robotas mašina ims jud?ti ? priek?, sekdamas linij?.