User Tools

Site Tools


notes:c4eng:fall2023:projects:ptb2

PTB2

switch

The switch used has three connection pins:

  • Connect the central pin to 3.3V, using a 10 KΩ resistor in series
  • Connect one of the outer pins to a GPIO pin, using a 10 KΩ resistor in series. This pin serves as the ground

button

Your button(s) should produce an input for the RED, GREEN, and BLUE LEDs. All the buttons should be set to input mode since they're input devices. With that information, I would code the button to the corresponding LED. So Red button to the red LED, blue to blue, and green to green. The switch also should be set to input, just like the buttons are. Each button must also be connected to a 3.3v pin. There are 2 on the t-cobbler, I would recommend dividing your wires between the 2 and not just using one.

multicolor LED

[ptb2] The multicolor LED should output the colors RED, GREEN, and BLUE. With that information , I would personally color code the buttons associated with the specific color desired when the button is pressed. Meaning have a RED button cap for when you want the multicolor LED to output RED, and so on for each color. This just makes it easier to test your code. The circuit of the multicolor LED should have a 3.3 V running through the longest leg of the LED. Then there will be a 220k ohm resistor for each of the other legs that are wired to three different gpio pins. The gpio pins serve as a ground, so a separate ground wire is not needed.

if-else

The if else statement essentially means that “ if this condition is true do the following thing, else do this thing instead”. If the condition inside the parentheses evaluates to true , the code inside the if block will execute.

An easy way to write an if statement that executes when our button is pressed, is just to simply combine functions:

if(digitalRead(BUTTON)){
   //some code here//
}

With this method, there is no need to write out a full expression. You can simply evaluate within the if statement.

staying within a range

In this project, we want to stay within a range from 0 to 100, and cycle to the other end of the range when exceeded. One way to do this is to use the modulus operator to take the remainder of our expression divided by our upper range + one factor, i.e.

(10*direction)%110; // 110, since we're jumping by 10s. 

Another way to do this would be to add an if statement each time the variable is changed, i.e.

value = 110; 
if(value>100)
   value = 0;

Because there's only one statement being executed after the if statement, there is no need to add curly brackets.

Using this method, we can also make sure we stay in the positives with an additional if statement:

if(value>100)
   value = 0; 
if(value<0)
   value = 100; 

Now when we go below 0 or above 100, we will cycle to the other side of the range. It is important to add these if statements directly after the value is changed, to ensure the out-of-bounds value doesn't get used in any code executions.

notes/c4eng/fall2023/projects/ptb2.txt · Last modified: 2023/10/26 03:25 by mwinter4