Lab 1: Digital Input and Output
Here you can see that when the button is off, the yellow LED is on. But when I press the button, or it’s “on”, the red LED turns on.
This shows how I’ve connected a digital input circuit and a digital output circuit to a microcontroller.
The code is written to expect the button as an “input”, and change the “output” or behaviors of the LEDs depending on the state of that input.
Lab 2: Analog Input
When I turn the knob of the potentiometer, the LED’s brightness turns up or down, and those readings are sent to the serial monitor.
I did this by connecting a variable resistor to a microcontroller and reading it as an analog input. This means that the program is understanding that I’ve changed the conditions of the physical world (me turning the knob of the potentiometer) and converted them to changing variables (turning a LED’s brightness up and down, and printing the numerical change to the serial monitor).
The code:
There are global variables written for the analog value of the potentiometer, brightness of the LED, and the pin number of the LED. The serial monitor is set up and the LED is declared as an output. Then we read the value of the potentiometer, turn that into another value that can control the brightness of the LED, and print that value of brightness to the serial monitor.
Questions: Why don’t we have to set the potentiometer as an input in the setup function? Why don’t we have to declare a global variable for the pin number of the potentiometer?
Below you can see the value of brightness changing in the serial monitor. The numbers are between 0 and 255 because of how we translated the range of the potentiometer to something the computer could remember/process and send to the LED. We did this by dividing the range of the potentiometer by 4, which fits into a BYTE… which can only fit 8 BITS… which can only include up to 255 values. I don’t know why we divide by 4, or really fully understand base two or binary notation!