Go Down

Topic: Añadir botonera a barrera laser. (Read 2272 times) previous topic - next topic

ericybea

Hola a todos.

Nuevamente agradeceros a todos la estupenda comunidad que teneis! ES FANTASTICA.

Os expongo el problema que tengo.

He montado una barrera laser pero esta no tiene botones de añadir o restar . Es decir si pasa algún error durante el computo ( sin querer pasa algo por la barrera o si quiero implementar el numero al final ) no puedo hacerlo. Ademas no tengo ningún sistema de reinicio del contador a demás del propio botón de arduino .

Me gustaría mucho poder añadir dos botones uno para + y otro para el - y ademas que esos botones me sirvieran para poder hacer el reset del contador. Os parece que es posible?

Nuevamente os pido ayuda para el tema de botones porque no me entero de nada.

Os dejo el codigo ( utilizo un codigo de un tutorial de leantec )


Code: [Select]
/*
  Código desarrollado por LEANTEC Robotics & Electronics.
  Queda permitido el uso de este código siempre que sea sin ánimo de lucro
 */
 
// incluir libreria
#include <LiquidCrystal.h>

//Declaramos las variables necesarias
int numero=0;
int auxnumero=0;
int sensorPinLDR = A0;
int valorLDR = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Declaramos los pines que usa nuestra pantalla(RS,E,D4,D5,D6,D7)

void setup() {
 
  lcd.begin(16, 2);//Iniciamos la pantalla y le decimos el numero de caracteres y filas
 
  lcd.setCursor(5, 0);//Situamos el lugar donde empezar la escritura
  lcd.print("LEANTEC");//Escribimos LEANTEC
  delay (2000);//Esperamos dos segundos
  lcd.clear();//Limpiamos la pantalla
  lcd.setCursor(0, 0);
  lcd.print("Robotics &");
  delay (2000);
  lcd.setCursor(5, 1);
  lcd.print("Electronics");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONTADOR CON");
  delay (2000);
  lcd.setCursor(3, 1);
  lcd.print("BARRERA LASER");
  delay (3000);
  lcd.clear();
 
 
}

