3_6_1 Bug Hunt: RGB Color Mixer

Bug Hunt! Test your Troubleshooting.

Prefer listening over reading? Click the play button in the audio bar.

Here’s how Bug Hunts work:

We’ve taken the example code from the last project and inserted errors into it. These errors might be spelling problems, syntax, or we might have changed up how the program works altogether!

The goal of the Bug Hunt is to find and fix the errors so that when you upload the code, it runs just like the example code did on the project page.

Try these steps in order to solve a Bug Hunt:

1) Look over the code closely first, looking for anything that is out of place. We recommend you do this first to build up your ‘bug hunting instincts’.

2) Press ‘Upload the Code’ with your board plugged in and the circuit built. The code won’t work, but it will show you the errors that the computer found - these will pop up in a box just below the code editor. These clues are sometimes vague or confusing, but they may help you find out where the problem is.

3) Check your code references, especially for the functions that have turned red when you hit “Upload”. Compare the syntax of your reference book to the syntax in your code editor here.

After you’ve fixed the bug and the code is working again, hit ‘Restore’ so you can see the code how it was before you fixed it. Is the bug obvious to you now? Reviewing like this will make it easier to find bugs in future programs!

Get stuck? Click on ‘Need a Hint?’ below. It will provide a clue about what’s wrong in this program.

/* Set up 3 buttons to correspond to each color from the RGB LED Pressing any single button shows one color. Pressing multiple buttons mixes colors! */ void setup() { pinMode(4,INPUT_PULLUP); //button pinMode(5,INPUT_PULLUP); //button pinMode(6,INPUT_PULLUP); //button pinMode(9,OUTPUT); //one leg of the RGB LED pinMode(10,OUTPUT); //one leg of the RGB LED pinMode(11,OUTPUT); //one leg of the RGB LED } void loop() { if(digitalRead(4)==LOW){ //if button 4 is pressed... digitalWrite(9,HIGH); //turn on the LED color 9 } else{ //otherwise, if button 4 is not pressed... digitalWrite(9,LOW); //turn off LED color 9 } if(digitalRead(5)==HIGH){ //if button 5 is pressed... digitalWrite(10,HIGH); //LED color 10 is on } else{ //otherwise.... digitalWrite(10,LOW); //LED color 10 is off } if(digitalRead(6)==LOW){ //if button 6 is pressed... digitalWrite(11,HIGH); //LED color 11 is on } else{ //otherwise.... digitalWrite(11,LOW); //LED color 11 is off } } // (c) 2023 Let's Start Coding. License: www.letsstartcoding.com/bsdlicense
 



The 'if' statements are checking the reading from the buttons to 'decide' which lights to turn on in this program. Remember that a port set to pinMode 'INPUT_PULLUP' send a LOW signal when pressed and a HIGH signal when not pressed.

Double-check the 'if' statements and make sure the digitalRead functions are checking for the correct signal from the buttons.