Telemetru cu laser infrarosu. Robot Senses: Senzor de distanță IR Sharp GP2Y0A21YK Specificații senzorului de distanță IR Sharp

Un telemetru cu laser cu infraroșu emite energie într-un interval invizibil pentru ochiul uman. Este un dispozitiv laser de clasa 1, conform cerințelor US Food and Drug Administration, 21 CFR 1040.10-11. Marca de conformitate cu laserul FDA este aplicată pe șasiul CMS Wireless. Acest marcaj indică, de asemenea, modelul, numărul de serie și data fabricării.

Clasa 1 include lasere care, în condiții normale de funcționare, nu pot dăuna unei persoane. La instalarea normală, o persoană poate privi în raza laser fără ochelari sau cu ochelarii lor normali (Nu priviți în raza laser când sistemul este pornit - precauție standard).

Laserul rămâne în starea excitată atâta timp cât comenzile LASER TEST sau START SURVEY continuă să fie selectate în software-ul controlerului. Când laserul este într-o stare excitată, distanțele și alte date sunt afișate pe ecranul controlerului.

LED-ul roșu de pe panoul de control situat în cutia controlerului este aprins constant când sistemul este pornit, indiferent dacă laserul este alimentat sau nu.

Capul de scanare laser include un telemetru laser și o unitate de captură (Figura 7.2, Figura 7.3).

Figura 7.2 - Cap de scanare

Figura 7.3 - Vedere exterioară a capului de scanare laser

Figura 7.4 - Instalare VIP în condiții subterane

Figura 7.5 - Instalarea tijelor și a catargelor în condiții subterane

Figura 7.6 - Introducerea scanerului în cavitate în condiții subterane

Tabelul 33 - Specificații

Cap de scanare laser
Domeniu de măsurare țintă cu reflexie de 20%. 350 m
Domeniul de măsurare până la peretele alb 650 m
Intervalul unghiului de rotație 0 - 360º
Interval de înclinare 0 - 145º
Precizie de măsurare liniară -+2 cm în intervalul de temperatură de funcționare
Rezoluţie 1 cm
Precizia măsurării unghiulare -+ 0,3º
Viteza maxima de rotatie 21º/s
Lungime de undă 905 nm (infraroșu), 635 nm (optic).
Deviația fasciculului laser 5 mrad
Număr maxim de citiri 100.000 (pe fotografie)
Structura de sprijin
materiale CFRP, stații de andocare din polietilenă de înaltă densitate, cleme din oțel inoxidabil.
Lungimea tijei 2-9 m, reglabil
Numărul de secțiuni de tijă 5 conice de 2 m fiecare
Lungimea suporturilor catargului (2 buc) 2-5 m, reglabil
Numărul de extensii de catarg 5 (diferite lungimi)
Alimentare (baterii externe)
Voltaj Evaluat la 24 V
Capacitate 7,2 Ah, 24 V nominal
Consumul de energie 2,5 A, 24 V nominal
Condiții externe
Temperatura de lucru Contor de distanță (de la -10º la +50º), indicator (de la 0º la 40º)
Temperatura de depozitare De la -20 la +50º
Umiditatea aerului 0 până la 95% fără condensare
Dimensiuni
Sursa de alimentare (mm) 270 * 247 * 175
Greutate, kg 8.3
Catarg (mm) 2290*230*250
Secțiunea tijei (mm) 1930*200*250
Greutate, kg 44.5
Siguranța ochilor
Indicator Clasa 2
Telemetru 1 clasa
Dispozitiv de inserție verticală (VIP)
Componente 25 de tije de aluminiu (aproximativ 1,5 metri fiecare)
1 adaptor pentru cap de scanare
2 sisteme cu arc de centrare
1 cablu de conectare, aproximativ 41 de metri

Sondajul CMS este utilizat în cazurile în care accesul uman este periculos și controlul vizual nu este posibil. Sondajul oferă o poziție absolut exactă a golurilor legate de sistemul de coordonate, care, la rândul său, face posibilă proiectarea rațională, exactă și corectă a utilizării ulterioare sau rambursării acestor goluri.

Telemetrul cu infraroșu vă permite să determinați distanța până la obiecte. Acesta este modelul Sharp GP2Y0A021. Senzorul determină distanța prin fasciculul de lumină reflectat în spectrul infraroșu. Telemetrul poate fi folosit pentru a evita obstacolele și pentru a naviga pe teren.

Ieșirea este un semnal analogic, cu un nivel de tensiune dependent de distanța până la țintă în direcția setată.

Senzorul este conectat la electronica de control prin 3 fire. Când este conectat la un Arduino, va fi extrem de convenabil să utilizați Troyka Shield. Cablul de conectare este inclus in pachet.

Atenţie! Pinout-ul de alimentare pentru acest senzor poate varia. Înainte de a porni modulul, familiarizați-vă cu caracteristicile de conectare a modulelor DFRobot.

Pentru a instala în siguranță telemetrul oriunde, există un suport special.

Caracteristici

  • Tensiune de alimentare: 4,5-5,5 V
  • Consum de curent: 30-40 mA
  • Interval de distanta: 10cm - 80cm

Restricții

Deoarece dispozitivul se bazează pe lumină, senzorul nu este potrivit pentru a determina distanța până la obiectele care absorb lumină. Telemetrul nici măcar nu va simți o suprafață transparentă, cum ar fi plasticul sau plexiglasul. Pentru a determina distanțele într-un astfel de mediu, telemetrul cu ultrasunete URM37 sau HC-SR04 este potrivit.

Acest telemetru în infraroșu are în față o mică zonă moartă: 10 cm.Dacă trebuie să luați în considerare obstacolele la distanțe mai scurte, iar distanța limită nu este atât de importantă, luați în considerare un telemetru pentru distanțe de 4-30 cm din aceeași linie. Dacă dispozitivul dvs. trebuie să vadă mai departe, căutați un telemetru pentru distanțe de 20-150 cm. Puteți obține mai multă flexibilitate combinând senzori cu diferite intervale.

Senzorul de distanță în infraroșu Sharp GP2Y0A este o alegere populară pentru diverse proiecte bazate pe Arduino care necesită măsurarea precisă a distanței.

Senzorii Sharp au o diodă emițătoare de lumină (LED) în infraroșu (IR) cu o lentilă care emite un fascicul îngust de lumină. Fasciculul reflectat de obiect este îndreptat printr-o altă lentilă către o fotocelulă sensibilă la poziție (Position-Sensitive Detector, PSD). Locația fasciculului incident pe PSD determină conductivitatea acestuia. Conductivitatea este convertită în tensiune și, de exemplu, digitizând-o cu un convertor analog-digital de microcontroler, puteți calcula distanța.

Ieșirea senzorului de distanță în infraroșu Sharp este invers proporțională - pe măsură ce distanța crește, valoarea acestuia scade încet. Vedere a graficului relației dintre distanță și tensiune.

Senzorii, în funcție de tipul lor, au limite de măsurare în care ieșirea lor poate fi considerată fiabilă. Măsurarea distanței reale maxime este limitată de doi factori: scăderea intensității luminii reflectate și incapacitatea PSD-ului de a înregistra mici modificări în locația fasciculului imagine. În general, graficul dintre distanță și tensiune nu este liniar, dar în cadrul distanțelor permise, graficul reciprocului tensiunii de ieșire și distanței este suficient de aproape de liniaritate încât este destul de ușor să se obțină o formulă pentru conversia tensiunii în distanță. Pentru a găsi o astfel de formulă, este necesar să introduceți punctele acestui grafic în orice program tabelar de prelucrare a datelor și să creați un nou grafic din ele. Într-un program tabelar de procesare a datelor, este posibil să se calculeze automat o linie de tendință pe baza punctelor unui grafic. De exemplu, pentru senzorul GP2Y0A021YK0F:


Specificații telemetru în infraroșu ascuțit

Tensiune de lucru: 4,5 - 5,5 V; Consum maxim de curent: 40 mA (tipic - 30 mA); Tip semnal de ieșire: analog; Tensiune diferențială mai mare decât domeniul de recunoaștere a distanței: 2,0 V; Timp de răspuns: 38 ± 10 ms Domeniu de operare: Senzor GP2Y0A41SK0F: 4 - 30 cm; Senzor GP2Y0A021YK0F: 10 cm - 80 cm; Senzor GP2Y0A02YK0F: 20 cm - 150 cm;

Exemplu de utilizare

