ieri ho finalmente azionato un buzzer, tutto ok con lo sketch di esempio che riproduce una piccola melodia.
Mi chiedevo: è possibile generare un "rumore", simile a quel rumore acustico "di una volta", dovuto alla scarsa sintonizzazione (vi ricordate quando si sintonizzavano i TV con la scansione dei canali "fine"... ah sembra un secolo!! :)) ?
Il mio componente credo sia il tipico buzzer (cilindro nero di circa 1cm di diam., con 2 pin), e non so se con il tone si possa generare dell'altro.
Pensavo di creare una sequenza veloce di note (frequenze), meglio se random entro un range, per ingannare l'udito, ma se non sbaglio il rumore è uno spettro e dovrei generare simultaneamente più frequenze.
L'intento sperimentale era quello di generare un rumore, appunto, meglio se sempre diverso (e qui sarebbe da definire meglio il "diverso"), in risposta ad un evento (i bimbi che si avvicinano, toccano un pulsante, fanno ombra su un fotoresistore, ecc.)
Intendi tipo "statica" ? ... credo che il sistema migliore sia un generatore di rumore bianco ... con arduino non saprei se e' possibile, il rumore bianco e' un mix di tutte le possibili frequenze in ordine assolutamente casuale ...
Se non puoi usare un diodo per generarlo analogicamente, forse (ma se dico ca**ate gli esperti mi correggano XD), si possono usare un paio di routines per generare numeri casuali sempre variabili da assegnare alle frequenze di un paio dei pin PWM impostati con il duty-cycle al 5% o meno, per sommarli poi all'uscita (magari anche piu di due, se gli altri non sono usati) ... non sarebbe rumore "bianco", ma forse si riesce a simulare qualcosa di simile ...
Etemenanki:
Intendi tipo "statica" ? ... credo che il sistema migliore sia un generatore di rumore bianco ... con arduino non saprei se e' possibile, il rumore bianco e' un mix di tutte le possibili frequenze in ordine assolutamente casuale ...
Se non puoi usare un diodo per generarlo analogicamente, forse (ma se dico ca**ate gli esperti mi correggano XD), si possono usare un paio di routines per generare numeri casuali sempre variabili da assegnare alle frequenze di un paio dei pin PWM impostati con il duty-cycle al 5% o meno, per sommarli poi all'uscita (magari anche piu di due, se gli altri non sono usati) ... non sarebbe rumore "bianco", ma forse si riesce a simulare qualcosa di simile ...
grazie!
Non so se intendiamo lo stesso rumore, proprio per questo - non sapendolo definire - ho portato l'esempio del rumoraccio tipico delle sintonizzazioni.
Inoltre, non essendo pratico, ho postato in SW, volendo tentare la strada del codice, se possibil
Tempo fa avevo fatto una "finta esplosione" per un aggeggino che faceva anche il conto alla rovescia su un display, usando un generatore di rumore bianco basato su un algoritmo di Galois con LFSR (Linear Feedback Shift Register)
Il codice centrale è questo:
//prepare the timer to generate the nois
void startNoiseGeneration() {
cli();
TCCR1A = 0; //disconnect all the pins
TCCR1B = ((1<<WGM12) | (1<<CS10)); //CTC mode w/top set to OCR1A - prescaler set to /1
OCR1A = 16000; //800 -> F = 20 kHz (T=50 us) // 16000 -> F = 1 kHz
TIMSK1 = (1<<OCIE1A); //activate ISR on OCRA compare match
sei();
pinMode(9, OUTPUT);
}
//white noise generation using a Galois 32-bit LFSR algorithm (from en.wikipedia)
//this takes less flash than the previous
ISR(TIMER1_COMPA_vect) {
volatile static unsigned long lfsr = 1;
lfsr = (lfsr >> 1) ^ (-(lfsr & 1u) & 0xD0000001u);
digitalWrite (9, lfsr & 1);
}
Per attivare il generatore, basta chiamare la funzione startNoiseGeneration().
Una volta fatto questo, facendo
pinMode(9, OUTPUT);
fai uscire il suono sull'altoparlante.
Per fermarlo metti in input il pin:
PS: se "giochi" con il registro OCR1A del timer, puoi variare la frequenza prodotta.
Vedi infatti nei miei commenti come varia la frequenza in base al valore di OCR1A. Io avevo selezionato 1 kHz perché volevo un suono grave, ma mettendo qualcosa che genera una frequenza più alta dovresti riprodurre la statica che ti serve.
Se per "buzzer" intendi uno di quei cicalini dotati di oscillatore interno, ottieni un "troiaio"
Essi sono fatti per fare una tonalità ad una determinata frequenza fissa (per via dell'oscillatore). Se li piloti con un'altra frequenza, quella generata dall'Arduino si mescola con quella generata dal buzzer...
Procurati o un buzzer senza oscillatore oppure un altoparlantino da 8 ohm e 1/2 watt. Li piloti entrambi con con un transistor.
Metti tutto sul pin 9 (il mio sketch necessita di quel pin).
Probabilmente intende uno di quelli con la cialdina piezo, ma senza oscillatore interno ... altrimenti non so come avrebbe potuto riprodurre una melodia
Etemenanki:
Probabilmente intende uno di quelli con la cialdina piezo, ma senza oscillatore interno ... altrimenti non so come avrebbe potuto riprodurre una melodia
io credo intenda questo
che riproduce più o meno la melodia
Etemenanki:
Probabilmente intende uno di quelli con la cialdina piezo, ma senza oscillatore interno ... altrimenti non so come avrebbe potuto riprodurre una melodia
io credo intenda questo
che riproduce più o meno la melodia
Madwriter:
comunque ti consiglio di provare col buzzer giocandoci un pò qualcosa riesci a produrre
si, appena rientro in possesso dei pezzi, provo a inviare una "melodia" costituita da suoni casuali e brevissimi, questa è l'idea che mi sono fatto via software per provare
Usando un buzzer (cilindretto nero della foto sopra) ottengo con codice di @Leo una insieme di rumori che mi sembra
quello che voleva @andreino, il rumore di una vecchia tv su un canale analogico non sintonizzato.
Se cambi frequenza sembra un pò il rumore che facevano i vecchi modem di una volta.
Qui, seguendo consigli @leo, esempio di rumore bianco
@nid69:
sì, giocando con la frequenza ottieni un pò tutti gli effetti, io a basse frequenze ci ho simulato una esplosione.
@andreino:
quello della foto è sia con che senza oscillatore interno, dipende dal modello che hai comprato.
Se lo colleghi a +5V e GND, emette un suono di suo oppure resta muto? Se resta muto, puoi usarlo col codice che ti ho dato, se emette un suono allora inserendoci sull'alimentazione un'altra frequenza, questa si mischia a quella generata dal buzzer, e ti viene il... troiaio