Analog and Digital LEDs

Inspiration:

I struggled to think of something creative to make, but I eventually settled on a kind of game where a red, a green, and a blue LED would light up, each with a random brightness, and then the player would have to use a potentiometer to control the brightnesses of each of the three LEDs in order to match the random brightness that they had. If the player was within a certain range, a green LED would light up, signifying that the player was correct, otherwise a red LED would light up signifying that the player was too far off.

Process:

I used some of the code from the Maintain State circuit we built, along with some from the Analog LED circuit from class as well.

Challenges:

My idea was quite complicated, especially for someone new at coding like me, and I spent too long trying to work it out. I eventually realized that I could have the same process with a blue LED that the player would control, which would make the circuit much simpler. I simplified my code and rebuilt my circuit, although for some reason, I encountered the same problem I had before, which was that all three LEDs would light up, and neither the button nor the potentiometer would change that.

I tinkered a little more, and the video shows as far as I got, however because I spent so much time on the more complicated version of this idea, I did not have enough time to completely troubleshoot either the code or the circuit. I had initially thought for a long time that the problem must have been somewhere in the code, but I think now that it might be in the circuit.

Final Work:

Diagram of my circuit on TinkerCAD

Code:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
//potentiometer
const int knob = A0;
//target blue LED
const int bled = 5;
//incorrect and correct LEDs
const int iled = 9;
const int cled = 10;
//blue button
const int bbutton = 2;
//on/off button
const int obutton = 12;
bool bledOn = false;
bool iledOn = false;
bool cledOn = false;
//on off button
bool oButtonOnOff = false;
bool oButtonPrevOnOff = LOW;
//blue button
bool bButtonOnOff = false;
bool bButtonPrevOnOff = LOW;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(bled, OUTPUT);
pinMode(iled, OUTPUT);
pinMode(cled, OUTPUT);
pinMode(bbutton, INPUT);
pinMode(obutton, INPUT);
}
void loop() {
//turning the LED on and off with the BLACK button
bool oButtonCurrentState = digitalRead(obutton);
int randomLED = random(255);
if(oButtonCurrentState == HIGH && oButtonCurrentState != oButtonPrevOnOff){
digitalWrite(bled, randomLED);
}
oButtonPrevOnOff = oButtonCurrentState;
bledOn = !bledOn;
//turning the LED on and off with the BLUE button
bool bButtonCurrentState = digitalRead(bbutton);
if(bButtonCurrentState == HIGH && bButtonCurrentState != bButtonPrevOnOff){
digitalWrite(bled, 255);
}
bButtonPrevOnOff = bButtonCurrentState;
bledOn = true;
int knobValue = analogRead(knob);
//fix high and low based on potentiometer
int mappedValue = map(knobValue, 850, 350, 0, 255);
int constrainedValue = constrain(mappedValue, 0, 255);
digitalRead(bled);
if(bled == HIGH && bButtonPrevOnOff == HIGH){
analogRead(knob);
analogWrite(bled, constrainedValue);
}
int bledValue = analogRead(bled);
if(bButtonCurrentState == HIGH && (randomLED - 5) < (bledValue) < (randomLED + 5)){
bool cledOn = !cledOn;
}
if(bButtonCurrentState == LOW && (bledValue) < (randomLED - 5) || (randomLED + 5) < (bledValue)){
iledOn = !iledOn;
}
}
//potentiometer const int knob = A0; //target blue LED const int bled = 5; //incorrect and correct LEDs const int iled = 9; const int cled = 10; //blue button const int bbutton = 2; //on/off button const int obutton = 12; bool bledOn = false; bool iledOn = false; bool cledOn = false; //on off button bool oButtonOnOff = false; bool oButtonPrevOnOff = LOW; //blue button bool bButtonOnOff = false; bool bButtonPrevOnOff = LOW; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(bled, OUTPUT); pinMode(iled, OUTPUT); pinMode(cled, OUTPUT); pinMode(bbutton, INPUT); pinMode(obutton, INPUT); } void loop() { //turning the LED on and off with the BLACK button bool oButtonCurrentState = digitalRead(obutton); int randomLED = random(255); if(oButtonCurrentState == HIGH && oButtonCurrentState != oButtonPrevOnOff){ digitalWrite(bled, randomLED); } oButtonPrevOnOff = oButtonCurrentState; bledOn = !bledOn; //turning the LED on and off with the BLUE button bool bButtonCurrentState = digitalRead(bbutton); if(bButtonCurrentState == HIGH && bButtonCurrentState != bButtonPrevOnOff){ digitalWrite(bled, 255); } bButtonPrevOnOff = bButtonCurrentState; bledOn = true; int knobValue = analogRead(knob); //fix high and low based on potentiometer int mappedValue = map(knobValue, 850, 350, 0, 255); int constrainedValue = constrain(mappedValue, 0, 255); digitalRead(bled); if(bled == HIGH && bButtonPrevOnOff == HIGH){ analogRead(knob); analogWrite(bled, constrainedValue); } int bledValue = analogRead(bled); if(bButtonCurrentState == HIGH && (randomLED - 5) < (bledValue) < (randomLED + 5)){ bool cledOn = !cledOn; } if(bButtonCurrentState == LOW && (bledValue) < (randomLED - 5) || (randomLED + 5) < (bledValue)){ iledOn = !iledOn; } }
//potentiometer
const int knob = A0;
//target blue LED
const int bled = 5;
//incorrect and correct LEDs
const int iled = 9;
const int cled = 10;
//blue button
const int bbutton = 2;
//on/off button
const int obutton = 12;

bool bledOn = false;
bool iledOn = false;
bool cledOn = false;

//on off button
bool oButtonOnOff = false;
bool oButtonPrevOnOff = LOW;

//blue button
bool bButtonOnOff = false;
bool bButtonPrevOnOff = LOW;

void setup() {
  // put your setup code here, to run once:

  Serial.begin(9600);
  pinMode(bled, OUTPUT);
  pinMode(iled, OUTPUT);
  pinMode(cled, OUTPUT);
  pinMode(bbutton, INPUT);
  pinMode(obutton, INPUT);

}

void loop() {
//turning the LED on and off with the BLACK button
  bool oButtonCurrentState = digitalRead(obutton);
  int randomLED = random(255);
  if(oButtonCurrentState == HIGH && oButtonCurrentState != oButtonPrevOnOff){
    digitalWrite(bled, randomLED);
  }
  oButtonPrevOnOff = oButtonCurrentState;
  bledOn = !bledOn;

//turning the LED on and off with the BLUE button
  bool bButtonCurrentState = digitalRead(bbutton);
  if(bButtonCurrentState == HIGH && bButtonCurrentState != bButtonPrevOnOff){
    digitalWrite(bled, 255);
  }
  bButtonPrevOnOff = bButtonCurrentState;
  bledOn = true;
  
  int knobValue = analogRead(knob);
  //fix high and low based on potentiometer
  int mappedValue = map(knobValue, 850, 350, 0, 255);
  int constrainedValue = constrain(mappedValue, 0, 255);

  digitalRead(bled);
  if(bled == HIGH && bButtonPrevOnOff == HIGH){
    analogRead(knob);
    analogWrite(bled, constrainedValue);
  }

  int bledValue = analogRead(bled);
  if(bButtonCurrentState == HIGH &&  (randomLED - 5) < (bledValue) < (randomLED + 5)){
    bool cledOn = !cledOn;
  }
  if(bButtonCurrentState == LOW &&  (bledValue) < (randomLED - 5) || (randomLED + 5) < (bledValue)){
    iledOn = !iledOn;
  }
}

 

Leave a Reply