Stap 3: De Code
Deel drie
De Code
Opmerking: Deze code bestaat uit 6 "als anders verklaringen" zegt dat elke afzonderlijke noot te klinken als de overeenkomstige fotoweerstand een waarde die lager dan de ingestelde drempelwaarde is bereikt. De code neemt een lezing van het omgevingslicht gedurende vijf seconden wanneer het eerst omgezet wordt, die op zijn beurt, haar eigen drempel stelt. PIN D3 (eerste noot) zal klinken als het instrument is klaar om te worden afgespeeld.
CODE KOPIËREN EN UPLOADEN NAAR ARDUINO:
/*
*/
Setup voor analoge pinnen (foto resistor)
Const int photofor1 = A0;
Const int photofor2 = a1 worden verkregen;
Const int photofor3 = A2;
Const int photofor4 = A3;
Const int photofor5 = A4;
Const int photofor6 = A5;
Setup voor digitale pinnen (krijgt het geluid van de 555 chip)
int sound1 = 3;
int sound2 = 5;
int sound3 = 6;
int sound4 = 9;
int sound5 = 10;
int sound6 = 11;
opzetten van een for-lus auto set sensor-waardes
int sensorPin [6] = {A0, A1, A2, A3, A4, A5}; PIN die de sensoren zijn aangesloten op
int sensorValue = 0;
int sensorMin [] = {1023,1023,1023,1023,1023,1023};
int sensorMax [] = {0,0,0,0,0,0};
VOID Setup {}
pinMode (sound1, OUTPUT);
pinMode (sound2, OUTPUT);
pinMode (sound3, OUTPUT);
pinMode (sound4, OUTPUT);
pinMode (sound5, OUTPUT);
pinMode (sound6, OUTPUT);
digitalWrite(sound1,LOW);
digitalWrite(sound2,LOW);
digitalWrite(sound3,LOW);
digitalWrite(sound4,LOW);
digitalWrite(sound5,LOW);
digitalWrite(sound6,LOW);
Serial.begin(9600);
Kalibreren tijdens de eerste vijf seconden
terwijl (millis() < 5000) {}
for (int i = 0; ik < = 5; i ++)
{
sensorValue = analogRead(sensorPin[i]);
record de waarde van de maximale sensor (voor iedereen)
Als (sensorValue > sensorMax[i]) {}
sensorMax [i] = sensorValue;
}
record de waarde van de minimale sensor (voor iedereen)
Als (sensorValue < sensorMin[i]) {}
sensorMin [i] = sensorValue;
}
}
}
print alle getallen voor elke foto weerstand (hoog en laag)
Serial.Print("\n\n");
for (int i = 0; ik < = 5; i ++)
{
Serial.Print(sensorMin[i]);
Serial.Print('\t');
}
Serial.Print('\n');
for (int i = 0; ik < = 5; i ++)
{
Serial.Print(sensorMax[i]);
Serial.Print('\t');
}
Serial.Print("\n\n");
Gedaan met automatische kalibratie
maakt een opmerking over wanneer het is klaar om te worden afgespeeld
digitalWrite (sound1, hoge);
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);
Opmerking 1
Als (analogValue1 < (sensorMin [0] - 50)) {}
digitalWrite (sound1, hoge);
}
else {}
digitalWrite(sound1,LOW);
}
Opmerking 2
Als (analogValue2 < (sensorMin [1] - 50)) {}
Serial.println ("note 2");
digitalWrite (sound2, hoge);
}
else {}
digitalWrite(sound2,LOW);
}
Noot 3
Als (analogValue3 < (sensorMin [2] - 50)) {}
digitalWrite (sound3, hoge);
}
else {}
digitalWrite(sound3,LOW);
}
toelichting 4
Als (analogValue4 < (sensorMin [3] - 50)) {}
digitalWrite (sound4, hoge);
}
else {}
digitalWrite(sound4,LOW);
}
Toelichting 5
Als (analogValue5 < (sensorMin [4] - 50)) {}
digitalWrite (sound5, hoge);
}
else {}
digitalWrite(sound5,LOW);
}
toelichting 6
Als (analogValue6 < (sensorMin [5] - 50)) {}
digitalWrite (sound6, hoge);
}
else {}
digitalWrite(sound6,LOW);
}
}