O usi un interrupt (non so usarli) oppure la pulse in....
//variabili
int sigPin = 7; //signal pin
int state; //the state of the input
int oldstate;
unsigned long t; //timer
unsigned long s; //samples
unsigned long c; //count
unsigned long f; //frequency
void setup()
{
pinMode(sigPin, INPUT);
Serial.begin(9600);
}
void loop()
{
c = 0;
t = millis(); // read time at start of sampling
for(s=0; s<10000; s++){ //take a number of samples
state = digitalRead(sigPin); //read state
if (state != oldstate){ //if state changes:
c++; //increment counter
oldstate = state; //and reset current state
}
}
t = millis() - t; //read time at end of sampling
c = c/2; // need to divide by 2 because counter incremented on each change - two changes per cycle
f = 1000*c/t; //calculate frequency
Serial.println("frequenza");
Serial.println(f);
delay(500);
}
frequenza zero.... boh a me funzia....
prova ora.... sembra uguale ma non lo è....
void setup()
{
pinMode(sigPin, INPUT);
Serial.begin(9600);
}
void loop()
{
c = 0;
t = millis(); // read time at start of sampling
for(s=0; s<100000; s++){ //take a number of samples ///////se non va aumenta il valore da 10000 a 100000 però ti avviso si pianta.. fa una lettura ogni due tre secondi...
state = digitalRead(sigPin); //read state
if (state != oldstate){ //if state changes:
c++; //increment counter
oldstate = state; //and reset current state
}
}
t = millis() - t; //read time at end of sampling
c = c/2; // need to divide by 2 because counter incremented on each change - two changes per cycle
f = 1000*c/t; //calculate frequency
Serial.println("frequenza");
Serial.println(f);
delay(500);
}
sinceramente non ti so rispondere......
probabilmente gli basta la terra oppure ha qualche disturbo....
e quasi di sicuro riesce a leggerla comunque perchè sono freq alte non in radiofrequenza ma quasi prossimi....
domani provo e ti so dire... io mi leggevo gli NE ed i generatori di squola senza problemi da freq molto basse 100-150Hz a 38-39Khz....
spe, sicuro ho problemi di massa/terra, devo fare qualche prova, in caso metto tutto sotto il gruppo di continuita' e gli stacco l'alimetazione, l'uscita dell'apc e' 1000 volte piu' pulita del 220enel, domani provo
Mi accodo a questa discussione perchè mi serve si un frequenzimetro ma per basse frequenze. mi serve sapere la frequenza al minuto di un impulso su ingresso digitale, nel mio caso al pin due, però la frequenza mi serve in tempo reale senza aspettare il conteggio allo scadere del minuto ma conteggiando il tempo fra un impulso e l'altro e il risultato dev'essere subito rilevabile e risettato con la misurazione del impulso sucessivo e cosi via.
Poi inserirò il risultato su display grafico, ma questo lo gestirò con le dovute librerie con le quali ho già fatto qualche prova con sucesso.
Ho già fatto delle prove su sketch ma senza sucesso, non riesco a gestire il risultato della frequenza con la lettura fra i due impulsi.