Go Down

Topic: ayuda para controlar servo motor (Read 165 times) previous topic - next topic

DavidRomero

Jul 22, 2018, 07:57 pm Last Edit: Jul 23, 2018, 08:09 pm by DavidRomero
Hola! estoy trabajando en mi proyecto de grado con un Arduino Mega 2560; lo que sucede es que quiero controlar el giro de un servo motor, osea que de un giro o dos dependiendo lo que necesite pero al subir el código en el arduino  el servomotor no responde y se queda ejecutando la acción y nunca para, por cierto quiero que esto funcione dentro de un "if" . No se si me estoy explicando bien en fin aquí dejo el código para que alguien que quiera me pueda ayudar.

Code: [Select]

#include <Servo.h>
#include <DHT.h>


 const int SENSORLLUVIA = 6;
 const int MOTOR1 = 11;
 const int LEDROJO = 2;
 const int LEDNARANJA = 3;
 const int LEDVERDE = 4;
 const int LEDAZUL = 5;
 
 const int SENSOR = 9;
 
 int hum,tem;

 DHT dht (9, DHT22);
 Servo servo1;
 
void setup()
{

 Serial.begin(9600);

  dht.begin();
  servo1.attach(8);
 
  pinMode(LEDVERDE , OUTPUT);
  pinMode(LEDNARANJA , OUTPUT);
  pinMode(LEDROJO , OUTPUT);
  pinMode(SENSORLLUVIA, INPUT);
}
void loop() {
 
 int LLUVIA = 0;
 LLUVIA = digitalRead(SENSORLLUVIA );

 hum = dht.readHumidity();
 tem = dht.readTemperature();

 

 if(tem >= 28)
 {
   servo1.write(360);
 }

 
 if(LLUVIA != 1)
 {
   digitalWrite (LEDAZUL,HIGH);
   servo1.write(-360);
 }
 else
 {
   digitalWrite (LEDAZUL,LOW);
 }
 if(tem <= 23)
 {
 digitalWrite (LEDVERDE,LOW); // Esta condicion devueleve al estado LOW cuando la tem baja
 //digitalWrite (LEDAZUL,HIGH);
 }
 if(tem >= 24)
 {
 digitalWrite (LEDVERDE,HIGH);// Esta condicion cambia al estado HIGH cuando la tem sube  
 }
 if(tem >= 26 )
 {
 digitalWrite (LEDNARANJA,HIGH);//Esta condicion cambia al estado HIGH cuando la tem sube
 digitalWrite (LEDVERDE,LOW);//Esta condicion cambia al estado LOW el led anterior cuando la tem sube
 }
 if(tem < 28)
 {
 digitalWrite (LEDNARANJA,LOW); // Esta condicion devueleve al estado LOW cuando la tem baja
 }
 if (tem >= 28)
 {
 digitalWrite (LEDROJO,HIGH);//;Esta condicion cambia al estado HIGH cuando la tem sube
 digitalWrite (LEDNARANJA,LOW);//Esta condicion cambia al estado LOW el led anterior cuando la tem sube
 }
 if(tem < 31)
 {
 digitalWrite (LEDROJO,LOW);// Esta condicion devueleve al estado LOW cuando la tem baja  
 }
 if(tem >= 31 )
 {
 // digitalWrite (MOTOR1,HIGH);//Esta condicion cambia al estado HIGH cuando la tem sube
  digitalWrite (LEDROJO,LOW);//;Esta condicion cambia al estado LOW el led anterior cuando la tem sube
 }
 
 

 
 Serial.print("Temperatura" );//  Escribe en el Monitor Serie Temperatura
 Serial.print(tem);// muestra el dato almacenado en la variable entera tem
 Serial.print("°C"); //Escribe en el Monitor Serie °C

 Serial.print("Lluvia");
 Serial.print(LLUVIA);
 
 Serial.print("Humedad" );// Escribe en el Monitor Serie Humedad
 Serial.print(hum);// muestra el dato almacenado en la variable entera hum
 Serial.print("%");// Escribe en el Monitor Serie %

 //delay(1000);

}




UKHeliBob

Code: [Select]
servo1.write (360);
Code: [Select]
servo1.write (-360);

You can only write values between 0 and 180 to the servo using this function
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

surbyte

#2
Jul 23, 2018, 06:01 pm Last Edit: Jul 23, 2018, 06:02 pm by surbyte
Por favor lee los privados que te he enviado. Tienes dos hilos en ambos has posteado sin leer las normas del foro y por ende desconoces que debes usar etiquetas para postear códigos. Tomate 1 minuto en tu proyecto de grado para observar otros hilos y ver como se presentan.
Ahora en el privado te doy instrucciones para que edites este hilo.
El otro ya que no respondiste desde el mes 05/18 lo supuse solucionado pero como nada dijiste. Lo cerré.
Por lo que veo además has escrito en el foro en inglés ya que tienes una respuesta en inglés, por lo que supongo que ni sabes donde estan tus hilos.

Go Up