Pages: [1]   Go Down
Author Topic: perche questo sketch non legge gli impulsi sotto i 31 hertz  (Read 479 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non riesco a venirne piu a capo    smiley-cry

questo sketch quando imposto il tono sotto i 31 hertz   sballa eppure dovrebbe andare meglio a prendere le letture   di frequenza piu bassa  smiley-evil

se metto il tone tra 31- 1300   legge tutto benissimo  con tono altre 1300 posso comprendere che fa fatica a leggere ma in basso proprio non ci arrivo

il pin 17 e 19   li ho uniti con una resistenza   al volo  (arduino uno)

Code:
unsigned long  tempoattuale;

unsigned long  tempoprecedente;          
long tempotrascorso = 0;      

int precisione ;  

byte frequenza2 =0;

byte melagiri =0;
byte peragiri =0;

int frequenza =0;




void setup(){

    Serial.begin(9600);
    pinMode(17, OUTPUT);
   // pinMode(19, INPUT);
    
   // digitalWrite  (19, HIGH);



}

void loop(){
  
 

  tone (17, 31);  
  
precisione = 1000;
if (analogRead(A5)>555 && melagiri ==0) (melagiri =1, frequenza = frequenza +1);

  if (analogRead(A5) < 555 ) melagiri=0;

if (peragiri == 0) tempoprecedente = millis(),  peragiri =1;

  if (analogRead(A5)>555 && melagiri ==0) (melagiri =1, frequenza = frequenza +1);

  if (analogRead(A5) < 555 ) melagiri=0;
  
 

if (millis() - tempoprecedente > 1000)Serial.print ("giri   "), Serial.println (frequenza), peragiri = 0 ;
//if (millis() - tempoprecedente > 1000)Serial.print ("giri   ")  peragiri = 0, frequenza = 0  ;




if (millis() - tempoprecedente > 1000)frequenza = 0  ;

 

  
« Last Edit: November 05, 2012, 03:00:05 am by gingardu » Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo é un esempio di nomi variabili parlanti (ma parlano della frutta non di cosa significano le variabili), programmazione incasinata, Sketch dato incompleto (manca almeno una parentesi graffa finale) e interpretazione di sintassi Tua ma non quella del C.

Non hai bisogno di usare la lettura analogica del segnale, usa il digitale.
Code:
if (peragiri == 0) tempoprecedente = millis(),  peragiri =1;
Un IF senza parentesi graffe si riferisce solo alla funzione/istruzione seguente non a tutte della riga. peragiri =1; viene eseguito a ogni passaggio.
Code:
if (analogRead(A5)>555 && melagiri ==0) (melagiri =1, frequenza = frequenza +1);
Dicevo parentesi graffe non parentesi tonde.

ok, avevi un brutto giorno e dimentichiamo quel sketch.
Ciao Uwe
« Last Edit: November 05, 2012, 03:29:27 am by uwefed » Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Premesso che devi usare un pin digitale per leggere la frequenza, non ha senso usare l'ADC per questa cosa, non riesci a leggere nulla sotto i 31 Hz perché sotto questo valore la tone funziona male, p.e. con 30 genera una frequenza di circa 1.6 kHz.
Dato che la tone usa il timer2 per generare le frequenze il limite minimo sono proprio i 31 Hz visto che il suo prescaler arriva 1:1024 e la sua risoluzione è otto bit, un semplice conto ci dice che effettivamente non si può andare sotto i 31 HZ, 16000000/1024 /256 = 61 Hz come velocità minima cambio stato pin, dato che servono due semiperiodi per ottenere per ottenere un'onda quadra la reale frequenza minima sono 30.5 Hz.
Anche in questo caso il reference è carente di informazioni visto che non riporta il limite minimo, solo quello massimo inteso come il numero più grosso rappresentabile con un unsigned int, ovvero 65535 Hz.

Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok allora il sospetto mi era venuto (giuro)  smiley 
ho messo  il blink senza delay   nello sketc  e selezionato il pin 17 come ledoutput,  (eliminato il tone)

cosi legge bene anche gli impulsi bassi  smiley

per il fatto di adoperare l'analogRead la trovo molto comodo prendere il segnale da cose analogiche che variano poco il suo valore,  si puo sempre impostare la soglia, non devo superare i 46 Hertz come lettura
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo é un esempio di nomi variabili parlanti (ma parlano della frutta non di cosa significano le variabili), programmazione incasinata, Sketch dato incompleto (manca almeno una parentesi graffa finale) e interpretazione di sintassi Tua ma non quella del C.

Non hai bisogno di usare la lettura analogica del segnale, usa il digitale.
Code:
if (peragiri == 0) tempoprecedente = millis(),  peragiri =1;
Un IF senza parentesi graffe si riferisce solo alla funzione/istruzione seguente non a tutte della riga. peragiri =1; viene eseguito a ogni passaggio.
Code:
if (analogRead(A5)>555 && melagiri ==0) (melagiri =1, frequenza = frequenza +1);
Dicevo parentesi graffe non parentesi tonde.

ok, avevi un brutto giorno e dimentichiamo quel sketch.
Ciao Uwe



beh...   i nomi di frutti li metto come semplici segnali/bandierine  per   farli passare   da zero a uno  o (qualcosa di molto semplice)

per il fatto di adoperare l'analogRead la trovo molto comodo prendere il segnale da cose analogiche che variano poco il suo valore,

il fatto delle parentesi graffa  (adesso verifico  smiley-twist  )  ,  ero convinto che le cose separate da virgola venivano eseguite  una appresso all'altra),  ne ho quasi la certezza,  altrimenti questa riga stamperebbe solo la prima cosa e invece fa tutto il resto


if (millis() - tempoprecedente > 1000) Serial.print ("giri   "), Serial.println (frequenza), peragiri = 0 ;
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Pages: [1]   Go Up
Jump to: