Muy buenas, soy nuevo en el maravilloso mundo de arduino, y tengo unas dudas en la programación de un contador de pulsos, quisiera ver si pueden ayudarme a comunicarme con mi arduino, es mi primer proyecto y estoy estancado en esto y por mucho que leo no me aclaro. bueno os cuento un poco el proyecto:
se trata de hacer dos contadores uno principal que cuente el total de veces que se pulsa el botón y lo refleje en lcd y el contador secundario que me refleje un promedio de pulsos minuto " pero que lo indique cada 30 segundos" es decir que cuente las veces que pulso el botón durante 30 segundos multiplique esos pulsos por 2 y asi meda los pulsos por minuto, y me haga la lectura cada 30 segundos
ejemplo: contador principal 2000 contador secundario 8 pulsos minuto 30 segundos después
contador principal 2004 contador secundario 8 pulsos minuto.
creo que es bastante entendible el ejemplo
Bueno pues nose como programar para que lo haga, " el contador secundario" si alguien puede aclararme un poco se lo agradecería. Muchas gracias de antemano , un saludo.
Saludos Braun.
La forma de trabajo aqui en el foro es que tu presentes el trabajo que tengas y luego de eso te ayudamos, o en ocasiones te reparamos el codigo.
Te recomiendo uses los pines 2 y 3 con sus interrupciones para hacer el conteo, has tu parte de trabajo y cuando tengas algo pasas por aqui.
Hola, bienvenido.
Ese segundo contador puede ser de varias maneras, pero pongo aca el que me parece mas facil de programar.
No pongo todo el codigo, solo lomque hace a este contador.
long findeltimer = 0;
long contadortotal = 0;
long contadorparcial = 0;
setup{
findeltimer = 30000 + millis();
...
}
loop{
if ( ...boton apretado... ){
contadortotal++;
contadorparcial++;
}
...display.total..
if ( findeltimer > millis() ){
...display parcial...
findeltimer = 30000 + millis();
contadorparcial = 0;
}
}
Este es un camino. saludos
hola, muchas gracias por dedicarme un ratito de vuestro tiempo." Max saeta y perrociego"
perrociego agradezco tu dedicación Gracias; pero no consigo hacerlo y Max te agradezco que me indiques como funciona el foro Gracias y el programa que tengo a medio montar seria esté aunque luego quiero añadirle mas cosas pero que ya se como hacerlas pero necesito solucionar lo del valor del contador secundario luego cuando consiga hacer todo el programa lo pondré para que me deis vuestra opinión , de momento os pongo donde estoy atrapado:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int conta= 0;
void setup()
{
Serial.begin(9600);
pinMode(2,INPUT);
lcd.begin (16,2);
}
void loop()
{
lcd.setCursor (11,0);
lcd.print("total");
lcd.setCursor (7,1);
lcd.print ( "Pulso min");
{
if ( digitalRead(2) == HIGH )
{
conta++;
lcd.setCursor (0,0);
lcd.print(conta);
delay (100);
lcd.setCursor (0,1);//* el problema lo tengo que no se como ponerle aqui que el contador de debajo me hiciera
lcd.print (conta*2); //*cada 30 segundos un recuento de los pulsos en esos 30 segundos multiplicara x 2
// y mostrara el numero hasta el proximo recuento y asi sucesivamente.
delay(100);
}
}
}
aquí teneis lo que llevo hecho y estoy atrancado. que opináis ?
Ok, ya comenzaste tu trabajo. Otra cosa el codigo va dentro del tag de codigo que es la hoja con los signos <> en la parte superior de donde escribes tu mensaje.
Un codigo simple y que te muestra el uso de las interrupciones es este:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
volatile unsigned long cuenta_principal = 0;
volatile unsigned long cuenta_promedio = 0;
void contar(){
cuenta_principal++;
}
void cont_prom(){
cuenta_promedio++;
}
void setup() {
Serial.begin(9600);
lcd.begin (16,2);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, contar, FALLING);
attachInterrupt(1, cont_prom, FALLING);
}
unsigned long tiempo = millis();
void loop() {
lcd.setCursor (11,0);
lcd.print("total");
lcd.setCursor (7,1);
lcd.print ( "Pulso min");
lcd.print (cuenta_promedio*200):
if(millis()-tiempo>300){
cuenta_promedio = 0;
tiempo = millis();
}
}
Actualiza el valor del promedio cada 300 ms, esto se hace para que no espere tanto para mostrar el primero valor, pero si tus pulsos por minuto no son muchos cambia el 300 en el if por 30000 y el *200 por *2.