Stránka 1 z 1

Jednoduchý zvuk

Napsal: 02 led 2018, 07:49
od agentkocicka
Zdravím lidičky a rovnou se na vás obracím s prosbou.

Dělám na jednom projektu, jedná se o takovou hračku, která by se v budoucnu měla objevit na pultech různých krámů, ale mám celkem problém.
Tato věc by měla v určitý moment vydat jednoduchý zvuk, například jen jako když bouchnete láhev šampaňského.
Je nějaká možnost, jak toto udělat? Nechci v tomto případě používat nějaké moduly a už vůbec ne slot na sd kartu či microsd...zkrátka mini repráček připojit přímo na arduino. Je nějaká taková možnost? Celková délka zvuku by byla cca 1,5 vteřiny.

Re: Jednoduchý zvuk

Napsal: 02 led 2018, 09:14
od Axamith
Se zvukem nemám žádné zkušenosti, jen jsem hledal nějaké info.

1) použít zvukový modul, který nese zvukovou nahrávku a umí ji přehrát. Nabídka bude asi široká, jen namátkově jsem našel https://arduino-shop.cz/arduino/1700-mo ... 97691.html
Určitě budou i jednodušší a levnější.

2) použít nejjednodušší arduino a nějaký piezoelement (či repro) a využít fci

Kód: Vybrat vše

tone()
.
Cituji z e-booku Průvodce světem Arduina
... U Arduina je mozne generovat zvuk pouze v nejjednoduss podobe. Neumoznuje totiz generovat analogove
hodnoty. Rozlisuje tedy pouze 0V a 5V. ...
Osobně bych raději volil zvukový modul, vyjde to zřejmě levněji a hlavně, nebude omezení v možnostech tónu/zvuku.

Re: Jednoduchý zvuk

Napsal: 02 led 2018, 13:49
od Wojta
Pokud to potebuješ bez modulu a má to být spíš jednoúčelové tak bude asi neslepší si napsat nějaký vlastní program, ani by to nebylo zas tak složité. Nejdřív si vem ten zvuk který budeš hrát a převzorkuj si ho. To co chceš na konci je *.wav soubor v PCM, mono, 8bitový (ticho bude 0x80 vzhledem k tomu že to bude unsigned) a sample rate stejný jako frekvence tvého PWM (třeba 8kHz). Poté by si musel odstranit hlavičku *.wav souboru (prvních 44bytů nebo 46) a nahrát si samotné byty té hudby přímo do paměti procesoru. Kdyby se tam nevešli tak někam externě do jiné paměti. Pak už je to na softwaru. Musel bys napsat něco co by ti zařídilo samotné přehrávání. Tady by ti určitě hodně pomohlo cčko, bude to přes to mnohem rychlejší než Wiring.
Například zde je podobný případ řešený pomocí C: http://avrpcm.blogspot.cz/2010/11/playi ... y-avr.html
Není to vůbec složité, pokud se ale v C nevyznáš tak to můžeme zkusit i ve Wiringu...
Prakticky jde jen o to umísťovat byty do správného registru při každém clocku PWM.

Ať se daří!

Re: Jednoduchý zvuk

Napsal: 02 led 2018, 17:22
od martinius96
Skus:

Kód: Vybrat vše


void noise()  {
unsigned long time = millis();
while(millis() - time <= 500)  {  // change "500" for different durations in ms.
tone(cislopinu, random(100, 2000);   // change the parameters of random() for different sound
}
Trošku sa s tým pohraj :-) Najdeš ten správny

Re: Jednoduchý zvuk

Napsal: 02 led 2018, 19:06
od Wojta
Jen mimo téma, můžu se zeptat proč v nějakém produktu který půjde do oběhu používáš zrovna Arduino? Máš ho použité jako modul nebo integrované na DPS, pokud nějaké je? Přijde mi to cenově nevýhodné pokud používáš certifikované italské, což by asi v tomhle případě chtělo. Jen mě to zajímá :D

Re: Jednoduchý zvuk

Napsal: 03 led 2018, 09:02
od agentkocicka
Wojta píše:
02 led 2018, 13:49
Pokud to potebuješ bez modulu a má to být spíš jednoúčelové tak bude asi neslepší si napsat nějaký vlastní program, ani by to nebylo zas tak složité. Nejdřív si vem ten zvuk který budeš hrát a převzorkuj si ho. To co chceš na konci je *.wav soubor v PCM, mono, 8bitový (ticho bude 0x80 vzhledem k tomu že to bude unsigned) a sample rate stejný jako frekvence tvého PWM (třeba 8kHz). Poté by si musel odstranit hlavičku *.wav souboru (prvních 44bytů nebo 46) a nahrát si samotné byty té hudby přímo do paměti procesoru. Kdyby se tam nevešli tak někam externě do jiné paměti. Pak už je to na softwaru. Musel bys napsat něco co by ti zařídilo samotné přehrávání. Tady by ti určitě hodně pomohlo cčko, bude to přes to mnohem rychlejší než Wiring.
Například zde je podobný případ řešený pomocí C: http://avrpcm.blogspot.cz/2010/11/playi ... y-avr.html
Není to vůbec složité, pokud se ale v C nevyznáš tak to můžeme zkusit i ve Wiringu...
Prakticky jde jen o to umísťovat byty do správného registru při každém clocku PWM.

Ať se daří!
Děkuji za odpověď, projdu si tuto radu pořádně a pak sem napíši, jak to šlo.

Re: Jednoduchý zvuk

Napsal: 03 led 2018, 09:03
od agentkocicka
Wojta píše:
02 led 2018, 19:06
Jen mimo téma, můžu se zeptat proč v nějakém produktu který půjde do oběhu používáš zrovna Arduino? Máš ho použité jako modul nebo integrované na DPS, pokud nějaké je? Přijde mi to cenově nevýhodné pokud používáš certifikované italské, což by asi v tomhle případě chtělo. Jen mě to zajímá :D
Zatím jsem ve fázi čistého experimentu, minimalizování a cenové přizpůsobování bude teprve v dalším kroce :D ale upřímně jsem zatím nekoukal po jiných možnostech, tak se tě tedy rovnou zeptám, jestli nemáš nějaké zkušenosti? :D

Re: Jednoduchý zvuk

Napsal: 03 led 2018, 14:04
od Wojta
To od martiniuse taky není špatný, kdyby si našel něco co vyhovuje.
Zatím jsem ve fázi čistého experimentu, minimalizování a cenové přizpůsobování bude teprve v dalším kroce :D ale upřímně jsem zatím nekoukal po jiných možnostech, tak se tě tedy rovnou zeptám, jestli nemáš nějaké zkušenosti? :D
Zkušenosti nemám :D nic co by šlo do oběhu jsem nikdy nedělal. Kdyby si chtěl dostat cenu opravdu dolů tak jsou na tom myslím dobře čipy od ST. Já bych to ale klidně postavil na nějakém AVR. Můžeš vzít třeba něco jednoduššího jako ATmega8 nebo i nějaké Tiny pokud by ses tam vešel. Ale asi by si musel dát vědět o co přesně jde aby jsem mohl říct víc...