Beverly-kross: lite krossning. 1 bit Arduino musik. (2 / 5 steg)
Steg 2: Kopiera åtta av våra 1 bit prover till en byte minne.
Bitshifting att fylla våra 8 bit lagringsutrymme.
När proverna har konverterats till en 1-bitars upplösning är det nu bara en fråga om att gå igenom de konverterade proverna och ansluter sig till dem tillsammans för att göra en sträng av 8 bitar; aka 1 byte i minnet.
Detta kräver viss kunskap om bitshifting, tack och lov finns det många resurser som lära detta enkelt, en av de som på arduino webbplats. http://Arduino.cc/en/reference/Bitshift
Den grundläggande idén är att vi måste spara utrymme i våra microcontroller, eftersom varje ljud prov uppenbarligen tar upp utrymme...
Vi kunde ha en matris av heltal att lagra våra prover i men att det vore ett grovt missbruk av lagring som vi behöver bara en bråkdel av det utrymmet för att lagra våra ljudåtergivning.
För ytterligare information om lagringsutrymme som krävs för en int se arduino hemsida. http://Arduino.cc/en/reference/int
Jag valde att ange en unsigned char som är en 8 bitars värde eller 1 byte av rymden, men igen det är 8 gånger större än vad vi behöver!
Lösningen
Få lite utrymme allokeras minne, låt oss för den här läraren vi begärde säga 1 byte lagringsutrymme från minnet, vi gör så här.
- Vi får vår första 1 bit ljud prov
- Fyll den minst signifikanta biten av vår 1 byte lagringsutrymme med värdet av vår 1 bit ljud prov
- flytta alla bitar i vår 1 byte lagringsutrymme över till vänster genom 1 bit
Det algoritmen upprepas tills vi har fyllt upp en byte i minnet.
Detta är användbart eftersom beroende på din microcontroller en Int kan ha allt från säger 16 bitar minne ens så mycket som 32 bitar. Så det skulle vara 32 gånger mer lagringsutrymme som används än vi skulle ha krävt. Skönt spara just där!