ContaImpulsi tramite Interrupt

Ciao a tutti avrei bisogno di una mano per far funzionare questo sketch.
Deve contare gli impulsi (5V) sul pin 2 di arduino (ho messo un interruttore e una resistenza tra 2 e GND)

#include <U8glib.h>  // U8glib library
int ingresso = 2;   //Piedino di ingresso sensore
int flusso;      //Quantità di gocce
volatile int count; //Variabile di conteggio 


U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
 
void setup() {
  pinMode (ingresso, INPUT);  //Imposta piedino 2 in ingresso
  attachInterrupt (0, impulso, RISING);  //Configura interrupt 0 pin 2
  Serial.begin (9600);  //Velocità seriale
  u8g.begin();
}
 
void loop() {
Serial.println ("ContaImpulsi");
bool S=digitalRead(2);
count = 0;      //Resetta il conteggio
interrupts();   //Abilita gli interrupt
delay (30000);   //Pausa di 30 secondi
noInterrupts(); //Disabilita gli interrupt
 
flusso = (count*2); 
Serial.print (flusso);  //Scrive a schermo la variabile flusso
Serial.println (" imp/min");
u8g.firstPage();
 do
  {
    // Scrivo lettura
    u8g.setFont(u8g_font_helvB12);   // select font u8g_font_fub17r
    u8g.drawStr(40, 30, "Rate");   // put string of display at position Y, X
    u8g.setPrintPos(40, 50);        // set position
    u8g.print(flusso, 1);  // 
    u8g.println(" imp/min");
    
  }  while ( u8g.nextPage() );

}
 
void impulso() {
   
  count = count + 1;   //Incrementa count di 1
  }

il problema è che il conteggio è totalmente sballato
probabilmente la lettura è affetta da rumore ma non riesco proprio ad eliminarlo. C'è un modo per rendere la lettura più robusta?

Devi mettere un circuito di antirimbalzo (gli interruttori provocano svariati rimbalzi con il segnale che fa su e giù) ...

... dato che hai messo una resistenza verso GND, hai una configurazione con pull-down.

Guglielmo

Grazie Guglielmo,
Quindi lato sketch va bene mentre devo realizzare un circuito come quello che ho ripreso da te per rendere più robusta la misura.

1

Grazie ancora

I contatti meccanici vanno filtrati:

65432321

.
.
EDIT: non so perché ma non avevo visto le risposte precedenti...

... non più robusta, ma per pulire il segnale!

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.