Pages: [1]   Go Down
Author Topic: aiuto sketch, contare impulsi su un ingresso digitale  (Read 2091 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho un timer rtc che mi genera un impulso al secondo e un impulso al minuto, su 2 uscite distinte

io voglio mettere questi 2 segnali in 2 ingressi digitali (o anche analogici, non e' importante)

non so come si fa a fargli contare tot impulsi e raggiunto la cifra impostata nello sketch deve darmi un high su un altra uscita digitale

mi bastano le basi dello sketch smiley-kitty

Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

O usi un interrupt (non so usarli) oppure la pulse in....
Code:
//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);
}
ringrazia garinus smiley-wink
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie garinus, anche se non ti conosco smiley-sweat

ratto, e' un misuratore di frequenza? molto interessante, ora vado a prendere il generatore di forme d'onda e lo provo

devo studiarmi il programma per quello che volevo fare, e' il suggerimento giusto;)
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si è proprio un frequenzimetro... io l' ho provato e tiene dfino a 38-39Khz non di più poi svalvola smiley-razz
an e legge onde quadre... da 0 a +5V
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

son qui che lo sto provando ma non mi legge...

l'ho attaccato ad un gen di frequenza, vorrei fargli leggere 500Hz

massa con massa, uscita del generatore al 7

onda quadra tra 0 e +5volt (alta impedenza)

frequenza zero...

dove sbaglio?


Risolto, tolta la massa del segnale mi da la frequenza, ma non capisco perche' cosi' vada???
« Last Edit: August 03, 2011, 01:59:22 pm by reizel » Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

frequenza zero.... boh a me funzia....
prova ora.... sembra uguale ma non lo è....
Code:
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);
}

comunque sia non dovrebbe dar alcun problema  smiley-roll-blue
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ratto, ho aggiunto sotto al mess precedente, funziona ma ho dovuto lasciare separate le massa del generatore e di arduino

ho solo il filo del segnale ad onda quadra, cosi' e' preciso solo tra 10kHz e 60kHz, oltre i 60k non va, sotto i 10k e' troppo impreciso

non capisco xche' non va con le masse in comune??
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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....
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

cmqe programmino molto utile smiley-wink

Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

HEHE smiley-razz:P smiley-cool
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Pages: [1]   Go Up
Jump to: