Go Down

Topic: PROGMEM+Servo Motor (Read 67 times) previous topic - next topic

remiserogilmour

Nov 08, 2018, 09:25 pm Last Edit: Nov 08, 2018, 09:48 pm by remiserogilmour
Hola a todos!
Hace unos meses que empecé a aprender a trabajar con Arduino y aquí va una duda que no logro resolver.
Estoy trabajando con un Servo motor, primero moviendolo con un potenciometro y ahora automatizandolo desde el programa de Arduino. Lo que quiero ahora es mediante una tabla de datos (0 y 1) indicarle al motor que cuando se lee el 0 el motor no deberá realizar ningun movimiento, en cambio cuando hay un 1 si, simplemente eso. Sin embargo trabajando con la funcion PROGMEM no logro hacerlo.
Que debería tener en cuanta para llegar a ese resultado?

Estos son mis datos

Code: [Select]
const int datos1[] PROGMEM = {0,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1};

Y este es mi código hasta ahora

Code: [Select]
#include <Servo.h>                    
Servo servo1;                        
int angulo = 0 ;

void setup()
   {
       servo1.attach(9) ;            
   }

void loop()
   {
       for(angulo  = 0; angulo  <= 120; angulo  += 120)  
           {
             servo1.write(angulo);
               delay(15);
           }
           
       for(angulo  = 120; angulo  >=00; angulo  -=1 )    
           {
               servo1.write( angulo );
               delay(15);
           }

   }


Gracias y espero que puedan ayudarme!

surbyte

Por favor edita tu código con la guía que te pasé por privado.


Code: [Select]
#include <Servo.h>                   
Servo servo1;                         

const int datos1[] PROGMEM = {0,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1};
int angulo = 0 ;

void setup() {
    servo1.attach(9) ;           
}

void loop() {
   
    for (int i=0; i<sizeof(datos1); i++) {
        if (datos1[i]) {
            for (angulo = 0; angulo<= 120; angulo += 120){
                 servo1.write(angulo);
                 delay(15);
            }
               
            for (angulo = 120; angulo>= 0; angulo -=1 ) {
                 servo1.write( angulo );
                 delay(15);
            }
        }
    }   
}

Go Up