#include <Servo.h> //biblioteka odpowiedzialna za serwa
Servo serwomechanizm; //obiekt, dzięki któremu mogę odwołać się do serwa
byte pozycja = 0; //aktualna pozycja serwa 0-180
int pozycjaPoprzednia = 0;
void setup() {
serwomechanizm.attach(10);//Podłączam serwo do pinu 10
Serial.begin(9600);//uruchomienie komunikacji przez UART
}
void loop() {
int odczytCzujnika = analogRead(A5);//odczytuję wartość z czujnika
pozycja = map(odczytCzujnika, 20, 250, 0, 180);//zmieniam ją na pozycję serwa:
//Pierwszy argument funkcji to wartość odczytu czujnika.
//Drugi i trzeci argument to wyznaczone doświadczalnie (poprzez zasłanianie i odsłanianie czujnika) minimum i maksimum odczytu fotorezystora.
//Czwarty i piąty argument funkcji to minimum i maksimum położenia ramienia serwa (które działa tu jako wskazówka zegara odczytu)
if (abs(pozycja - pozycjaPoprzednia) > 5) {//sprawdzam czy pozycje różnią się o ponad 5 stopni
serwomechanizm.write(pozycja);//wykonuję ruch
pozycjaPoprzednia = pozycja;//zapamiętuję aktualną pozycję jako poprzednią
}
Serial.print("Odczyt czujnika: ");
Serial.print(odczytCzujnika);//wysyłam wartość do terminala
Serial.print(",\t");//tabulator
Serial.print("pozycja serwa: ");
Serial.println(pozycja);
delay(500);//opóźnienie minimum 100ms aby nie uszkodzić serwa
}