Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/05/2016 #1


Parar motor cuando no recibe señal de los LDR.
Buenas. Estoy con un proyecto de un girasol electrónico que mediante la lectura de dos LDR se mueve el motor al centro de dichos dos LDR, cuando el motor llega al centro ya no se mueve, pero sigue vibrando y no para, por lo tanto se calienta mucho.

Entonces, ¿se puede añadir unas lineas en el código para que cuando no reciba señal para moverse que se desconecte de los 5v del arduino o poner un timer para que pare 20 minutos?, ya que el sol no va que digamos muy veloz.

El código es éste:
Código PHP:
#include <Servo.h>

    
Servo myservo;

    
int pos 0;  // Variable para almacenar la posicion del servo a 0.
    
int inputPhotoLeft 1// Fotorresistencia pin analogico 0 de arduino
    
int inputPhotoRight 0;// Fotorresistencia pin analogico 1 de arduino

    
int Left 0// Almacena lecturas de los fotoresistores.
    
int Right 0

    
void setup()
    {
    
myservo.attach(9); // Servomotor en pin 9.
    
}

    
void loop()
    {
    
// Lee los valores de las variables de fotoresistores a la izquierda y derecha.
    
Left analogRead(inputPhotoLeft);
    
Right analogRead(inputPhotoRight);

    
// Comprueba si el valor de la derecha es mayor que el izquierdo, de ser así  se movera a la derecha.
    
if (Left > (Right +20))
    
// +20 es la zona muerta, para que no se agitan de ida y vuelta.
    
{
    if (
pos 179)
    
pos++;
    
myservo.write(pos);
    }

    
// Comprueba si el valor de la izquierda es mayor que la derecha, si es así se movera hacia la izquierda.
    
if (Right > (Left +20))
    {
    if (
pos 1)
    
pos -= 1;
    
myservo.write(pos);
    }

    
// Se añade cierto retraso, aumentar o disminuir si se quiere menos o más velocidad.
    
delay(10);
    } 
27/05/2016 #2

Avatar de Gudino Roberto duberlin

Hola, la mejor opción, es añadir histéresis a la línea de comparación de variables.

Algo similar a lo que utilizas:
if (Left > (Right +20)) , if (Right > (Left +20))

O también if(Left>Right){Left-Right>20} // Toma acción de movimiento en sentido favorable
, else {Right-Left>20}// Toma acción en sentido contrario al anterior
Lo que resulta extraño, es que el motor se vuelva inestable en la zona equilibrada, ya que tienes un margen de +-20, quizás ese valor sea pequeño.
28/05/2016 #3


Entonces las lineas que me dices las añado al código o sustituyo esas lineas por las del código?

Es que programación arduino se me atraganta.

PD: Gracias por todo.
28/05/2016 #4

Avatar de Gudino Roberto duberlin

Si añades las líneas a las que tienes redundarás en el programa, utiliza una u otra. Antes de modificar, sólo cambia el valor de margen 20 a valores mayores. (Prueba/error)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.