Arduino luft trummor (6 / 7 steg)
Steg 6: kod
Nu är det dags att ladda upp koden till din Arduino. Här är det:snara
CONST int NumSnareReadings = 7.
int SnareReadings [NumSnareReadings];
int SnareIndex = 0;
int SnareTotal = 0;
int SnareAverage = 0;
int SnareMax = 700;
int SnarePin = A2;
Hej hat
CONST int NumHatReadings = 7.
int HatReadings [NumHatReadings];
int HatIndex = 0;
int HatTotal = 0;
int HatAverage = 0;
int HatMax = 700;
int HatPin = A0;
Bass pedal
CONST int NumBassReadings = 7.
int BassReadings [NumBassReadings];
int BassIndex = 0;
int BassTotal = 0;
int BassAverage = 0;
int BassMax = 700;
int BassPin = A4;
krasch (Hej hat pedal upp)
int PedalPin = A3;
int ljus = analogRead(A3);
CONST int NumCrashReadings = 7.
int CrashReadings [NumCrashReadings];
int CrashIndex = 0;
int CrashTotal = 0;
int CrashAverage = 0;
int CrashMax = 700;
int CrashPin = A5;
int tröskel = 125;
Millis funktion att ge en fördröjning mellan MIDI-noter
lång PreviousMillis1 = 0;
lång PreviousMillis2 = 0;
lång PreviousMillis3 = 0;
lång PreviousMillis4 = 0;
lång Interval1 = 100;
lång Interval2 = 100;
lång Interval3 = 100;
lång Interval4 = 100;
void setup() {
Serial.BEGIN(31250);
pinMode (SnarePin, indata);
pinMode (HatPin, indata);
pinMode (BassPin, indata);
pinMode (PedalPin, indata);
analogReference(EXTERNAL);
för (int ThisSnareReading = 0; ThisSnareReading < NumSnareReadings; ThisSnareReading++)
SnareReadings [ThisSnareReading] = 0;
för (int ThisHatReading = 0; ThisHatReading < NumHatReadings; ThisHatReading++)
HatReadings [ThisHatReading] = 0;
för (int ThisBassReading = 0; ThisBassReading < NumBassReadings; ThisBassReading++)
BassReadings [ThisBassReading] = 0;
}
Ogiltig loop)
{
osignerade långa CurrentMillis = millis();
snara
SnareTotal = SnareTotal - SnareReadings [SnareIndex];
SnareReadings[SnareIndex]=analogRead(SnarePin);
SnareTotal = SnareTotal + SnareReadings [SnareIndex];
SnareIndex = SnareIndex + 1.
om (SnareIndex > = NumSnareReadings)
SnareIndex = 0;
SnareAverage = SnareTotal / NumSnareReadings;
om (SnareAverage > SnareMax & & (CurrentMillis-PreviousMillis1) > Interval1)
{
PreviousMillis1 = CurrentMillis;
playMidiNote (1, 38, 127);
}
Hej hat
HatTotal = HatTotal - HatReadings [HatIndex];
HatReadings[HatIndex]=analogRead(HatPin);
HatTotal = HatTotal + HatReadings [HatIndex];
HatIndex = HatIndex + 1.
om (HatIndex > = NumHatReadings)
{HatIndex = 0;
HatAverage = HatTotal / NumHatReadings;
om (HatAverage > HatMax & & (CurrentMillis-PreviousMillis2) > Interval2 & & analogRead(A3) < tröskel)
{playMidiNote (1, 42, 127);}
}
krasch
CrashTotal = CrashTotal - CrashReadings [CrashIndex];
CrashReadings[CrashIndex]=analogRead(CrashPin);
CrashTotal = CrashTotal + CrashReadings [CrashIndex];
CrashIndex = CrashIndex + 1.
om (CrashIndex > = NumCrashReadings)
{CrashIndex = 0;
CrashAverage = CrashTotal / NumCrashReadings;
om (CrashAverage > CrashMax & & (CurrentMillis-PreviousMillis4) > Interval4 & & analogRead(A3) > = tröskel)
{playMidiNote (1, 46, 127);}
}
Bass pedal
BassTotal = BassTotal - BassReadings [BassIndex];
BassReadings[BassIndex]=analogRead(BassPin);
BassTotal = BassTotal + BassReadings [BassIndex];
BassIndex = BassIndex + 1.
om (BassIndex > = NumBassReadings)
BassIndex = 0;
BassAverage = BassTotal / NumBassReadings;
om (BassAverage > BassMax & & (CurrentMillis-PreviousMillis3 > Interval3))
{
PreviousMillis3 = CurrentMillis;
playMidiNote(1,36, 127);
}
}
void playMidiNote (byte kanal, byte note, byte velocity)
{
byte midiMessage = 0x90 + (kanal - 1);
Serial.write(midiMessage);
Serial.write(Note);
Serial.write(Velocity);
}