void loop() {
 
  valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
  lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
  lcd.print("CONTADOR");//Escribimos contador
  lcd.setCursor(10, 1);//Situamos el lugar donde escribiremos
  lcd.print(numero);//Representamos la variable numero
 
  auxnumero=0;//hacemos la variable auxnumero 0. Esta variable nos ayuda a contar solo 1 cada vez que entremos en el bucle de más abajo
 
  while(valorLDR<600){//Entramos en el bucle si valorLDR es menor de 600. Esto ocurre cuando no da el laser sobre la LDR.
    valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
    if(auxnumero==0){// Entramos en el if si auxnumero es 0. Esto solo ocurre la primera vez que recorremos el while.
    numero++;//Sumamos 1 a la variable numero
    auxnumero=1;//hacemos auxnumero 1, para que solo sume una vez 1 a la variable numero cuando estamos dando vueltas dentro del bucle.
      }
    }

 



circuito electrico
resitencia

Os comento también que sería muy importante para mi poder implementar conectividad de la barrera con una base de datos o poder registrar de alguna manera la cantidad que marca el contador de la barrera , para así poder almacenar los datos y hacer estadísticas. ¿ sería posible?

De antemano MUCHAS MUCHAS gracias por vuestra ayuda!

Saludos.

surbyte

Aca te agrego lo de los pulsadores pero esta mal el código con el LDR.

Code: [Select]
/*
  Código desarrollado por LEANTEC Robotics & Electronics.
  Queda permitido el uso de este código siempre que sea sin ánimo de lucro
 */
 
// incluir libreria
#include <LiquidCrystal.h>

//Declaramos las variables necesarias
int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
const byte sensorPinLDR = A0;
const byte pinBOTON1 = 2;
const byte pinBOTON2 = 3;

bool sumo, sumoAnt;
bool resto, restoAnt;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Declaramos los pines que usa nuestra pantalla(RS,E,D4,D5,D6,D7)

void setup() {
 
  pinMode(pinBOTON1, INPUT);
  pinMode(pinBOTON2, INPUT);
  lcd.begin(16, 2);//Iniciamos la pantalla y le decimos el numero de caracteres y filas
 
  lcd.setCursor(5, 0);//Situamos el lugar donde empezar la escritura
  lcd.print("LEANTEC");//Escribimos LEANTEC
  delay (2000);//Esperamos dos segundos
  lcd.clear();//Limpiamos la pantalla
  lcd.setCursor(0, 0);
  lcd.print("Robotics &");
  delay (2000);
  lcd.setCursor(5, 1);
  lcd.print("Electronics");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONTADOR CON");
  delay (2000);
  lcd.setCursor(3, 1);
  lcd.print("BARRERA LASER");
  delay (3000);
  lcd.clear();
}

void loop() {
 
  sumo = digitalRead(pin);
  if (sumo && !sumoAnt) {
    contador++;
  }
  sumoAnt = sumo;

  resto = digitalRead(pin);
  if (resto && !restoAnt) {
    contador--;
  }
  restoAnt = resto;

  valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
  lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
  lcd.print("CONTADOR");//Escribimos contador
  lcd.setCursor(10, 1);//Situamos el lugar donde escribiremos
  lcd.print(numero);//Representamos la variable numero
 
  auxnumero = 0;//hacemos la variable auxnumero 0. Esta variable nos ayuda a contar solo 1 cada vez que entremos en el bucle de más abajo
 
  while (valorLDR < 600){//Entramos en el bucle si valorLDR es menor de 600. Esto ocurre cuando no da el laser sobre la LDR.
     valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
     if (auxnumero == 0){// Entramos en el if si auxnumero es 0. Esto solo ocurre la primera vez que recorremos el while.
         numero++;//Sumamos 1 a la variable numero
         auxnumero = 1;//hacemos auxnumero 1, para que solo sume una vez 1 a la variable numero cuando estamos dando vueltas dentro del bucle.
     }
    } 
}


el código pone auxnumero = 0; en cada loop
luego preguntas por el valor del LDR de modo que si esta x debajo de 600 en cada loop se incrementa el contador a cada paso... o sea MAL.
Deberías tener un disparo y luego rearmarlo cuando desaparece el obstáculo. 
Ej.. voy y me detengo en la barrera.. contador cuando marca +1 o +las veces que pase el loop?

ericybea

#2
Aug 27, 2016, 07:03 pm Last Edit: Aug 28, 2016, 06:12 pm by ericybea
hola Surbite!

muchas gracias por tu post! no se porque razon no me había llegado que tenia una respuesta y solo ahora me he dado cuenta de que me habías ayudado ! MUCHAS GRACIAS POR TU RAPIDEZ!

como pensaba que nadie me había contestado , me había desanimado un poco y lo había dejado un poco de lado. Pero ya estoy puesto en marcha!

vamos por partes.

Al compilarlo me da varios errores ,

Code: [Select]
sumo = digitalRead(pin);
   error: 'pin' was not declared in this scope
  sumo = digitalRead(pin);

entiendo que es porque tengo que poner pinBOTON1 o el pinBOTON2

Un poco mas adelante dice

Code: [Select]
resto = digitalRead(pin);
  if (resto && !restoAnt) {
      contador--;

  'contador' was not declared in this scope
      contador--;
tendría que ser sustituido por " numero"


___

Respecto a la declaración inicial

Code: [Select]
int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
const byte sensorPinLDR = A0;
const byte pinBOTON1   = 2;
const byte pinBOTON2  = 3;

bool sumo, sumoAnt;
bool resto, restoAnt;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//



pinBOTON1 y 2 estan declarados para los pines 2 y 3?  puedo cambiarlos porque los 2 y 3 ya estan siendo usados para el LCD



Por otra parte no entiendo muy bien lo que me comentas del LDR ..
Sin la botonera esta funcionando bien,  pero cualquier modificación y mejora es muy agradecida !



respecto al pulsador que utilizo es con una resistencia . Tendría que utilizar PULL_DOWN?



MUCHAS GRACIAS por tu ayuda, espero tu respuesta con muchas ganas.

Saludos.

surbyte

Hola, te he enviado un privado para que hagas algunos ajustes a tu ultimo post referido a como postear las cosas


El código con las dos correcciones de pinBOTON1 y pinBOTON2 y número por contador.

Code: [Select]
/*
  Código desarrollado por LEANTEC Robotics & Electronics.
  Queda permitido el uso de este código siempre que sea sin ánimo de lucro
 */
 
// incluir libreria
#include <Wire.h>
#include <LiquidCrystal.h>

//Declaramos las variables necesarias
int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
const byte sensorPinLDR = A0;
const byte pinBOTON1  = 2;
const byte pinBOTON2  = 3;

bool sumo, sumoAnt;
bool resto, restoAnt;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Declaramos los pines que usa nuestra pantalla(RS,E,D4,D5,D6,D7)

void setup() {
 
  pinMode(pinBOTON1, INPUT);
  pinMode(pinBOTON2, INPUT);
  lcd.begin(16, 2);//Iniciamos la pantalla y le decimos el numero de caracteres y filas
 
  lcd.setCursor(5, 0);//Situamos el lugar donde empezar la escritura
  lcd.print("LEANTEC");//Escribimos LEANTEC
  delay (2000);//Esperamos dos segundos
  lcd.clear();//Limpiamos la pantalla
  lcd.setCursor(0, 0);
  lcd.print("Robotics &");
  delay (2000);
  lcd.setCursor(5, 1);
  lcd.print("Electronics");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONTADOR CON");
  delay (2000);
  lcd.setCursor(3, 1);
  lcd.print("BARRERA LASER");
  delay (3000);
  lcd.clear();
}

void loop() {
 
  sumo = digitalRead(pinBOTON1);
  if (sumo && !sumoAnt) {
      numero++;
  }
  sumoAnt = sumo;

  resto = digitalRead(pinBOTON2);
  if (resto && !restoAnt) {
      numero--;
  }
  restoAnt = resto;

  valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
  lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
  lcd.print("CONTADOR");//Escribimos contador
  lcd.setCursor(10, 1);//Situamos el lugar donde escribiremos
  lcd.print(numero);//Representamos la variable numero
 
  auxnumero = 0;//hacemos la variable auxnumero 0. Esta variable nos ayuda a contar solo 1 cada vez que entremos en el bucle de más abajo
 
  while (valorLDR < 600){//Entramos en el bucle si valorLDR es menor de 600. Esto ocurre cuando no da el laser sobre la LDR.
       valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
       if (auxnumero == 0){// Entramos en el if si auxnumero es 0. Esto solo ocurre la primera vez que recorremos el while.
           numero++;//Sumamos 1 a la variable numero
           auxnumero = 1;//hacemos auxnumero 1, para que solo sume una vez 1 a la variable numero cuando estamos dando vueltas dentro del bucle.
       }
    } 
}



carlosjq10

Buenas noches, amigo disculpa la pregunta pero que deseas registrar? vas a implementar el registro del paso de algo en una base de datos. Tengo dudas del porque utilizan la señal y la tratan como análoga? yo me inclinaría por usar una señal digital 1/0 creo que la barrera láser la entrega digital no? aclárenme esa duda.

En mi trabajo, tenemos una maquina que se llama paletizadora y apila en un orden especifico las cajas de bebidas carbonatadas. En el panel de esta máquina hay un contador que registra el numero de cajas que han pasado y cada 8 cajas se reinicia ya que cada camada debe tener 8 cajas. En caso de que se caiga una botella y pase por el láser, se incrementara el contador erróneamente y abra un error el cual debemos compensar con botones de +/-.

Con respecto a registrar en una base de datos lo que pase por tu barrera laser pues claro que es posible. Busca información en el buscador de este foro sobre PHP y arduino y encontraras buena info. Tambien puedes buscar en youtube y google para complementar.

Por acá estamos para servirte...

Saludos

ericybea

Hola surbyte!!

impresionante!!! funciona espectacular!!! es impresionante mil millones de gracias.

Tengo algunos problema:

Cuando paso de 99 a 100 , 101... y le doy a restar entonces cuenta 101, 100, 990 ... es muy raro . que piensas que puede ser? porque luego ademas pasa de 990 a 100 .. es muy raro. Solo pasa si utilizo el boton de restar.


El siguiente problema es que después de pasar muchos números y rápidamente los botones no funcionan , pero al pasar un rato si . ( Normalmente no pasa un numero a mas de una vez por segundo , esto lo estoy haciendo ahora parea pasar los números rápidamente. )

Que piensas ??

Muchas gracias por tu ayuda.

Saludos.




ericybea

Hola carlosjq10 ,


muchas gracias por tu interés

El caso es que necesito almacenar la información en una base de datos porque lo que esta contando este contador son piezas que luego necesitamos almacenar. Al almacenar los datos lo que estamos es controlando nuestro stock o nuestra producción diaria.

Cierto es que se puede apuntar a mano , pero claro ... siempre se puede uno despistar y no apuntarlo. Igualmente también me serviría poder guardarlo en una tarjeta sd en el mismo arduino . Claro que para eso quizas necesitaría instalarle un reloj para que me guarde la fecha de los datos , cierto ?

Tambien comiento que estoy utilizando un arduino nano, lo digo porque ya he estado viendo información sobre PHP y todos hablan de ethernet ... pero yo necesitaría utilizar algo wifi .

Que te parece?

saludos.

carlosjq10

Por supuesto, debes utilizar el ESP8266 para conectarte a una red wifi y así poder enviar los datos al servidor a través del método GET.

Recuerda que con el método GET solo necesitas enviar los datos a través de la misma url.

Saludos

surbyte

Quote
Cuando paso de 99 a 100 , 101... y le doy a restar entonces cuenta 101, 100, 990 ... es muy raro . que piensas que puede ser? porque luego ademas pasa de 990 a 100 .. es muy raro. Solo pasa si utilizo el boton de restar. 
Este es un simple error de la presentación, lo que ocurre es que antes presentaba 3 digitos y ahora solo dos. Entonces al presentar 2, se corre una posición y tu CREES VER 990 pero solo muestra 99 y el 0 de antes, cuando llego a 100. Se entiende?

yo uso esto 
defino una variable si quieres al comenzar el loop
Code: [Select]
buffer char str[30};

y luego en lugar de esto

Code: [Select]
lcd.setCursor(10, 1);//Situamos el lugar donde escribiremos
  lcd.print(numero);//Representamos la variable numero


uso esto

Code: [Select]
lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
sprintf(buffer,"Contador= %3d", numero);
lcd.print(buffer);


esta instrucción te permite armar todo tipo de carteles con control absoluto de lo que quieres enviar.
%d es para imprimir enteros como lo es tu variable número
si pongo un número entre % y d lo que le digo es que va a imprimir desde 0 a 999 si tuvieras que imprimir 4 digitos agrega otro digito mas, o sea %4d.
Siempre los números estaras justificados a derecha por ejemplo
borra la linea anterior porque se te van a superponer.

ericybea

Muchas gracias! esta perfectamente entendido .

He estado googleando y he buscado algo de información  sobre como usar este comando .

https://www.arduino.cc/en/Reference/PROGMEM




Quote
yo uso esto
defino una variable si quieres al comenzar el loop
Code: [Select]
buffer char str[30};
Pero me esta pasando un error de novato ..

Code: [Select]
int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
int buffer char str[30};
const byte sensorPinLDR = A0;
const byte pinBOTON1   = 2;
const byte pinBOTON2  = 3;



error: 'buffer' was not declared in this scope
 sprintf(buffer,"Contador= %3d", numero);

No entiendo que es lo que pasa...

Muchas gracias por la ayuda.

Saludos.





surbyte

Veo que aun no entiendes lo que te reclama el compilador.

Code: [Select]
error: 'buffer' was not declared in this scope
 sprintf(buffer,"Contador= %3d", numero);

Esto reclama que buffer no esta declarada. 
y esto no exite, esta mal definido

Code: [Select]
int buffer char str[30};
debe ser

Code: [Select]
char buffer[30];


ericybea

vale.... me he dado cuenta que se pueden solucionar muchas cosas con google y buscando error por error para encontrar una solución . Ademas siempre encuentro otras cosas que me ayudan para otras cosas.

Pero esto no he podido encontrar nada.. te pido disculpas porque estoy seguro de que es una tontería !


laser:15: error: expected initializer before 'str'
 int char buffer str[30};
                 ^
laser:15: error: expected declaration before '}' token
 int char buffer str[30};
                       ^
exit status 1
expected initializer before 'str'


Code: [Select]
/*
  Código desarrollado por LEANTEC Robotics & Electronics.
  Queda permitido el uso de este código siempre que sea sin ánimo de lucro
 */
 
// incluir libreria

#include <LiquidCrystal.h>

//Declaramos las variables necesarias

int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
int char buffer str[30};
const byte sensorPinLDR = A0;
const byte pinBOTON1   = 2;
const byte pinBOTON2  = 3;

bool sumo, sumoAnt;
bool resto, restoAnt;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Declaramos los pines que usa nuestra pantalla(RS,E,D4,D5,D6,D7)

void setup() {
 
  pinMode(pinBOTON1, INPUT);
  pinMode(pinBOTON2, INPUT);
  lcd.begin(16, 2);//Iniciamos la pantalla y le decimos el numero de caracteres y filas
 
  lcd.setCursor(5, 0);//Situamos el lugar donde empezar la escritura
  lcd.print("LEANTEC");//Escribimos LEANTEC
  delay (2000);//Esperamos dos segundos
  lcd.clear();//Limpiamos la pantalla
  lcd.setCursor(0, 0);
  lcd.print("Robotics &");
  delay (2000);
  lcd.setCursor(5, 1);
  lcd.print("Electronics");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONTADOR CON");
  delay (2000);
  lcd.setCursor(3, 1);
  lcd.print("BARRERA LASER");
  delay (3000);
  lcd.clear();
}

void loop() {
 
  sumo = digitalRead(pinBOTON1);
  if (sumo && !sumoAnt) {
      numero++;
  }
  sumoAnt = sumo;

  resto = digitalRead(pinBOTON2);
  if (resto && !restoAnt) {
      numero--;
  }
  restoAnt = resto;

  valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
  lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
  sprintf(buffer,"Contador= %3d", numero);
  lcd.print(buffer);

 
  auxnumero = 0;//hacemos la variable auxnumero 0. Esta variable nos ayuda a contar solo 1 cada vez que entremos en el bucle de más abajo
 
  while (valorLDR < 600){//Entramos en el bucle si valorLDR es menor de 600. Esto ocurre cuando no da el laser sobre la LDR.
       valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
       if (auxnumero == 0){// Entramos en el if si auxnumero es 0. Esto solo ocurre la primera vez que recorremos el while.
           numero++;//Sumamos 1 a la variable numero
           auxnumero = 1;//hacemos auxnumero 1, para que solo sume una vez 1 a la variable numero cuando estamos dando vueltas dentro del bucle.
       }
    } 
}



Muchas gracias!

carlosjq10

Amigo lee lo que te explico Surbyte.  Usa corchetes para declarar la variable buffer. Estas usando corchetes y llave.

Code: [Select]

int char buffer str[30};


Lo correcto debe ser

Code: [Select]

int char buffer str[30];


Saludos

ericybea

 :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:  :smiley-eek-blue:

Gracias... no me había dado cuenta!

gracias!

ericybea



 :o  :o  :o  :o  :o  :o
ahora si que no lo entiendo...pido disculpas.

saludos.

Code: [Select]
#include <LiquidCrystal.h>

//Declaramos las variables necesarias

int numero       = 0;
int auxnumero    = 0;
int valorLDR     = 0;
int char buffer str[30];

const byte sensorPinLDR = A0;
const byte pinBOTON1   = 2;
const byte pinBOTON2  = 3;

bool sumo, sumoAnt;
bool resto, restoAnt;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Declaramos los pines que usa nuestra pantalla(RS,E,D4,D5,D6,D7)

void setup() {
 
  pinMode(pinBOTON1, INPUT);
  pinMode(pinBOTON2, INPUT);
  lcd.begin(16, 2);//Iniciamos la pantalla y le decimos el numero de caracteres y filas
 
  lcd.setCursor(5, 0);//Situamos el lugar donde empezar la escritura
  lcd.print("LEANTEC");//Escribimos LEANTEC
  delay (2000);//Esperamos dos segundos
  lcd.clear();//Limpiamos la pantalla
  lcd.setCursor(0, 0);
  lcd.print("Robotics &");
  delay (2000);
  lcd.setCursor(5, 1);
  lcd.print("Electronics");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONTADOR CON");
  delay (2000);
  lcd.setCursor(3, 1);
  lcd.print("BARRERA LASER");
  delay (3000);
  lcd.clear();
}

void loop() {
 
  sumo = digitalRead(pinBOTON1);
  if (sumo && !sumoAnt) {
      numero++;
  }
  sumoAnt = sumo;

  resto = digitalRead(pinBOTON2);
  if (resto && !restoAnt) {
      numero--;
  }
  restoAnt = resto;

  valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
  lcd.setCursor(0, 0);//Situamos el lugar donde escribiremos
  sprintf(buffer,"Contador= %3d", numero);
  lcd.print(buffer);

 
  auxnumero = 0;//hacemos la variable auxnumero 0. Esta variable nos ayuda a contar solo 1 cada vez que entremos en el bucle de más abajo
 
  while (valorLDR < 600){//Entramos en el bucle si valorLDR es menor de 600. Esto ocurre cuando no da el laser sobre la LDR.
       valorLDR = analogRead(sensorPinLDR);// Leemos el valor de la LDR y lo guardamos en valorLDR
       if (auxnumero == 0){// Entramos en el if si auxnumero es 0. Esto solo ocurre la primera vez que recorremos el while.
           numero++;//Sumamos 1 a la variable numero
           auxnumero = 1;//hacemos auxnumero 1, para que solo sume una vez 1 a la variable numero cuando estamos dando vueltas dentro del bucle.
       }
    } 
}






Arduino:1.6.9 (Mac OS X), Tarjeta:"Arduino Nano, ATmega328"

laser:11: error: expected initializer before 'str'
 int char buffer str[30];
                 ^
/Users/......./Documents/Arduino/laser/laser.ino: In function 'void loop()':
laser:64: error: 'buffer' was not declared in this scope
   sprintf(buffer,"Contador= %3d", numero);
           ^
exit status 1
expected initializer before 'str'


Go Up