Projektas #3: Valdykite LED atstumo jutikliu
Sukonstruokite ir užprogramuokite grandin?, kad valdytum?te LED spalv? atstumo jutikliu. Jei objektas yra mažesniu nei 20 cm atstumu iki atstumo jutiklio, LED švies raudonai, ta?iau jei objektas yra didesniu nei 20 cm atstumu iki atstumo jutiklio, šviesos diodas švies žaliai.
SUD?TINGUMO LYGIS: Pradedantiesiems.
PRATIMO TRUKM?: 30 min.
MEDŽIAGOS:
- 2 LED (1 žalias ir 1 raudonas)
- 2 220? rezistoriai
- 1 Ultragarsinis jutiklis (atstumo jutiklis)
- 1 „Build&Code UNO“ plokšt?
- 1 bandomoji plokšt?
Kas yra ultragarsinis atstumo jutiklis?
Atstumo jutiklis daro lygiai t? pat? k? ir šikšnosparnis, kai skrenda nakt?, kad neatsitrenkt? ? jokius objektus. Skrisdamas šikšnosparnis siun?ia ultragarso bangas, o jei šios bangos atšoka atgal, tai reiškia, kad šalia yra objektas.
Ultragarsinis jutiklis daro t? pat?. Jis siun?ia ultragarsines bangas o, jei jos atšoka, jutiklis supranta, kad šalia yra objektas. Atstumas iki objekto matuojamas pagal laik?, kurio reikia atšokusiai ultragarsinei bangai sugr?žti.
Ultragarsin? jutikl? sudaro du skirtingi moduliai: si?stuvas ir imtuvas. Si?stuvas siun?ia ultragarso bangas, tai yra garsin?s bangos, kuri? žmon?s gird?ti negali (tos pa?ios bangos, kurias siun?ia šikšnosparniai). Šios bangos keliauja ? priek? tol, kol atsimuša ? objekt?. Tada jos atsimušusios sugr?žta ? jutikl?, imtuvui aptinkant ultragars?.
Kadangi garso bangos, joms sklindant oru, visada keliauja tokiu pa?iu grei?iu: 343 m/s, yra nesunku nustatyti atstum? iki aptikto objekto.
Pirma, turite išmatuoti laik?, kurio reikia garso bangai nusklisti iki objekto ir sugr?žti iki jutiklio. Tada š? laik? padalinkite iš 2, kad tiksliai žinotum?te, kiek laiko bangai prireik? pasiekti objekt?. Kai žinote nusklidimo laik? (iki objekto), turite j? padauginti iš grei?io, kuriuo bangos sklinda oru (343 m/s). Rezultatas bus atstumas iki objekto.
Atstumas = 343m/s *laikas (sekund?mis).
Jei ultragarsin?s bangos nesugr?žta, tai reiškia, kad šalia n?ra jokio objekto, ir jutiklis praneš, kad priešais j? nieko n?ra.
JUNGTYS:
- Bandomoji plokšt? priima elektros energij? iš „Build & Code UNO“ 5 V kontakto. Tada ji patenka v?l ? „Build & Code UNO“ per ?žeminimo kontakt?. Visi grandin?s ?žeminimo kontaktai turi b?ti sujungti tarpusavyje, kad tur?t? t? pa?i? ?žeminimo vert?. Paveiksle ?žeminimas yra pavaizduotas juodu kabeliu, visi jo komponentai yra sujungti tarpusavyje ir prijungti prie ?žeminimo plokšt?s. Raudonasis kabelis atitinka 5 V kontakt?, kuris tiekia elektros energij? ultragarsiniam atstumo jutikliui.
- Nor?dami ?jungti žali? ir raudon? šviesos diodus, turite prijungti juos prie skaitmeninio kontakto. Tai yra kontaktai, kurie siun?ia elektros energij? ? šviesos diodus. Paveiksl?lyje pavaizduotas raudonasis šviesos diodas yra prijungtas prie skaitmeninio kontakto Nr. 11 žaliu kabeliu, o žalias šviesos diodas yra prijungtas prie skaitmeninio kontakto Nr. 10 su violetiniu kabeliu.
- Ultragarsinis jutiklis turi 4 kontaktus. 2 iš j? jau yra prijungti (5 V ir ?žeminimas). Kiti 2 kontaktai yra „ECHO“ ir „TRIG“, jie abu yra skaitmeniniai ir b?tent jais bus perduodama informacija ? „Build & Code UNO“ plokšt?. Paveiksl?lyje „TRIG“ kontaktas yra prijungtas prie skaitmeninio kontakto Nr. 7 geltonu kabeliu, o „ECHO“ kontaktas yra prijungtas prie skaitmeninio kontakto Nr. 8 su oranžiniu kabeliu.
PROGRAMOS KODAS
Galite atlikti š? projekt? naudodami „Arduino“ program? arba suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Toliau pateikiamas reikiamas kodas.
„Arduino“ kodas
J?s parašysite program?, kuri nuolat nuskaitys ultragarsinio jutiklio siun?iam? informacij?. Pagal jutiklio nustatyt? atstum? ?sijungs raudonas arba žalias LED.
Kad tai ?vykt?, naudosite ši? s?lyg?: Jei atstumas yra mažesnis nei 20 cm, užsidegs raudonas LED, o žalias LED išsijungs; ta?iau jei atstumas yra didesnis nei 20 cm, užsidegs žalias LED, o raudonas LED išsijungs.
Nor?dami matuoti atstum?, turite nustatyti „TRIG PIN“ kaip išvest?, o „ECHO“ kaip ?vest?. „TRIG“ si?s ultragarso bangas ? priek?, o „ECHO“ lauks bang? atspindžio.
Tada kiekvien? kart?, kai bangos atsispind?s, turite išmatuoti objekto atstum?. Atminkite, kad garso greitis ore visada yra: 343,2 m/s.
Taigi, jei žinote bendr? laik?, kiek bangai reik?jo nusklisti iki objekto ir sugr?žti, tur?site apskai?iuoti atstum?. Tam vis? bangos nusklidimo iki objekto ir gr?žimo laik? turite padalinti iš 2, o tada padauginti iš garso grei?io ore:
Atstumas = 343m/s *laikas (sekund?mis)
Nor?dami dirbti su geresne raiška, naudosite cm/µs (centimetrus / mikrosekundes) ir ši? formul?:
Apskai?iav? atstum?, tur?site ?jungti raudon? arba žali? spalv?. Kad tai ?vykt?, abu kontaktus prie kuri? prijung?te du LED turite nustatyti kaip išvestis. Ir kai norite ?jungti vien? iš j?, turite jam priskirti AUKŠT? vert? (1), o kai norite, kad jis b?t? išjungtas, turite suteikti jam ŽEM? vert? (0).
- 1. 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 trigPin = 7; //Define the pins that you will work with int echoPin = 8; int LEDR = 10; int LEDV = 11; float Speed = 0.0343; // Sound speed at cm/us long duration, distance; void setup() { pinMode(trigPin, OUTPUT); //Define digital pin 7 as an output pinMode(echoPin, INPUT); //Define digital pin 8 as an input pinMode(LEDR, OUTPUT); //Define digital pin 10 as an output pinMode(LEDV, OUTPUT); //Define digital pin 11 as an output digitalWrite (LEDR , LOW); // Define digital pin 10 in a low status digitalWrite (LEDV , LOW); /Define digital pin 11 in a low status } void loop() { digitalWrite(trigPin, LOW); // Make sure that the TRIG is deactivated delayMicroseconds(2); // Make sure that the TRIG is in LOW digitalWrite(trigPin, HIGH); // Activate the output pulse delayMicroseconds(10); // Wait for 10µs, the pulse remains active during this time digitalWrite(trigPin, LOW); //Stop the pulse and wait for ECHO duration = pulseIn(echoPin, HIGH) ; // pulseIn measures the time since the defined pin (echoPin) changes its status from low to high (from 0 to 1) distance = Speed* duration / 2; //Divide by 2 because we want to have only the “go” time, not the “go and back” time // and divide by 29,1 because 1 is divided by the sound speed (1/SpeedSound) at cm/us if ( distance < 20){ digitalWrite (LEDR , HIGH); //If the sensor detects a distances less than 20 cm the red LED turns on digitalWrite (LEDV , LOW); //and turns off the green LED } else{ // otherwise digitalWrite (LEDR , LOW); // turn off the red LED digitalWrite (LEDV , HIGH); //turn on the green LED } }
Kodas vaizdinio programavimo programinei ?rangai naudojan?iai blokus
- Parsisi?skite ir ?diekite program?.
- Paleiskite programin? ?rang?
- Sukonfig?ruokite program?, kad išsaugotum?te kod? „Build & Code UNO“ plokšt?je. Instrukcijos pateikiamos „Arm Robot“ roboto rankos vadovo pirmuosiuose veiksmuose.
- Paleiskite program? ir nukopijuokite toliau pateikt? kod?. Naudokite š? paveiksl?l? kaip vadov?:
PRATIMO REZULTATAS:
Jutikliui aptikus objekt?, kuris yra ar?iau nei 20 cm, LED švies raudonai, o kai atstumas yra didesnis nei 20 cm, LED švies žaliai.