Offline
God Member
Karma: 0
Posts: 689
AHHAH
|
 |
« on: August 03, 2011, 01:23:59 pm » |
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 
|
|
|
|
|
Logged
|
|
|
|
|
Monselice PD Italy
Offline
Faraday Member
Karma: 15
Posts: 4918
фон Крыса
|
 |
« Reply #1 on: August 03, 2011, 01:27:54 pm » |
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); } ringrazia garinus 
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
Offline
God Member
Karma: 0
Posts: 689
AHHAH
|
 |
« Reply #2 on: August 03, 2011, 01:37:49 pm » |
grazie garinus, anche se non ti conosco  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
Faraday Member
Karma: 15
Posts: 4918
фон Крыса
|
 |
« Reply #3 on: August 03, 2011, 01:42:03 pm » |
si è proprio un frequenzimetro... io l' ho provato e tiene dfino a 38-39Khz non di più poi svalvola  an e legge onde quadre... da 0 a +5V
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
Offline
God Member
Karma: 0
Posts: 689
AHHAH
|
 |
« Reply #4 on: August 03, 2011, 01:56:20 pm » |
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
Faraday Member
Karma: 15
Posts: 4918
фон Крыса
|
 |
« Reply #5 on: August 03, 2011, 02:01:41 pm » |
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); } comunque sia non dovrebbe dar alcun problema 
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
Offline
God Member
Karma: 0
Posts: 689
AHHAH
|
 |
« Reply #6 on: August 03, 2011, 02:04:51 pm » |
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
Faraday Member
Karma: 15
Posts: 4918
фон Крыса
|
 |
« Reply #7 on: August 03, 2011, 02:19:18 pm » |
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
God Member
Karma: 0
Posts: 689
AHHAH
|
 |
« Reply #8 on: August 03, 2011, 02:30:25 pm » |
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 
|
|
|
|
|
Logged
|
|
|
|
|
Monselice PD Italy
Offline
Faraday Member
Karma: 15
Posts: 4918
фон Крыса
|
 |
« Reply #9 on: August 03, 2011, 03:05:59 pm » |
HEHE  :P 
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
|