Codice Arduino per controllare la rotazione di un servo con due tasti

Share

Ecco un esempio di codice Arduino per controllare la rotazione di un servo con due tasti:

#include <Servo.h>

Servo myservo;

int pos = 0;    // posizione iniziale del servo
int increment = 5;  // incremento di rotazione del servo
int servoPin = 9;   // pin di segnale del servo
int buttonPin1 = 2; // pin del primo tasto
int buttonPin2 = 3; // pin del secondo tasto

void setup() {
  myservo.attach(servoPin); // inizializzazione del servo
  pinMode(buttonPin1, INPUT_PULLUP); // inizializzazione del primo tasto
  pinMode(buttonPin2, INPUT_PULLUP); // inizializzazione del secondo tasto
}

void loop() {
  if (digitalRead(buttonPin1) == LOW) { // se il primo tasto è premuto
    pos += increment; // aumenta la posizione del servo
    if (pos > 180) { // se la posizione supera il valore massimo
      pos = 180; // imposta la posizione massima
    }
    myservo.write(pos); // muove il servo alla nuova posizione
    delay(15); // attesa per la stabilità del servo
  }

  if (digitalRead(buttonPin2) == LOW) { // se il secondo tasto è premuto
    pos -= increment; // diminuisce la posizione del servo
    if (pos < 0) { // se la posizione scende sotto il valore minimo
      pos = 0; // imposta la posizione minima
    }
    myservo.write(pos); // muove il servo alla nuova posizione
    delay(15); // attesa per la stabilità del servo
  }
}

Il codice usa la libreria Servo per controllare il servo collegato al pin 9. I tasti sono collegati ai pin 2 e 3 e il programma controlla il loro stato per incrementare o diminuire la posizione del servo di un valore di 5 gradi alla volta. Inoltre, il programma impedisce al servo di andare oltre la posizione minima di 0 gradi e quella massima di 180 gradi. Il delay di 15 millisecondi è per permettere al servo di raggiungere la nuova posizione prima di effettuare un’ulteriore rotazione.