SoundWave skrivare (3 / 5 steg)
Steg 3: Skriva ut ljudvåg
Jag kommer att flytta en Neopixel ledde pinne 16 lysdioder över ett avstånd på en meter och mappa min inspelade SoundWave 16 lysdioder. Jag valde att göra en liten vagn med en kodare hjul som returnerar positionen av vagnen.
Kodaren och hjulet gav mig 340 steg för en meter. (Jag mätte detta med en annan skiss).
När jag rol vagnen jag ska få en position från rotary encoder. Sedan skulle jag karta denna ståndpunkt att ett prov i min soundSampleArray. Då jag skulle karta datan av det ljudexempel till en av 16 led's.
myEnc.write(0); Ange encoderPosition till 0
oldPosition = 0; oldPosition till 0
stepsPerMeter = 340; mängden steg för att täcka en meter
While(oldPosition < stepsPerMeter) {
lång newPosition = myEnc.read(); Läs nya kodare position
om (newPosition! = oldPosition) {
oldPosition = newPosition;
int myArrayPos = karta (newPosition, 0, stepsPerMeter, 0, soundSampleSize);
outputValue = karta (soundSampleArray [myArrayPos], calMid-calDif, calMid + calDif, 0, 16);
skriva ut till ledde stick
för (uint16_t jag = 0; jag < strip.numPixels(); i ++) {
om (jag == outputValue) {
strip.setPixelColor(i,255,0,0);
} annat {
strip.setPixelColor(i,0,0,0);
}
}
Strip.show();
}
}