Go Down

Topic: Problema resistenza buzzer (Read 2022 times) previous topic - next topic

toti94

Raga seguendo il libro c'è un progetto con un buzzer magnetico e suggerisce di usare una resistenza da 100 kohm ma io ho solo resistenze da 330 kohm e 180 kohm :\ come posso risolvere?

tonid

Quote
Raga seguendo il libro c'è un progetto con un buzzer magnetico e suggerisce di usare una resistenza da 100 kohm ma io ho solo resistenze da 330 kohm e 180 kohm :\ come posso risolvere?

Se ci pensi bene come facciamo noi a sapere che libro stai leggendo tu ?
Io lo so ,stai leggendo primi passi con arduino ?
Quella resistenza da 100k è messa in serie ad una fotoresistenza?
Sela metti da 180k ti cambia solo il valore letto dall'analogRead.
Quando scrivi,per avere un aiuto,cerca per quanto ti è possibile a dare più info altrimenti è difficile indovinare come ho fatto io.

toti94


Iz2rpn

Mh ti consiglio un Buzzer piezoelettrico avendo un valore resistivo basso non dovrai mettere nessuna resistenza per diminuire l'assorbimento ad Arduino, ricordati che Arduino se ha un assorbimento superiore a 40mA danneggi le porte e dovrai cambiare la il micro. Cmq quando si hanno tante resistenze ma non quella giusta puoi giocare in questo modo, se ti serve un valore di 180k ma ne hai 2 da 100 basta metterle in serie, perchè si sommano, se invece le metti in parallelo il valore resistivo diminuisce. Studiati la legge di ohm è fondamentale.

uwefed

metti 3 resistenze da 330k in paralello e ottieni 110k Ohm. Metti 2 180k in paralello ottieni 90kOhm.

Concordo con tonid della necessitá di aquisto di una sfera di cristallo. Facciamo una cordata per comprarne 20 al colpo per chiedere un buon sconto???  ;) ;) ;)

Ciao Uwe

toti94

Raga ho riscontrato un problema :\, quando avvio il programma su arduino il buzzer suona ma non cambia nulla se avvicino o allontano il dito alla fotoresistenza, quindi ho messo il valore della fotores sul serial monitor e infatti vedo che il valore della fotores rimane a 0.
Quindi direi che è un problema hardware giusto?
cmq il codice è questo
Code: [Select]

int buzzer= 9;
int fotores;
int nota;
void setup ()
{
  pinMode (buzzer, OUTPUT);
  Serial.begin (9600);
}
void loop ()
{
  nota= 3*(analogRead (fotores))+500;
  tone (buzzer, nota);
  delay (10);
  Serial.print (fotores);
}

mentre l'hardware è questo:

Iz2rpn

io adotterei la filosofia tinkering commenta sempre ogni riga di comando, se nn la commenti non capirai mai cosa fà?  sii pi chiaro anche banale ma spiga cosa stai facendo se no non possiamo aiutarti, non hai dichiarato il pin di lettura analogica hai solo dato una variabile a anlogRead(0) non quello che hai scritto tu, perchè hai messo serial.begin? ma sai cosa fà? il problema e software, comincia ad accendere un led, perchè usare un entrata analogica nn è cosi banale come sembra.

toti94

#7
Jun 27, 2012, 11:01 pm Last Edit: Jun 27, 2012, 11:23 pm by toti94 Reason: 1
si sul fatto del pin di fotores hai ragione ma ho messo il codice sbagliato, per quanto riguarda Serial.begin, l'ho messo per poi stamparmi sul serial monito il valore che assume la variabile fotores
Ecco il codice ultimato dopo le varie prove, vedo che la fotoresistenza va da un minimo di 1019 ad un massimo di 1023 :\ c'è qualcosa di sbagliato nella formula che sinceramente non ho capito perchè il libro  mela propone così :\ ... cmq sto leggendo "Primi passi con Arduino"
Code: [Select]

