Stap 8: De Code
#include < Tone.h >
#define ERROR_WINDOW 50
#define INTERVAL 100
#define DEBUG_ON
int micVal = 0;
int micPin = 1;
Toon spreker;
int whichButton;
variabele te beperken de knop krijgen gecontroleerd elke cyclus
lange lastChecked = 0;
VOID Setup {}
Serial.begin(9600);
Speaker.begin(8);
}
void loop {}
micVal = analogRead(micPin);
micVal = beperken (abs(micVal-512)-25,0,512);
Serial.println (micVal, DEC);
Als (micVal > = 50) {}
Als (millis() - lastChecked > INTERVAL) {}
Als (int buttNum = buttonPushed(0)) {}
if(whichButton!=buttNum) {}
schakelaar (buttNum) {}
Case 1:
Speaker.Play(micVal/2);
breken;
Case 2:
Speaker.Play(micVal);
breken;
Case 3:
Speaker.Play(micVal+micVal/4);
breken;
Case 4:
Speaker.Play(micVal+micVal/2);
breken;
Case 5:
Speaker.stop();
breken;
}
whichButton = buttNum;
}
}
lastChecked = millis(); opnieuw instellen van de waarde van de lastChecked
}
}
}
int buttonPushed (int pinNum) {}
variabele de lees waarde op te slaan
int val = 0;
de 20 k interne pullup inschakelen
digitalWrite((14+pinNum), hoge);
Lees de invoer pin
Val = analogRead(pinNum);
#ifdef DEBUG_ON
Serial.println(val);
#endif
/ * de bovenste positie niet gebruiken, want dat is hetzelfde als de all-open schakelaar waarde wanneer de interne 20K ohm pullup is ingeschakeld.
Als (val > = 923 en val < = 1023)
Serial.println ("Dit is de bovengrens");
Als (val > = (825-ERROR_WINDOW) en val < = (825 + ERROR_WINDOW)) {/ / 825
return 1;
} else if (val > = (630-ERROR_WINDOW) en val < = (630 + ERROR_WINDOW)) {/ / 630
terug 2;
} else if (val > = (435-ERROR_WINDOW) en val < = (435 + ERROR_WINDOW)) {/ / 435
terug 3;
} else if (val > = (230-ERROR_WINDOW) en val < = (230 + ERROR_WINDOW)) {/ / 230
terug 4;
} else if (val > = 0 en val < = (14 + ERROR_WINDOW)) {}
terug 5;
} else
keren 0;
}