entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿No me funciona el servomotor cuando utilizo el TimerOne de Arduino?

Estoy tratando de hacer un movimiento del servomotor a la biblioteca TimerOne , dando una instrucción dentro de la interrupción , pero no se mueve el servomotor , en la función ISR_Blink el LED si enciende al transcurso del tiempo dado pero el servo motor no gira , este es el ejemplo del código que lo estoy usando.

Descargar código desde Dropbox

#include <TimerOne.h>
#include <Servo.h>
const int led = 13;  // the pin with a LED
int ledState = LOW;    // El LED empieza apagado
volatile unsigned long blinkCount = 0; // La definimos como volatile
Servo servo;  // Crea un Objeto servo

void setup(void)
   {
    servo.attach(7);
       pinMode(led, OUTPUT);
       Timer1.initialize(2000000);         // Dispara cada 250 ms
       Timer1.attachInterrupt(ISR_Blink); // Activa la interrupcion y la asocia a ISR_Blink
       Serial.begin(9600);
   }

void ISR_Blink()
   {   ledState = !ledState ;
       blinkCount++    ;     // Contador veces se enciende el LED
       servo.write(90);
  delay(1000);
  servo.write(0);
  delay(1000);
   }

void loop(void)
   {

       unsigned long N;  // Haremos copia del blinkCount
       digitalWrite(led, ledState);  // Asignamos el valor del
                                     // status a la salida
       noInterrupts();               // Suspende las interrupciones
       N = blinkCount;
       interrupts();                 // Autoriza las interrupciones

       Serial.print("Ciclos = ");
       Serial.println(N);
       delay(100);
   }

2votos

carlossevi comentado

He editado la pregunta para poner el código ya que no es muy largo y no todo el mundo va a seguir el enlace a Dropbox.

¿Cual es el objetivo de las líneas noInterrupts(); y interrupts(); en la función de loop() cuando precisamente el Timer funciona mediantes interrupciones?

Creo que estás mezclado el código entre el bucle de ejecución y la función de interrupción del Timer. ¿Cuál es el funcionamiento que quieres?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta