Ultrasonic avståndsmätare med LCD-display på Arduino UNO (3 / 4 steg)
Steg 3: Ansluta en LCD-skärm och en piezoelektrisk Summer
Nu är det dags att ansluta LCD-displayen till våra Arduino. Som sett i inledningen, du behöver också några andra saker att göra denna krets: en 2N3904 transistor (eller alternativt en 2N2222), en 10 k Ohm motstånd, en 10 k Ohm linjär potentiometer för att justera kontrasten. Dessa komponenter behövs för att göra LCD-displayen aktiveras när du trycker på den knappen under mätningarna.
Dessutom lägga en piezoelektrisk högtalare kan vara ett klokt val om du vill bli informerad när avståndsmätare går av nå.
Obs: vi kommer inte att förklara hur du ansluter en LCD-display till Arduino samt hur man styr sin rygg-ljus eftersom dessa förfaranden redan har förklarats i femte och sjätte steg i våra tidigare handledning respektive.
- hur du ansluter en LCD-display till Arduino...
- .. .och hur man styr sin rygg-ljus
Men om du bara vill göra anslutningarna, bara se bifogade Fritzing systemet.
Obs: Eftersom stift 7 används nu av displayen, ändrade vi den PIN-kod används av HC-SR04 flyttas till pin 9.
Skissen
Låt oss anpassa skissen enligt de förändringar vi vill göra.
I den första delen av skiss måste vi deklarera två konstanter och en variabel. Den första konstanten är PWM stift används för att slå på och av back-displaybelysningen och andra är frekvensen av anteckningen spelas av piezo speaker när avståndsmätare går av nå.
Variabeln för att ställa in back-ljus ljusstyrkan upp till det högsta värdet.
#define LUMIN 11
#define NOTE_A4 440
int l = 255;
Sedan vi inkluderar LiquidCrystal biblioteket och initiera LCD display-biblioteket:
inkludera bibliotek-koden:
#include < LiquidCrystal.h >
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (2, 3, 4, 5, 6, 7);
Setup-funktionen
I setup -funktionen måste vi deklarera stift 11 som en utgång och initiera LCD-displayen (16 kolumner och med 2 rader):
pinMode (LUMIN, OUTPUT);
Ange den LCD antal kolumner och rader:
LCD.BEGIN (16, 2);
Vi gör några ändringar i loop funktion. Först av allt ändra vi den medan loop som visas nedan:
While(digitalRead(Button) == låg) {
analogWrite (LUMIN, 0); Inaktivera LED
LCD.Clear();
noTone(12);
}
När knappen inte trycks ner, det logiska villkoret är sant, som en följd av skissen väntar i denna medan loop. I denna situation, den första raden i blocket back-ljuset släcks, den andra raden rensar displayen och den tredje en släcks tongeneratorn.
När den tryckknapp trycks, blir logiska villkoret falskt och Arduino hoppar detta medan loop och går på exekvera följande rad...
analogWrite (LUMIN, l); Aktivera LED
... som tänds bakgrundsbelysningen.
Som vi inte använder den seriella bildskärmen mer, måste vi ändra funktionerna Serial.print till lcd.print.
lcd.setCursor (0, 0);
LCD.Print ("tid:");
LCD.Print(duration);
LCD.Print ("oss");
lcd.setCursor (0, 1);
om (varaktighet > 38000) {lcd.println ("utom räckhåll"); tonen (12, NOTE_A4);}
annat {lcd.print ("dist:"); LCD.Print(Distance); LCD.println ("cm"); noTone(12);}
I den första raden visas skriver den reflektion tiden och avståndet i den andra. Om reflektion är större än 38ms, hindret är utom räckhåll och piezo summern kommer att spela ett ljud och displayen visar meddelandet "utom räckhåll", kommer annars skissen ut det uppmätta avståndet.
Som vanligt är skissa redo att laddas ner.