Digital Electronics Lecture 5

The code:

unsigned long lastStepTime = 0;
int currentStep = 0;
int tempo = 0;
int switchPinArray[2] = {34, 33};
int ledPinArray[4] = {29, 30, 31, 32};
int totalLEDs = 4;


void setup() {
  Serial.begin(9600);
  for(int i = 0; i < 2; i++){
    pinMode(switchPinArray[i], INPUT);
  }
  for(int i = 0; i < totalLEDs; i++){
    pinMode(ledPinArray[i], OUTPUT);
  }
}

void loop() {
  tempo = analogRead(A16);
  if(digitalRead(switchPinArray[1]) == HIGH){
    randomBlink();
  }
  else{
    if(digitalRead(switchPinArray[0]) == HIGH){
    stepBackwards();
    }
    else{
    stepForwards();
    }
  }
}

void stepForwards(){
  digitalWrite(ledPinArray[currentStep], HIGH);
  if(millis() >= tempo + lastStepTime){
    digitalWrite(ledPinArray[currentStep], LOW);
    lastStepTime = millis();
    currentStep++;
  }

  if(currentStep == totalLEDs){
    currentStep = 0;
  }
}


void stepBackwards(){
  digitalWrite(ledPinArray[currentStep], HIGH);
  if(millis() >= tempo + lastStepTime){
    digitalWrite(ledPinArray[currentStep], LOW);
    lastStepTime = millis();
    currentStep--;
  }

  if(currentStep < 0){
    currentStep = 3;
  }
}


void randomBlink(){
  digitalWrite(ledPinArray[currentStep], HIGH);
  if(millis() >= tempo + lastStepTime){
    Serial.println("turn off");
    digitalWrite(ledPinArray[currentStep], LOW);
    currentStep = random(0,4);
    lastStepTime = millis();
  }
}


Leave a comment

Design a site like this with WordPress.com
Get started