quinta-feira, 23 de agosto de 2018

Código controle de servomotor com potenciômetro

Código controle de servomotor com potenciômetro

Olá turma segue abaixo o código completo do circuito do encontro de 17/08/2018

#include <Servo.h>
#define SERVO 3 // Porta Digital 3 PWM
//portas para os leds
int ledVerde=12;
int ledVermelho=11;
int ledAmarelo=13;
int pinoPOT = A0; //PINO ANALÓGICO usado pelo Potenciômetro
int leituraA0; //VARIÁVEL QUE ARMAZENA O valor lido na porta analogica 

Servo s; // Variável Servo
int pos; // Posição Servo

void setup ()
{
  pinMode(ledVerde,OUTPUT);//define pinos como saida
  pinMode(ledVermelho,OUTPUT);
  pinMode(ledAmarelo,OUTPUT);
  s.attach(SERVO);
  Serial.begin(9600);
 // s.write(0); // Inicia motor posição zero
}

void loop()
{
 //servoMover();
 //ledServoAcionar();
 leituraA0= analogRead(pinoPOT);//analogRead(pinPOT);
 pos= map(leituraA0, 0, 1023, 180, 0); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS 
 s.write(pos);  
 posLed(pos);
 delay(5);
}

void servoMover(){
for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(1000);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }
 delay(1000);
  
}

void posLed(int grau){
 if(grau>87 && grau<93){
   digitalWrite(ledVerde,HIGH);
   digitalWrite(ledVermelho,LOW);
   digitalWrite(ledAmarelo,LOW);
   }
if(grau<88){
   digitalWrite(ledVerde,LOW);
   digitalWrite(ledVermelho,HIGH);
   digitalWrite(ledAmarelo,LOW);
   }
if(grau>92){
   digitalWrite(ledVerde,LOW);
   digitalWrite(ledVermelho,LOW);
   digitalWrite(ledAmarelo,HIGH);
   }

}
//função automatica para movimentar servo e acender led
void ledServoAcionar(){
   pos=0;
s.write(pos);  
posLed(pos);
delay(2000); 
 
    pos=90;
s.write(pos);  
posLed(pos);
delay(2000);
    pos=180;
s.write(pos);  
posLed(pos);
delay(2000); 
}


Nenhum comentário:

Postar um comentário