Să creăm un exemplu de numărare a vizitatorilor magazinului. Să simplificăm problema, presupunând că intrarea se face printr-o ușă îngustă și există uși diferite pentru intrare și ieșire. La intrare punem telemetrul cu infrarosu Sharp GP2Y0A21YK0F (20-150 cm) astfel incat la trecerea unei persoane, citirile sa fie de 10 - 50 cm, in lipsa persoanelor 80 cm. Cand este detectat un vizitator crestem contor pentru numărarea vizitatorilor. Afișăm datele pe afișajul grafic Nokia 5110. Pentru a afișa informații de la senzori, vom folosi LCD-ul Nokia 5110. Acesta este un afișaj grafic monocrom cu o rezoluție de 84 × 48 pixeli. Ecranul Nokia 5110 vine pe o placă asociată cu un controler PCD8544 și un antet pin. Consumul de energie al afișajului îi permite să fie alimentat de la ieșirea de +3,3 V a plăcii Arduino.

Pentru proiect avem nevoie de următoarele detalii:
placa arduino uno
panou (Breadboard Half)
senzor de distanță în infraroșu ascuțit GP2Y0A21YK0F
Ecran Nokia 5110
fire de conectare
Să asamblam circuitul prezentat în figură.

Să începem IDE-ul Arduino. Să creăm o schiță nouă și să îi adăugăm următorul conținut: //Senzor de distanță în infraroșu //site web // conectarea bibliotecilor pentru a lucra cu afișajul Nokia #include #include // Nokia 5110 // pin 3 - Serial clock out (SCLK) // pin 4 - Ieșire date seriale (DIN) // pin 5 - Selectare date/comandă (D/C) // pin 6 - Selectare cip LCD (CS) // pin 7 - Resetare LCD (RST) Afișaj Adafruit_PCD8544 = Adafruit_PCD8544 (3, 4, 5, 6, 7); // pin analog pentru conectarea ieșirii Vo a senzorului const int IRpin = A0; // variabile int valoare1; // pentru a stoca valoarea analogică unsigned long timevisitors; // timpul de tranzit int count_visitors=0; // variabilă numărul de vizitatori void setup() ( // pornește portul serial Serial.begin(9600); Serial.println("start"); // afișa inițializarea display.begin(); // setează contrastul fundalului ecranului display.setContrast (60); display.clearDisplay(); //șterge ecranul display.setTextSize(1); //font size display.setTextColor(BLACK); //color //splash screen display.setCursor(5,15); display .print ("Vizitatori: 0"); display.display(); delay(2000); ) void loop() ( // obțineți valoarea netezită și convertiți în voltage value1=irRead(); if(value1>50) / / fixează trecerea (timevisitors=millis(); while(irRead()>50) ; if(millis()-timevisitors>300) //> timpul minim de tranzit ( Serial.println("pasage!!!"); count_visitors =count_visitors+1 ; // incrementează contorul // se imprimă pe monitorul portului serial Serial.print("count_visitors="); Serial.println(count_visitors); // se imprimă pe afișaj display.clearDisplay(); display.setCursor (5,15); afișare .print("Vizitatori: "); afișare.print(număr_vizitatori); display.display(); ) ) întârziere(200); ) // Medierea mai multor valori pentru netezirea int irRead() ( media int = 0; // variabilă pentru însumarea datelor // Obținerea a 5 valori pentru (int i=0; i<5; i++) { value1 = analogRead(IRpin); // значение сенсора переводим в напряжение float volts = analogRead(IRpin)*0.0048828125; // и в расстояние в см int distance=32*pow(volts,-1.10); averaging = averaging + distance; delay(55); // Ожидание 55 ms перед каждым чтением } value1 = averaging / 5; // усреднить значения return(value1); } Работать с сенсорами SHARP очень просто - достаточно подключить к нему питание и завести вывод Vo на аналоговый вход Arduino. Значение получаемой функции analogRead представляет собой целое число от 0 до 1023. Таким образом, чтобы узнать напряжение на выходе сенсора, необходимо значение на аналоговом входе Arduino умножить на 0,0048828125 (5 В / 1024). Расстояние вычисляем по формуле distance=volts*0.0001831-0.003097. При чтении данных, при каждой итерации цикла, иногда приходят разные значения сигнала при одном и том же расстоянии. Датчик передает сигнал на аналоговый порт с некоторой амплитудой и иногда в момент считывания данных значение оказывалось отличным от нормального, потому что итерация приходится на провал. Для сглаживания значений, получаемых с дальномера используем функцию irRead(). Датчик обнаруживает попадание объекта в дверной проем. Далее ожидаем окончания прохода. Если это время больше минимального времени прохода (отсечение взмаха руки, пролет предмета и пр.) инкрементируем счетчик посетителей и выводим данные в последовательный порт и на дисплей. Для работы с дисплеем Nokia 5110 нам понадобятся Arduino библиотеки Adafruit_GFX и Adafruit_PCD8544.

