Estou com um problema com um problema e não sei se é a programção, pois meu servo motor não esta completando a programação fazendo o movimento apenas uma vez e meia, enquanto todo o resto esta a funcionar normalmente.
adicionado 7 minutos depois
/*Pinagem do arduino*/
#include <Servo.h>
#define SERVO 3 // Porta Digital 3
Servo s ; // Variável Servo
int pos; // Posição Servo
int rep = 0;
int rep2 = 0;
int curvaa = 0;
int curvaaa = 0;
//motor_A
int IN1 = 6 ;
int IN2 = 7 ;
int velocidadeA = 5;
//motor_B
int IN3 = 9 ;
int IN4 = 10;
int velocidadeB = 11;
//variavel auxiliar
int velocidade = 0;
//-------------------------------------------------
//Inicializa Pinos
void setup()
{
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(velocidadeA,OUTPUT);
pinMode(velocidadeB,OUTPUT);
s.attach(SERVO);
Serial.begin(9600);
s.write(0);
}
void loop()
{
while(rep < 3){
for(pos = 0; pos < 180; pos++)
{
s.write(pos);
delay(15);
}
delay(10);
for(pos = 180; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
delay(50);
retoo();
rep++;
}
delay (150);
// curva 1 <---------------------------------------
while(curvaa < 4){
curvaaa1();
delay(50);
curvaa++;
}
while(rep2 < 3){
for(pos = 0; pos < 180; pos++)
{
s.write(pos);
delay(5);
}
delay(5);
for(pos = 180; pos >= 0; pos--)
{
s.write(pos);
delay(5);
}
delay(10);
retoo2();
rep2++;
}
// curva 2 >---------------------------------------
while(curvaaa < 4){
curvaaa2();
delay(50);
curvaaa++;
}
for (int i=1; i>0; i++);{}
}
//---------------------------------------------------
//---------------------------------------------------
//---------------------------------------------------
void retoo(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,140);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,75);
delay(50);
}
//---------------------------------------------------
void retoo2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,140);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,75);
delay(50);
}
//---------------------------------------------------
void servo()
{
for(pos = 0; pos < 180; pos++)
{
s.write(pos);
delay(15);
}
delay(10);
for(pos = 180; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
}
//---------------------------------------------------
void curva2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,125);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(velocidadeB,250);
}
//----------------------------------------------------
void curva1(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(velocidadeA,200);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,100);
}
//----------------------------------------------------
void curvaaa2(){
curva2();
delay(1500);
retoo2();
delay(1500);
}
//----------------------------------------------------
void curvaaa1(){
curva1();
delay(1500);
retoo();
delay(1500);
}
//----------------------------------------------------
void re(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(velocidadeA,140);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(velocidadeB,75);
}
//----------------------------------------------------
adicionado 30 minutos depois
mudei apenas para a programação do meu servo e continua 1 ciclo e meio com a alimnetação externa enquanto por usb esta normal ......
#include <Servo.h>
#define SERVO 3//
Servo s; // Variável Servo
int pos; // Posição Servo
int rep = 0;
void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0); // Inicia motor posição zero
}
void loop(){
while(rep<5)
{
for(pos = 0; pos < 180; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 180; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
rep++;
}
}