# 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:

```//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
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
if(bButtonCurrentState == HIGH && bButtonCurrentState != bButtonPrevOnOff){
digitalWrite(bled, 255);
}
bButtonPrevOnOff = bButtonCurrentState;
bledOn = true;

//fix high and low based on potentiometer
int mappedValue = map(knobValue, 850, 350, 0, 255);
int constrainedValue = constrain(mappedValue, 0, 255);

if(bled == HIGH && bButtonPrevOnOff == HIGH){