Întrebări frecvente Întrebări frecvente

1. Nu sunt afișate informații pe afișaj
  • Verificați conexiunea corectă a tuturor cablurilor, conform diagramei din Figura 5.
2. Senzorul de distanță nu funcționează
  • Verificați conexiunea modulului ascuțit;
  • Verificați dacă detectarea senzorului este declanșată în monitorul portului serial.

În acest articol, vom lua în considerare conectarea și lucrul cu senzorul de măsurare a distanței IR SHARP GP2Y0A02YK0F.
Spre deosebire de același, acest senzor are un domeniu de măsurare mult mai modest, dar are totuși o serie de proprietăți distinctive utile. De exemplu, acest senzor vă permite să măsurați distanța chiar și prin suprafețe transparente (deși pierzând acuratețea citirilor, dar totuși).

Conexiune senzor:

GND la oricare dintre pinii GND --- arduino

OUT la oricare dintre intrările analogice ale arduino (conectate la A0 în exemple)

VCC la + 5 volți pe arduino

Principalele caracteristici tehnice:

Interval de măsurare a distanței: 20 până la 150 cm

ieșire analogică

Dimensiuni: 29,5x13x21,6mm

Consum de curent: 33mA

Tensiune de alimentare: 4,5 până la 5,5 V

Trebuie să fie despachetat și adăugat în folderul „biblioteci” din folderul IDE Arduino. Nu uitați să reporniți mediul dacă IDE-ul era deschis când l-ați adăugat.

Care este particularitatea acestei biblioteci și de ce este recomandată pentru utilizare? Răspunsul este simplu și constă în principiul funcționării sale. Pentru măsurarea distanței se folosesc multe măsurători, din care se aruncă cele eronate, care sunt foarte diferite de cele învecinate. Potrivit autorilor, 12% din toate citirile contribuie cu 42% din eroare la valoarea finală a distanței, dacă măsurătorile eronate nu sunt aruncate.

Să trecem la codul programului - un exemplu de lucru cu un senzor (exemplul este potrivit și pentru senzorul GP2Y0A21Y, în cod va trebui să modificați valoarea modelului la 1080):

Exemplu de cod de program

#include #define ir A0 //pin la care este conectat senzorul. Cu siguranta analogic!#define model 20150 //modelul senzorului. 1080 pentru GP2Y0A21Y, 20150 pentru GP2Y0A02Y SharpIR SharpIR(ir, model); gol înființat () { Serial.begin(9600); ) gol buclă() ( delay(2000); nesemnat long pepe1=millis (); // notează timpul înainte de începerea măsurătorilor int dis=SharpIR .distance(); // obțineți distanța de la senzor Serial.print("Distanța medie: "); // imprimă distanța până la monitorul portului Serial.println(dis); nesemnat lung pepe2=millis()-pepe1; // numără timpul petrecut la măsurare Serial.print("Timpul necesar (ms): "); // și scoateți-l Serial.println(pepe2); )

telemetrul

În această lecție, vom afla mai multe despre telemetru.

telemetru cu ultrasuneteHC-SR04

Astăzi (2016) nu costă mai mult de 1 dolar pe AliExpress.

Senzorul are 4 iesiri:

  • Vcc - Acest pin este alimentat la 5V.
  • Trig - Acest pin trebuie să fie condus la 1 logic timp de 10µs pentru ca telemetrul să emită o undă ultrasonică.
  • Eco - După revenirea undei ultrasonice, acestui contact i se va da o unitate logică pentru un timp proporțional cu distanța până la obiect.
  • Gnd - Acest pin se conectează la masă.

Telemetru cu ultrasunete - funcționează pe principiul „liliac”. Emite o undă ultrasonică și numără timpul necesar pentru ca valul să revină. Cunoscând viteza sunetului și timpul necesar pentru ca valul să revină, puteți calcula distanța până la obiect.

Cu ajutorul acestui telemetru, vom asambla un mic senzor de parcare, care poate fi mărit și asamblat ca un dispozitiv gata făcut pentru parcarea unei mașini. De asemenea, vă voi arăta cum puteți utiliza telemetrul pentru a vă controla dispozitivele.

Telemetru

Să asamblam un circuit simplu pentru a înțelege cum funcționează telemetrul.

Cod

#define ECHO 13 #define TRIG 12 void setup() ( pinMode(ECHO, INPUT); // ECHO trebuie setat la o unitate logică pinMode(TRIG, OUTPUT); //Din TRIG vom citi valoarea distanței Serial.begin (9600) ; //Stabiliți o conexiune la portul serial ) void loop() ( //Feed TRIG HIGH și imediat LOW digitalWrite(TRIG, HIGH); digitalWrite(TRIG, LOW); //Citiți lungimea semnalului de intrare în microsecunde int dist = pulseIn( ECHO, HIGH) / 54; // Împărțiți la 54 pentru a converti citirile în cm.

Explicații

pulseIn(ecou,ÎNALT);- Cu această funcție, am numărat timpul pentru care pinul ECHO este setat la HIGH. Acest timp este considerat în microsecunde.

În general, pulseIn(); se poate scrie asa:

pulseIn(pin, valoare, timeout);

Pin- Pinul pe care va fi calculat timpul.

Sens– Nivelul semnalului așteptat la care va fi efectuată contorizarea. MARE sau SCĂZUTĂ.

Pauză– timpul în microsecunde în care este așteptată sosirea semnalului. După expirarea timpului de expirare, valoarea returnată de funcție va fi setată la zero.

Deci, ne-am dat seama de principiul de funcționare al telemetrului. E timpul să faci senzori de parcare pentru mașini de jucărie.

Parktronic

Schema circuitului arată astfel:

#define ECHO 3 // Primește semnal de la telemetru #define TRIG 2 // Trimite semnal către telemetru #define COUNT 5 // Număr de LED-uri #define BUZZ 6 // Pin sonerie #define FIRST 9 // Primul pin de LED-uri #define dist_setup 1 //Factor de reglare #define frequency 5000 void setup() ( for(int i = 0; i< COUNT; ++i) //Обозначаем светодиоды как выход... { pinMode(i+FIRST, OUTPUT); } pinMode(ECHO, INPUT); //...ECHO как вход... pinMode(TRIG, OUTPUT); //...TRIG как выход... pinMode(BUZZ, OUTPUT); //...пищалку как выход Serial.begin(9600); //Установим соединение с Serial } void loop() { digitalWrite(TRIG, HIGH); //Подаем команду на дальномер digitalWrite(TRIG, LOW); int dist = pulseIn(ECHO, HIGH) / 54; //Измеряем расстояние до объекта dist = constrain(dist, 2, 60); //Полученные значения загоняем в диапазон от 2 до 60 //Сравниваем полученные показания и включаем нужный режим if (dist < 10) { all_led_on(); } else if (dist < 20 * dist_setup) { four_led_on(); } else if (dist < 30 * dist_setup) { three_led_on(); } else if(dist < 40 * dist_setup) { two_led_on(); } else if(dist < 50 * dist_setup) { one_led_on(); } else { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, LOW); } noTone(BUZZ); } } // Описание режимов void one_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); tone (BUZZ, frequency, 1000); delay(1000); } void two_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 700); delay(700); } void three_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 400); delay(400); } void four_led_on() { digitalWrite(9, LOW); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 200); delay(200); } void all_led_on() { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, HIGH); } tone(BUZZ, frequency, 5000); delay(5000); }

Explicații

Senzorii de parcare sunt echipati cu LED si indicatie sonora. Când un obiect se apropie la o anumită distanță, se aud bipuri mai frecvente și se aprind mai multe LED-uri.

dist_ înființat - acesta este coeficientul prin care puteti regla distanta la functionarea senzorilor de parcare.

Pentru mine este egal cu unu. Dacă trebuie să reduceți distanța, trebuie să reduceți coeficientul, dar apoi va fi sub forma 0.xxx. Pentru a face acest lucru, este introdusă o variabilă de tip float.

Frecvența semnalului sonor poate fi, de asemenea, modificată. Pentru a face acest lucru, trebuie să modificați valoarea frecvență . Dar trebuie amintit că emițătorul piezo scârțâie teribil. Extrem. Și, mi se pare că te va descuraja rapid să-l folosești mai mult sau mai mult de 5 minute.

