Digital Electronics Lab 5

Below is my code:

int ledPinArray[4] = { 8, 9, 10, 11 };
int totalLeds = 4;
int potValArray[4] = { 0, 0, 0, 0 };
int potAnalogRead[4] = { A15, A16, A17, A18 };
int totalPotVals = 4;
int mappedPotValArray[4] = { 0, 0, 0, 0 };
int powerSwitch = 33;
int octaveSwitch = 32;
int speedPotVal = 0;
int mappedSpeedPotVal = 0;
int backwardsSwitch = 39;

void setup() {
  for (int i = 0; i < totalLeds; i++) {
    pinMode(ledPinArray[i], OUTPUT);
  }
  pinMode(powerSwitch, INPUT);
  pinMode(octaveSwitch, INPUT);
  pinMode(backwardsSwitch, INPUT);
  Serial.begin(9600);
}

void loop() {
  speedPotVal = analogRead(A19);
  Serial.println(speedPotVal);

  for (int i = 0; i < totalPotVals; i++) {
    potValArray[i] = analogRead(potAnalogRead[i]);
    mappedPotValArray[i] = map(potValArray[i], 0, 1023, 60, 72);
  }
  
  mappedSpeedPotVal = map(speedPotVal, 0, 1023, 100, 1000); //will print number from 100~1000 as you turn the pot

  if (digitalRead(powerSwitch) == HIGH) { //on and off switch
    if (digitalRead(backwardsSwitch) == LOW) {
      if (digitalRead(octaveSwitch) == HIGH) {
        octaveUpMode();
      }
      if (digitalRead(octaveSwitch) == LOW) {
        sequenceForward();
      }
    }
    if (digitalRead(backwardsSwitch) == HIGH) {
      if (digitalRead(octaveSwitch) == HIGH) {
        octaveUpBackwards();
      }
      if (digitalRead(octaveSwitch) == LOW) {
        sequenceBackwards();
      }
    }
  }
 
}

void sequenceForward() {
  for (int i = 0; i < totalPotVals; i++) {
    usbMIDI.sendNoteOn(mappedPotValArray[i], 127, 1);
    digitalWrite(ledPinArray[i], HIGH);
    delay(speedPotVal);
    digitalWrite(ledPinArray[i], LOW);
    usbMIDI.sendNoteOff(mappedPotValArray[i], 0, 1);
  }
}

void sequenceBackwards() {
  for (int i = 3; i >= 0; i--) {
    usbMIDI.sendNoteOn(mappedPotValArray[i], 127, 1);
    digitalWrite(ledPinArray[i], HIGH);
    delay(speedPotVal);
    digitalWrite(ledPinArray[i], LOW);
    usbMIDI.sendNoteOff(mappedPotValArray[i], 0, 1);
  }
}

void octaveUpBackwards() {
  for (int i = 3; i >= 0; i--) {
    usbMIDI.sendNoteOn(mappedPotValArray[i] + 12, 127, 1);
    digitalWrite(ledPinArray[i], HIGH);
    delay(speedPotVal);
    digitalWrite(ledPinArray[i], LOW);
    usbMIDI.sendNoteOff(mappedPotValArray[i] + 12, 0, 1);
  }
}
void octaveUpMode() {
  for (int i = 0; i < totalPotVals; i++) {
    usbMIDI.sendNoteOn(mappedPotValArray[i] + 12, 127, 1);
    digitalWrite(ledPinArray[i], HIGH);
    delay(speedPotVal);
    digitalWrite(ledPinArray[i], LOW);
    usbMIDI.sendNoteOff(mappedPotValArray[i] + 12, 0, 1);
  }
}

Leave a comment

Design a site like this with WordPress.com
Get started