Ljus orgel försök (3 / 3 steg)
Steg 3: kod
int analogPin = 0; ansluter till produktionen av MSGEQ7, mäter spänning värdet för varje frekvensband (0V-5V)
int strobePin = 2; ansluter till Strobe stift MSGEQ7, styr Multiplexer och således växlar mellan frekvensbanden
int resetPin = 3; ansluter till återställa PIN-koden för MSGEQ7, styr Multiplexer och låter den vila med det lägsta frekvensbandet
int ledred = 9; ansluter till utfärda utegångsförbud för av BUZ11 MOSFET röd LED (bas) och skapar en PWM-signal med variabel arbetscykel som beror av toppvärdet av de låga frekvenserna att styra ljusstyrkan på den röda lysdioden
int ledgreen = 10; ansluter till utfärda utegångsförbud för av BUZ11 MOSFET grön LED (mitten) och skapar en PWM-signal med variabel arbetscykel som beror av toppvärdet av de mellersta frekvenserna att styra ljusstyrkan i grön LED
int ledblue = 11; ansluter till utfärda utegångsförbud för av BUZ11 MOSFET blå LED (hög) och skapar en PWM-signal med variabel arbetscykel som beror av det högsta värdet av de höga frekvenserna till styra ljusstyrkan på den blå LED-int spectrumValue [7]. Heltalsvariabel att lagra 10 bitars värdena för frekvensbanden
int filter = 80. Det blir alltid några ljud som analogpin kommer att få. Med detta filtervärde kan vi ignorera de mycket låga topparna i produktionen av MSGEQ7. Föll fritt att justera det här värdet till din smak
void setup() {
Serial.BEGIN(9600); behövs för att mata värdena de frekvenser band på seriell övervaka pinMode (analogPin, ingång); definierar analoga pin A0 som indata
pinMode (strobePin, produktionen); definierar strobe stift 2 som utdata
pinMode (resetPin, produktionen); definierar Återställ pin 3 som utdata
pinMode (ledred, produktionen); definierar ledred stift 9 som utdata
pinMode (ledblue, produktionen); definierar ledblue stift 10 som utdata
pinMode (ledgreen, produktionen); definierar ledgreen stift 11 som utdata
digitalWrite (resetPin, låg);
digitalWrite (strobePin, hög); }
void loop() {
digitalWrite (resetPin, hög);
digitalWrite (resetPin, låg); ändra från hög till låg startar produktionen av mutliplexer från början för (int jag = 0; jag < 7; i ++) {//for slinga går igenom denna cykel 7 gånger att få värdena för varje frekvens bandet digitalWrite (strobePin, låg); //puts strobe pin låg att mata frekvensbandet
delayMicroseconds(30); vänta tills produktion värdet av MSGEQ7 kan mätas (se timing diagram i databladet) spectrumValue[i]=analogRead(analogPin); lägger analoga DC värdet i den spectrumValue variabla om (spectrumValue [i]