Ruleta digitală funcționează astfel:
Senzorul ultrasonic emite unde sonore către obiectul din fața sa și măsoară timpul necesar pentru ca acesta unde să se întoarcă la senzor. Pe baza timpului de întoarcere a undelor sonore, se calculează distanța dintre senzor și obiectul detectat. Această distanță este apoi afișată pe ecranul LCD atașat la placa Arduino Nano. Utilizatorul poate citi distanța direct de pe ecranul LCD în timp real.
* o plăcuță Arduino Nano
* un senzor ultrasonic HC-SR04
* un display LCD
* male & female header
* un potențiometru
* un conector - 12V
Schema a fost realizată pe platforma TinkerCad.
Acest proiect a fost implementat folosind Arduino IDE.
Am folosit o singură bibliotecă, și anume Liquid Crystal, cu ajutorul căreia se realizează conexiunea cu display-ul LCD.
Codul folosit pentru proiect este următorul:
#include <LiquidCrystal.h> // Inițializăm biblioteca LiquidCrystal cu pinii conectați la LCD LiquidCrystal lcd(9, 8, 4, 5, 6, 7); // Pinii Arduino (RS = 9, E = 8, D4 = 4, D5 = 5, D6 = 6, D7 = 7) #define Trig 2 // Pinul pentru semnalul de declanșare (Trig) al senzorului HC-SR04 #define Echo 3 // Pinul pentru semnalul de ecou (Echo) al senzorului HC-SR04 // Setup-ul pentru ecranul LCD void setup() { lcd.begin(16, 2); // Configurăm ecranul LCD cu 16 coloane și 2 rânduri // Configurăm pinul Trig ca ieșire utilizând registre DDRD |= (1 << DDD2); // Setăm bitul corespunzător pinului 2 (Trig) ca ieșire // Configurăm pinul Echo ca intrare utilizând registre DDRD &= ~(1 << DDD3); // Resetăm bitul corespunzător pinului 3 (Echo) pentru a-l seta ca intrare // Afișăm mesajul de introducere (bun venit) pe ecranul LCD lcd.setCursor(2, 0); lcd.print("SA MASURAM"); lcd.setCursor(4, 1); lcd.print("DISTANTA!"); delay(2000); // Așteptăm 2 secunde pentru a permite citirea mesajului lcd.clear(); } // Trimitem un impuls de declanșare către senzorul ultrasonic void loop() { // Setăm pinul Trig la LOW pentru 4 microsecunde PORTD &= ~(1 << PORTD2); // Setăm pinul Trig la LOW delayMicroseconds(4); // Setăm pinul Trig la HIGH pentru 10 microsecunde PORTD |= (1 << PORTD2); // Setăm pinul Trig la HIGH delayMicroseconds(10); PORTD &= ~(1 << PORTD2); // Setăm pinul Trig înapoi la LOW // Măsurăm durata semnalului de ecou long t = pulseIn(Echo, HIGH); // Calculăm distanța în cm și inch long cm = t / 58; long inch = t / 148; // Afișăm distanța măsurată pe ecranul LCD în centimetri lcd.setCursor(0, 0); lcd.print("Distanta: "); lcd.print(cm); lcd.print("cm "); // Afișăm distanța măsurată pe ecranul LCD în inch lcd.setCursor(0, 1); lcd.print("Distanta: "); lcd.print(inch); lcd.print("inch "); }
Vedeți aici un videoclip în care arăt funcționalitatea acesteia.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.