#include <Servo.h>
#include <LiquidCrystal_I2C.h>
Servo serwomechanizm;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adres I2C i rozmiar wyświetlacza 16x2
int pos = 0;
int tonalFreq = 0;
int buzzerPin = 8; // Pin do którego jest podłączony buzzer
void setup() {
serwomechanizm.attach(9);
lcd.init(); // Inicjalizacja wyświetlacza LCD
lcd.backlight();
pinMode(buzzerPin, OUTPUT); // Ustawienie pinu buczka jako wyjście
}
void loop() {
w_prawo(15, 1);
w_lewo(15, 1);
}
void w_lewo(int opoznienie, int increment) {
for(pos = 0; pos <= 180; pos += increment) {
serwomechanizm.write(pos);
tonalFreq = map(pos, 0, 180, 100, 4000); // Mapowanie pozycji na częstotliwość dźwięku
generujDzwiek(tonalFreq);
wyswietlPozycje(pos);
delay(opoznienie);
}
}
void w_prawo(int opoznienie, int increment) {
for (pos = 180; pos >= 0; pos -= increment) {
serwomechanizm.write(pos);
tonalFreq = map(pos, 0, 180, 100, 4000);
generujDzwiek(tonalFreq);
wyswietlPozycje(pos);
delay(opoznienie);
}
}
void generujDzwiek(int czestotliwosc) {
tone(buzzerPin, czestotliwosc); // Generowanie dźwięku na buczku
}
void wyswietlPozycje(int pozycja) {
lcd.clear(); // Wyczyść wyświetlacz
lcd.setCursor(0, 0); // Ustaw kursor na początku pierwszego wiersza
lcd.print("Pozycja: "); // Wyświetl etykietę
lcd.print(pozycja); // Wyświetl aktualną pozycję
}