int entradaAnal = 0;
int angulo = 0;
#include <Servo.h>
Servo servoMotor; // O servo motor pode estar ligado direto no 5V da placa Nano por estar sem carga. Para uso com carga, se faz necessário uma fonte externa e ligar os GND da fonte com o GND do Arduino.
void setup() {
Serial.begin(9600);
if (servoMotor.attach(6)) {
Serial.println("STAN TWICE");
} else {
Serial.println("SOCORRO");
} // Defino o pino 6 como anexado à função Servo, indicando que ele terá um Servo Motor ligado nele para se evitar sinais PWM além dos permitidos à um Servo Motor. Com essa declaração, não preciso declarar que o pino 6 será de OUTPUT.
}
void loop() {
entradaAnal = analogRead(A0);
angulo = map(entradaAnal, 0, 1023, 0, 180); //Modulo a entrada analogica que é de 0 a 1023 para 0 a 180º
servoMotor.write(angulo);
Serial.print("Ent Analogica = "); Serial.print(entradaAnal); Serial.print(" - "); Serial.print("Angulo = "); Serial.println(angulo);
delay(250);
}
/*
// Código para uso do Servo Motor na saida PWM sem a biblioteca Servo. Usando o intervalo de 1ms para 0º e 2ms para 180º num período de 20m2 (ou seja um pulso de 1ms e nível baixo de 19ms)
int entradaAnal = 0;
int angulo = 0;
#define servoMotor 6
void setup() {
Serial.begin(9600);
pinMode(servoMotor, OUTPUT);
}
void loop() {
entradaAnal = analogRead(A0);
angulo = map(entradaAnal, 0, 1023, 0, 180); //Modulo a entrada analogica que é de 0 a 1023 para 0 a 180º
controlaMotor(angulo); // Foi criado um Procedure extra no final do código para controlar o angulo.
Serial.print("Ent Analogica = "); Serial.print(entradaAnal); Serial.print(" - "); Serial.print("Angulo = "); Serial.println(angulo);
delay(250);
}
void controlaMotor(int posicao) {
int tempo = map(posicao, 0, 180, 500, 2400); // Altere o limite inferior (500 = 0,5ms) e superior (2400 = 2,4ms) para o seu caso desse Servo Motor (normalmente e 1ms para 0º e 2ms para 180º)
int i;
for (i = 0; i < 15; i++) {
digitalWrite(servoMotor, HIGH);
delayMicroseconds(tempo);
digitalWrite(servoMotor, LOW);
delayMicroseconds(20000 - tempo);
digitalWrite(servoMotor, HIGH);
}
}
*/