Problema con contatore

Salve a tutti, nel mio programma ho inserito un contatore per contare degli impulsi provenienti da un finecorsa, ma impostando la sua variabile a 0, il conteggio inizia da 1 anzichè da 0 (senza aver dato nessun impulso in ingresso). Attualmente per risolvere il problema ho impostato la variabile a -1. Non capisco perchè inizialmente non mi visualizza lo 0!

tralasciando il void setup, il codice è il seguente:

long contatore=0; // (attualmente è a -1!)

void loop:

if (state==HIGH && lastState==LOW)
{

[contatore++]

lcd.setCursor(16, 0);

}
lcd.print(contatore);

Come sono inizializzate le variabili state e lastState?

Le variabili sono inizializzate nel seguente modo:

int state=LOW; int lastState=LOW;

Ma tu il contatore lo incrementi prima di visualizzarlo: contatore++ lcd.print(contatore)

Prova a mettere dei serial print in varie parti del codice e fai un po' di debug col serial monitor.

A meno che non sia un errore di trascrizione, lo sketch presenta degli errori:

long contatore=0; // (attualmente è a -1!)

void loop {
  if (state == HIGH && lastState == LOW) {
    contatore ++;
    lcd.setCursor(16, 0);
  }
  lcd.print(contatore);
}

E' sicuramente pseudo-codice, in quella forma non compilerebbe neanche. Comunque l'amico non ha risposto sull'osservazione che gli ho fatto, che è il motivo per cui la prima stampa non sarà mai 0 ma 1, visto che incrementa il contatore prima di visualizzarlo ;)