Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <Servo.h> //biblioteka odpowiedzialna za serwa
  2.  
  3. Servo serwomechanizm; //obiekt, dzięki któremu mogę odwołać się do serwa
  4. byte pozycja = 0; //aktualna pozycja serwa 0-180
  5. int pozycjaPoprzednia = 0;
  6.  
  7. void setup() {
  8.   serwomechanizm.attach(10);//Podłączam serwo do pinu 10
  9.   Serial.begin(9600);//uruchomienie komunikacji przez UART
  10. }
  11.  
  12. void loop() {
  13.   int odczytCzujnika = analogRead(A5);//odczytuję wartość z czujnika
  14.   pozycja = map(odczytCzujnika, 20, 250, 0, 180);//zmieniam ją na pozycję serwa:
  15.             //Pierwszy argument funkcji to wartość odczytu czujnika.
  16.             //Drugi i trzeci argument to wyznaczone doświadczalnie (poprzez zasłanianie i odsłanianie czujnika) minimum i maksimum odczytu fotorezystora.
  17.             //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)
  18.  
  19.   if (abs(pozycja - pozycjaPoprzednia) > 5) {//sprawdzam czy pozycje różnią się o ponad 5 stopni  
  20.     serwomechanizm.write(pozycja);//wykonuję ruch
  21.     pozycjaPoprzednia = pozycja;//zapamiętuję aktualną pozycję jako poprzednią
  22.   }
  23.  
  24.   Serial.print("Odczyt czujnika: ");
  25.   Serial.print(odczytCzujnika);//wysyłam wartość do terminala
  26.   Serial.print(",\t");//tabulator
  27.   Serial.print("pozycja serwa: ");
  28.   Serial.println(pozycja);
  29.   delay(500);//opóźnienie minimum 100ms aby nie uszkodzić serwa
  30. }