Fotocell Piano (3 / 4 steg)
Steg 3: Koden
Del tre
Koden
Obs: Denna kod består av 6 "om else-satser" att berätta varje enskild ton till ljud när dess motsvarande fotomotstånd når ett värde som är lägre än det fastställda tröskelvärdet. Koden tar en läsning av det omgivande ljuset i fem sekunder när den vänds först, som i sin tur sätter sin egen tröskel. PIN-kod D3 (första not) kommer att låta när instrumentet är redo att spelas.
KOPIERA KODEN OCH BELASTA UPP TILL ARDUINO:
/*
*/
installationsprogrammet för analoga stift (Foto motstånd)
CONST int photofor1 = A0;
CONST int photofor2 = A1;
CONST int photofor3 = A2;
CONST int photofor4 = A3;
CONST int photofor5 = A4;
CONST int photofor6 = A5;
inställningar för digital stift (får ljudet från 555 chip)
int sound1 = 3;
int sound2 = 5;
int sound3 = 6;
int sound4 = 9.
int sound5 = 10;
int sound6 = 11;
ställa in en for-loop att automatiskt ställa in sensorn värden
int sensorPin [6] = {A0, A1, A2, A3, A4, A5}; PIN-kod som sensorerna är kopplade till
int sensorValue = 0;
int sensorMin [] = {1023,1023,1023,1023,1023,1023}.
int sensorMax [] = {0,0,0,0,0,0}.
void setup() {
pinMode (sound1, produktionen);
pinMode (sound2, produktionen);
pinMode (sound3, produktionen);
pinMode (sound4, produktionen);
pinMode (sound5, produktionen);
pinMode (sound6, produktionen);
digitalWrite(sound1,LOW);
digitalWrite(sound2,LOW);
digitalWrite(sound3,LOW);
digitalWrite(sound4,LOW);
digitalWrite(sound5,LOW);
digitalWrite(sound6,LOW);
Serial.BEGIN(9600);
Kalibrera under de första fem sekunderna
samtidigt (millis() < 5000) {
för (int jag = 0; jag < = 5; i ++)
{
sensorValue = analogRead(sensorPin[i]);
spela in maximal sensor värdet (för alla)
om (sensorValue > sensorMax[i]) {
sensorMax [i] = sensorValue;
}
spela in det minsta sensor värdet (för alla)
om (sensorValue < sensorMin[i]) {
sensorMin [i] = sensorValue;
}
}
}
skriver ut alla nummer för varje foto resistor (hög och låg)
Serial.Print("\n\n");
för (int jag = 0; jag < = 5; i ++)
{
Serial.Print(sensorMin[i]);
Serial.Print('\t');
}
Serial.Print('\n');
för (int jag = 0; jag < = 5; i ++)
{
Serial.Print(sensorMax[i]);
Serial.Print('\t');
}
Serial.Print("\n\n");
Gjort med automatisk kalibrering
visar ett meddelande om när den är klar att spelas
digitalWrite (sound1, hög);
Delay(500);
}
void loop() {
int analogValue1 = analogRead(photofor1);
Delay(1);
int analogValue2 = analogRead(photofor2);
Delay(1);
int analogValue3 = analogRead(photofor3);
Delay(1);
int analogValue4 = analogRead(photofor4);
Delay(1);
int analogValue5 = analogRead(photofor5);
Delay(1);
int analogValue6 = analogRead(photofor6);
Delay(1);
not 1
om (analogValue1 < (sensorMin [0] - 50)) {
digitalWrite (sound1, hög);
}
annat {
digitalWrite(sound1,LOW);
}
Not 2
om (analogValue2 < (sensorMin [1] - 50)) {
Serial.println ("not 2");
digitalWrite (sound2, hög);
}
annat {
digitalWrite(sound2,LOW);
}
not 3
om (analogValue3 < (sensorMin [2] - 50)) {
digitalWrite (sound3, hög);
}
annat {
digitalWrite(sound3,LOW);
}
Not 4
om (analogValue4 < (sensorMin [3] - 50)) {
digitalWrite (sound4, hög);
}
annat {
digitalWrite(sound4,LOW);
}
not 5
om (analogValue5 < (sensorMin [4] - 50)) {
digitalWrite (sound5, hög);
}
annat {
digitalWrite(sound5,LOW);
}
Not 6
om (analogValue6 < (sensorMin [5] - 50)) {
digitalWrite (sound6, hög);
}
annat {
digitalWrite(sound6,LOW);
}
}