Corning Community College
ENGR1050 C for Engineers
Buttons and multi-colored LEDs, oh my!
Do note, the productive way to go about this project involves taking the following steps:
If you start too late, and do not ask questions, and do not have enough time and don't know what is going on, you are not doing the project correctly.
Taking our knowledge of LEDs and buttons:
To assist with consistency across all implementations, data files for use with this project are available on lab46 via the grabit tool. Be sure to obtain it and ensure your implementation properly works with the provided data.
lab46:~/src/SEMESTER/DESIG$ grabit DESIG PROJECT
You will want to go here to edit and fill in the various sections of the document:
A component in the electronics kit that can be used to give an input to your pi. The button has 4 legs and should straddle the middle trench/valley up the middle of the breadboard. Both of the “lower” legs should be connected to a 10K ohm resistor. One of those resistors should then run to ground from each button via a wire, and the other resistor should be connected to a pin to power the button (one of the 3.3v pins) via a wire. Then the “upper” left left leg of the button should be grounded. You must then set the connected gpio pins to “input” mode. When everything is connected and powered, the button should read as a “0” when it is not being pressed, but then becomes a “1” when it is being pressed. You can check this by running “gpio readall” while the button is not being pressed, then again while the button is being held down. You should notice the “0” change into a “1” in the displayed table.
Inside of the electronics kit and inside one of the bags of LED's that are a part of Matt's class you will find a larger LED that instead of being one color is naturally white. This LED will also have 4 legs beneath it instead of just 2. Now that you have this LED you will need to connect it to your breadboard for power as well as general pin outputs. So, the longest leg of the LED is the leg in which you need to connect to 3.3v power, as it is the common anode version. In the common cathode version, it is the GND leg. Then the next longest leg that is alone to one side of the longest leg is the leg connected to the red output of the LED. Finally the 2 legs to the other side of the longest leg are Green and then Blue, the longer of these 2 legs is the green output leg and the shorter is the blue output leg. The leg that is connected to the 3.3v power does not need a resistor but a resistor is highly recommended, especially in the case of initial testing. However, all three of the output legs that will control a color need a resistor in order to function. Each of these legs need a 220 kΩ (Kiloohm) resistor.
A conditional statement in computer programming that allows you to perform 2 different blocks of code depending on whether or not the given condition is met. The condition is a simple as
if (condition == 1){ //checks to see if the condition is true (true = 1 in programming) Code to be executed //This code will be executed if the condition is met } else{ //If the initial condition is not met/is false alternative block of code to be executed //Code to be executed if the condition is not met }
The general flow of the process (one way of going about it, anyway) can be described as follows:
SET REDVAL, GRNVAL, BLUVAL TO ZERO REPEAT INFINITELY: SHOULD THE INCREMENT POSITION ON THE SWITCH BE SET: SET DIRECTION TO POSITIVE ONE OTHERWISE: SET DIRECTION TO NEGATIVE ONE SHOULD THE RED BUTTON BE PRESSED: ADJUST REDVAL BY (TEN TIMES DIRECTION) SHOULD THE GREEN BUTTON BE PRESSED: ADJUST GRNVAL BY (TEN TIMES DIRECTION) SHOULD THE BLUE BUTTON BE PRESSED: ADJUST BLUVAL BY (TEN TIMES DIRECTION) ACTIVATE MULTICOLOR LED TO RGB VALUES CURRENTLY SET DELAY AT LEAST FIFTY MILLISECONDS COMMENT: INFINITE REPEAT BLOCK CONCLUDES
To be successful in this project, the following criteria (or their equivalent) must be met:
Let's say you have completed work on the project, and are ready to submit, you would do the following (assuming you have a program called uom0.c):
lab46:~/src/SEMESTER/DESIG/PROJECT$ make submit
You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.
I'll be evaluating the project based on the following criteria:
130:ptb2:final tally of results (130/130) *:ptb2:used grabit to obtain project by the Sunday prior to duedate [13/13] *:ptb2:clean compile, no compiler messages [13/13] *:ptb2:switch is read and adjusts color level direction [26/26] *:ptb2:each button adjusts its pertinent color level [26/26] *:ptb2:multicolor LED displays current set RGB levels [26/26] *:ptb2:bounds enforcement keeping color value within range [13/13] *:ptb2:code tracked in lab46 semester repo [13/13]