int buzzer= 9; //variabile che contiene il pin del buzzer
int fotores=0; //variabile che contiene il pin della fotoresistenza
int nota;  //variabile della frequenza del buzzer
int valore; // variabile che contiene il valore della fotores
void setup ()
{
 pinMode (buzzer, OUTPUT);  //dichiaro la variabile del buzzer come output
 Serial.begin (9600);  // credo serva per inizializzare il serial monitor
}
void loop ()
{
 valore= analogRead (fotores);
 nota= 3*(analogRead (fotores))+500;  //calcolo il valore della frequenza leggendo la fotoresistenza
 tone (buzzer, nota); //faccio suonare il buzzer
 delay (10);  //pausa di 10 millisecondi
 Serial.print (valore);  //scrivo sul serial monitor il valore della fotores
 Serial.print ("\n");  // vado a capo dopo ogni valore
}



*** MODIFICA***
Raga funziona XD non ho tenuto conto della luce della stanza quindi ho provato cun una lampada e funziona tutto :) Grazie mille

Iz2rpn

valore= analogRead (0); elimina sta riga non serve tanto la lettura del sensore la fai la volo a non ti serve che risieda in memoria, ottimizza al meglio il codice non hai tanto spazio su arduino, ho anche quel libro e molto spesso ho dovuto correggerli, sto consigliando a molti "Arduino la guida ufficiale di Massimo Banzi" che è l'autore di arduino, majocchi inizia a non piacermi molto. ricontrolla i collegamenti su arduino.

toti94

per quanto rigurarda la variabile hai ragione anche se essendo un programma molto piccolo non ho pensato alla grandezza del file.
Comunque il libro di Banzi (uno dei miei miti) non è uguale a quello che sto leggendo? cioè gli argomenti trattati non sono gli stessi?
Perchè dovrei rivedere i collegamenti? a me sembra che funzioni tutto  :~

Iz2rpn

http://www.youtube.com/embed/qfqhIXJ6XKQ scusa la qualità scadente,  questo è il mio esperimento, ma non ho usato lo stesso tuo codice, ti ho detto di controllare i collegamenti solo per sicurezza :)

toti94

si il risultato è lo stesso solo che il rumore è diverso XD forse sarà dovuto dal buzzer diverso oppure dalla formula per ricavare la frequenza, tu che formula hai usato?
Sinceramente in quella del libro non ho capito perchè lo moltiplica *3 e poi aggiunge 500
formula : nota= 3* (analogRead (fotores)) + 500

Iz2rpn

nn sono a casa ma appena torno ti prometto di postare il mio codice... cmq ti invito a fare qualche test nota= 3*(analogRead (fotores))+1000;

cmq inizia da ora a ottimizzare il codice perchè cosi che non dovrai fare grossi sforzi in futuro.

Notte ;)

toti94


tonid

#14
Jun 28, 2012, 06:17 am Last Edit: Jun 28, 2012, 06:59 am by tonid Reason: 1
Per poter leggere qualcosa da un ingresso analogico significa che devi avere un livello di tensione che può variare 0 a 5v.
Tu hai creato un partitore resistivo composto da una resistenza fissa ed una variabile in funzione della luce (fotoresistenza), questo partitore deve essere polarizzato tra 0 e 5v,tu lo hai collegato ,sia da un capo che dall'altro a 0v (gnd) di conseguenza non avrai nessuna lettura.
Sposta il collegamento della resistenza fissa da gnd a +5v e vedrai che funziona. Questi sono errori banali,forse per la fretta,bisogna fare attenzione e controllare bene prima di dare tensione al circuito altrimenti potresti giocarti la scheda,non è questo il caso ma tieni presente comunque ciò che ti dico.
Non è un rimprovero ,è un consiglio :) :)

Quote
*** MODIFICA***
Raga funziona  non ho tenuto conto della luce della stanza quindi ho provato cun una lampada e funziona tutto  Grazie mille


Hai poi risolto ,quindi i collegamenti erano giusti ?
Hai sbagliato solo sullo schema postato?
Ciao.

Go Up