PRACOWNIA MIERNICTWA ELEKTRONICZNEGO/
INTERNETU RZECZY
ĆWICZENIE NR 6
Temat: Arduino. Część 3: sterowanie wyświetlaczem i pomiary odległości
Komponenty:
DFRduino mega2560
Potencjometr THT
Czujnik odległości HC-SR04
Tact Switch THT
Wyświetlacz LCD 2x16
Cel ćwiczenia:
Złożenie i zaprogramowanie układu, który mierzy odległość do przedmiotu
położonego przed czujnikiem odległości i wyświetla ją na ekranie lcd. Wyniki mają
wyświetlać się w metrach i centymetrach. Wyświetlaną jednostkę można zmienić przy
pomocy guzika.
Instrukcja
Krok 1.
Podłączenie ekranu lcd według schematu.
Rysunek 1- Schemat podłączenia ekranu LCD 16x2 do arduino
Krok 2.
Podłączenie czujnika odległości według schematu.
Rysunek 2 - Schemat podłączenia czujnika odległości do arduino
Krok 3.
Rysunek 3 - Schemat podłączenie switch-a THT. W tym przypadku żółty przewód należy podłączyć do portu numer 9
Złożony zestaw:
Kod:
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Stworzenie obiektu LiquidCrystal. Parametry: (rs, enable, d4, d5, d6, d7)
#define trigPin 12
#define echoPin 11
int flag = 0; //Flaga, która mówi programowi w jakiej jednostce ma być wyświetlany wynik
void setup() {
pinMode(9, INPUT_PULLUP); // Ustawienie portu do którego podłączony jest guzik
lcd.begin(16, 2); // Specyfikacja ekranu(szerokość, wysokość)
pinMode(trigPin, OUTPUT); // Ustawnie pinu trig w czujniku jako wyjście
pinMode(echoPin, INPUT); // Ustawienie pinu echo w czujniku jako wejście
}
void display(int flag, double dystans) // Funkcja wyświetlająca zmierzoną odległość na ekranie LCD
{
lcd.print("Dystans: "); lcd.setCursor(0, 1); lcd.print(dystans, DEC); lcd.setCursor(13, 1);
if (flag == 0) { lcd.print("cm"); }
if (flag == 1) { lcd.print("m"); } delay(1000);
lcd.noCursor(); // Hides the LCD cursor
lcd.clear(); // Clears the LCD screen
}
double distance()//Funkcja, która zwraca odczyt z czujnika odległości
{ double time = 0; double distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); time = pulseIn(echoPin, HIGH); distance = distance + time / 5.9; distance = distance / 10;
if (flag == 1) distance = distance / 100;
return distance; }
void loop() {
int sensorVal = digitalRead(9); //Tutaj jest rejestrowane wciśnięcie guzika
if (sensorVal == 0) // Jeżeli guzik został wciśnięty zmienia się flaga, która określa w jakiej jednostce wynik jest wyświetlony na ekranie
{ if (flag == 0) { flag = 1; } else { flag = 0; } } display(flag, distance()); }