Salve ragazzi,
dopo aver fatto molte ricerche sia su google che sul forum ho deciso di postare qui dato che non ho trovato nessun riscontro del mio problema!
Ho qualche dubbio su pulseIn, dovrebbe misurare la lunghezza di un impulso da 10 microsecondi a 3 minuti (
http://arduino.cc/en/Reference/PulseIn).
Ecco uno sketch:
int pulsante = 2;
void setup(){
pinMode(2, INPUT);
digitalWrite(2, HIGH);
Serial.begin(9600);
Serial.println("Program start!\n\n");
}
unsigned long valore = 0;
unsigned long tempo1 =0;
unsigned long tempo2 = 0;
void loop(){
tempo1 = millis();
valore = pulseIn(pulsante, LOW);
tempo2 = millis();
Serial.print("\tValore: ");
Serial.print(valore);
Serial.print("\t Lettura: ");
Serial.print(digitalRead(pulsante));
Serial.print("\tTempo: ");
Serial.println((tempo1-tempo2));
}
Ancora non ho capito se alla chiamata del comando pulseIn il codice si blocca e attende (per il tempo di timeout che di default dovrebbe essere un secondo) che il pin vada allo stato indicato, ed è questo il primo dubbio.
Aprendo il serial monitor ecco cosa ho in uscita:
Program start!
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 0 Tempo: 4294967055
Valore: 0 Lettura: 0 Tempo: 4294967087
Valore: 0 Lettura: 0 Tempo: 4294967087
Valore: 0 Lettura: 0 Tempo: 4294967087
Valore: 0 Lettura: 0 Tempo: 4294967087
Valore: 0 Lettura: 0 Tempo: 4294967087
Valore: 0 Lettura: 1 Tempo: 4294967078
Valore: 0 Lettura: 1 Tempo: 4294967063
Valore: 0 Lettura: 1 Tempo: 4294967062
Valore: 0 Lettura: 1 Tempo: 4294967063
Quel valore 42949670XX cosa indica? Perchè appare? Non dovrebbe essere un piccolo numero (in millisecondi).
Se non tocco il pulsante non dovrebbe valere circa 1000? (Un secondo di timeout).
Perchè se schiaccio il pulsante e dopo lo rilascio la variabile "valore" non cambia?