Opțional, reduceți frecvența la 20 Hz sau conectați un difuzor obișnuit de 8 ohmi, de exemplu.

Parola

Acum să încercăm să facem un cifru secret care să aprindă LED-urile. Și dacă includeți un servomotor cu o supapă în circuit, atunci puteți face o încuietoare pe ușă sau o cutie cu o parolă.

Acordați atenție diagramei.

Cod

//Primii pini pentru telemetru #define TRIG1 12 #define ECHO1 13 //Al doilea pini pentru telemetru #define TRIG2 10 #define ECHO2 11 //LED-uri #define FIRST 3 #define COUNT 5 //Buton de resetare #define RESET 2 //Variabile de parolă intkey1 ; intkey2; intkey3; void setup() ( //Proiectarea LED-urilor ca ieșire pentru(int i = 0; i< COUNT; i++) { pinMode(i+FIRST, OUTPUT); } //Обозначение пинов на дальномерах pinMode(TRIG1, OUTPUT); pinMode(ECHO1, INPUT); pinMode(TRIG2, OUTPUT); pinMode(ECHO2, INPUT); pinMode(RESET, INPUT_PULLUP); } void loop() { //Подача сигнала на дальномеры digitalWrite(TRIG2, HIGH); digitalWrite(TRIG2, LOW); int dist2 = pulseIn(ECHO2, HIGH,3000) / 54; digitalWrite(TRIG1, HIGH); digitalWrite(TRIG1, LOW); int dist1 = pulseIn(ECHO1, HIGH) / 54; //Дополнительная индикация "ввода" символов if(dist1 < 10 && dist2 < 10) { digitalWrite(5, HIGH); delay(100); } if(dist2 >20 && dist2< 25) { digitalWrite(4, HIGH); delay(100); } if(dist1 >20 && dist1< 25) { digitalWrite(6, HIGH); delay(100); } //Код пароля + индикация "ввода" символов if(dist2 >10 && dist2<15) { key1 = 1; digitalWrite(3, HIGH); delay(100); } if(dist1 >10 && dist1< 15) { digitalWrite(7, HIGH); delay(100); key1 = 0; } if(dist1 >20 && dist1< 25 && key1 == 1) { key2 = 1; } else if(dist2 >20 && dist2<25 || key1 == 0) { key1 = 0; key2 = 0; } if(dist1 < 10 && dist2 < 10 && key2 == 1) { key3 = 1; } if(key3 == 1) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, HIGH); } } if(key3 == 0) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, LOW); } } //Сброс пароля boolean res = digitalRead(RESET); if(res == 0) { key1 = 0; key2 = 0; key3 = 0; } }

Explicații

Pentru a aprinde toate cele cinci LED-uri, trebuie să cunoașteți succesiunea acțiunilor pe care trebuie să le efectuați. Iată o sarcină pentru dvs. - „În ciuda explicațiilor de mai jos, determinați ce secvență de acțiuni trebuie efectuată, astfel încât toate cele cinci LED-uri să se aprindă”

Aceasta este o sarcină realizabilă dacă ați citit prima parte a cursului și ați înțeles cum funcționează funcția. dacă().

Am înţeles? Dacă da, bine făcut, iar dacă nu, aproape bine făcut.

Există trei „caractere introduse” în total – de la 0 la 10, de la 10 la 15 și de la 20 la 25.

Starea de la 0 la 10 este activată prin aducerea ambelor mâini la 0 până la 10 cm de ambele telemetru. Dacă se face acest lucru, LED-ul galben se va aprinde.

Starea de la 10 la 15 se va aprinde când vă mutați mâna către telemetrul din dreapta sau din stânga la o distanță de 10 până la 15 cm. Vi se va solicita să faceți acest lucru de către LED-ul din stânga pentru mâna stângă și LED-ul din dreapta pentru mâna dreaptă. .

Starea de la 20 la 25 se aprinde în momentul în care distanța de la mână la unul dintre telemetru este de la 20 la 25 cm. Veți fi informat despre acest lucru prin LED-urile secunde din stânga și al doilea din dreapta pentru mâna stângă, respectiv dreapta.

