// Manual multiplexing of 3x3 LEDs using Arduino UNO
// The potentiometer sets the delay between setting the individual LEDs

// Source files: https://github.com/upiir/potentiometer_led_ring_light
// Youtube video: https://youtu.be/tHL4RYGSvg4


void setup() {
  // set the pins to output
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);  
  pinMode(4, OUTPUT);    
  pinMode(5, OUTPUT);    
  pinMode(6, OUTPUT);    
  pinMode(7, OUTPUT);      

  // set potentimeter pin to input
  pinMode(A0, INPUT);    
}

void loop() {

  int delay_time = map(analogRead(A0), 0, 1023, 1, 500); // set the delay time based on the potentiometer value


  // go over every single LED and light it up

  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);  
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);  
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);  
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);  
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, LOW);  
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);  
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);  

  delay(delay_time);  

  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);  
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);  
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);  
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);  
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, LOW);  
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);  
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);  

  delay(delay_time);  

  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);  
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);  
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);  
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);  
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);  

  delay(delay_time);

  digitalWrite(2, LOW);
  digitalWrite(3, LOW);  
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);  
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);  

  delay(delay_time);   
  

}