Witam,
Nie wiem czy w odpowiednim dziale zadaję pytanie ale siedzę jakiś czas z nad prostym zegarem z wykorzystaniem lcd 1602, modułem rtc DS3231 i czujnikiem HC-SR04. Idea jest taka: zegar zamontowany w kuchni pod szafką kuchenną i jak podchodzę to zaświeca podświetlenie tak, że można odczytać czas, dzień tygodnia i datę. Wykorzystałem kod z pomiaru odległości i włączania buzera (zamiast buzera włącza podświetlenie lcd z pinu 8) i działa to ok, ten kod wykorzystałem z kursu Arduino poziom 1. Jak koduje sam zegar to też jest ok. (czas i dzień tygodnia w pierwszym wierszu a data w drugim). Wyświetla wszystko zgodnie z oczekiwaniami. Natomiast jak próbuję połączyć to wszystko razem to niestety sypie się wyświetlanie danych, podświetlanie (reakcja na ruch) jest ok. Wyświetla tylko z przewijaniem. Nie wyświetla czasu i daty tak jak powinno.
Byłbym wdzięczny za sugestie jak to mogę poprawić.
Poniżej kod:
#define trigPin 12
#define echoPin 11
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
void setup() {
rtc.begin();
lcd.begin(16, 2);
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
pinMode(echoPin, INPUT); //a echo, jako wejście
pinMode(8, OUTPUT); //Wyjście dla buzzera - podswietlenie lcd
}
void loop() {
zakres(15, 50); //Włącz alarm, jeśli w odległości od 10 do 25 cm od czujnika jest przeszkoda
delay(100);
}
int zmierzOdleglosc() {
long czas, dystans;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
czas = pulseIn(echoPin, HIGH);
dystans = czas / 58;
return dystans;
}
void zakres(int a, int b) {
int jakDaleko = zmierzOdleglosc();
if ((jakDaleko > a) && (jakDaleko < b)) {
digitalWrite(8, LOW); //Włączamy buzzer
} else {
digitalWrite(8, HIGH); //Wyłączamy buzzer, gdy obiekt poza zakresem
}
{
lcd.setCursor(0,0);
lcd.print("Czas: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Data: ");
lcd.print(rtc.getDateStr());
// lcd.clear();
}
}
pozdrawiam i dzięki za pomoc.