Este de remarcat faptul că secvența trebuie urmată cu strictețe.

  • Ridicați mâna DREAPTĂ la o distanță de 10 până la 15.
  • După ce LED-ul din dreapta se aprinde, aduceți mâna STANGA la o distanță de 20 până la 25. Toate acestea se fac fără a schimba poziția mâinii drepte.
  • După ce ați indicat al doilea LED din stânga, mutați mâna STANGA spre stânga, astfel încât LED-ul din stânga să nu se aprindă, altfel va trebui să formați din nou codul. Apropiați mâna DREAPTĂ de o distanță de la 0 la 10 și aduceți mâna STÂNGĂ la aceeași distanță, fără a atinge distanța de la 10 la 15
  • LED-urile ar trebui să fie aprinse și să nu răspundă la acțiunile dvs.
  • Apăsați butonul RESET pentru a reseta parola. LED-urile ar trebui să se stingă.

Fiecare mișcare greșită resetează parola și trebuie introdusă din nou. S-ar putea să nu funcționeze prima dată, dar după câteva minute de antrenament, sunt sigur că totul va merge, iar LED-urile se vor aprinde.

După ce reușiți să aprindeți toate LED-urile, vă puteți testa și schimba codul astfel încât secvența să fie diferită - la discreția dvs. Puteți crea mai multe „simboluri” sau le puteți lăsa pe aceleași, dar creați fiecare simbol folosind două telemetru. Aceasta va fi o sarcină pentru o soluție independentă.

telemetru în infraroșuAscuțit

Cu aceste telemetru, totul este și mai ușor. Trebuie să le conectați, ca toți senzorii analogici. Și chiar posibil fără un rezistor de 10 kΩ. Dacă din anumite motive nu știți cum să faceți acest lucru, atunci acest lucru este descris în articolul meu despre .

Theremin

Există un astfel de instrument muzical ca thereminul. Și acum vom colecta aspectul acestui instrument.

Cod

// Desemnează telemetrul, butonul și soneria #define RFIND A5 #define BUT 9 #define BUZ 8 // Variabile booleene pentru butonul bool sound_on = false; bool but_up = adevărat; void setup() ( pinMode(RFIND, INPUT); pinMode(BUZ, OUTPUT); pinMode(BUT,INPUT_PULLUP); ) void loop() ( //Cod pentru a activa și dezactiva thereminul bool but_now = digitalRead(DAR); if( but_up && !but_now) ( delay(10); bool but_now = digitalRead(BUT); if(!but_now) ( sound_on = !sound_on; ) ) but_up = but_now; //Cod pentru theremin if(sound_on == 1) ( int val, frecvență; val = analogRead(RFIND); //Puteți să vă jucați cu constrain și să mapați la conținutul inimii dvs. val = constrain(val, 100, 400); freq = map(val, 100, 400, 1000, 2500); ton (BUZ, frecvență, 20); ))

Explicații

Dacă apăsați butonul, apoi din tweeter sau difuzor, în funcție de ceea ce ați conectat, va suna un semnal care va varia în funcție de distanța de la telemetru până la mâna dumneavoastră.

Butonul este necesar pentru a opri sau a porni „Thereminul”

Rezultat

Astăzi am aruncat o privire mai atentă la telemetru și am făcut câteva experimente mici, dintre care două pot fi folosite în viața reală. Parktronic - ar ajuta la parcare, iar incuietoarea cu combinatie poate fi imbunatatita in asa fel incat atunci cand introduci parola corecta, servomotorul sa deschida zăvorul de pe ușa camerei tale, de exemplu.

Lista elementelor radio

Desemnare Tip Denumirea Cantitate NotăMagazinBlocnotesul meu
Schema 1
Placa Arduino

Arduino Uno

1 La blocnotes
Tabla de paineBreadboard-jumătate1 La blocnotes
Fire de conectare"Tata Papa"4 La blocnotes
TelemetruHC-SR042 La blocnotes
Schema 2
Placa Arduino

Arduino Uno

1 La blocnotes
TelemetruHC-SR041 La blocnotes
Fire de conectare"Tata Papa"15 La blocnotes
Tabla de paineBreadboard-jumătate1 La blocnotes
Sonerie piezo 1 La blocnotes
Rezistor

220 ohmi

1 La blocnotes
Dioda electro luminiscenta

AL102B

2 La blocnotes
Dioda electro luminiscenta

AL307V

1 La blocnotes
Dioda electro luminiscenta

AL307D

2 La blocnotes
Schema 3
Placa Arduino

Arduino Uno

1 La blocnotes
TelemetruHC-SR042 La blocnotes
Rezistor

220 ohmi

5
Se încarcă...Se încarcă...