Jednoduchý zvuk

Odpovědět
agentkocicka
Příspěvky: 3
Registrován: 02 led 2018, 07:47
Reputation: 0

Jednoduchý zvuk

Příspěvek od agentkocicka » 02 led 2018, 07:49

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.

Axamith
Příspěvky: 327
Registrován: 09 srp 2017, 08:17
Reputation: 0

Re: Jednoduchý zvuk

Příspěvek od Axamith » 02 led 2018, 09:14

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.

Wojta
Příspěvky: 178
Registrován: 22 črc 2017, 16:39
Reputation: 1

Re: Jednoduchý zvuk

Příspěvek od Wojta » 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ří!

martinius96
Příspěvky: 417
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Jednoduchý zvuk

Příspěvek od martinius96 » 02 led 2018, 17:22

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

Wojta
Příspěvky: 178
Registrován: 22 črc 2017, 16:39
Reputation: 1

Re: Jednoduchý zvuk

Příspěvek od Wojta » 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

agentkocicka
Příspěvky: 3
Registrován: 02 led 2018, 07:47
Reputation: 0

Re: Jednoduchý zvuk

Příspěvek od agentkocicka » 03 led 2018, 09:02

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.

agentkocicka
Příspěvky: 3
Registrován: 02 led 2018, 07:47
Reputation: 0

Re: Jednoduchý zvuk

Příspěvek od agentkocicka » 03 led 2018, 09:03

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

Wojta
Příspěvky: 178
Registrován: 22 črc 2017, 16:39
Reputation: 1

Re: Jednoduchý zvuk

Příspěvek od Wojta » 03 led 2018, 14:04

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...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů