Group assignment
Probe an input device's analog levels and digital signals. Document your work on the group work page and reflect on your individual page what you learned.
Individual assignment
Measure something: add a sensor to a microcontroller board you have designed and read it.
Before this week I understood that input devices are the sensors that allow a microcontroller to perceive the physical world — buttons, switches, potentiometers, distance sensors. What I had not done was wire one to a board I had designed myself and read it programmatically.
My board from Week 6 — the Pitch timer PCB — already had a pushbutton footprint connected to pin D10 of the XIAO RP2040. This week I used that existing hardware to complete the individual assignment: add a sensor to a board I designed and read it.
Group assignment I worked with my colleague Jhasmin Ayala
Check this link
A pushbutton (tactile switch) is a momentary digital input: it has two states — open (no connection, reads HIGH when using internal pull-up) and closed (connects the pin to GND, reads LOW). It is the simplest possible digital input device and a fundamental building block in embedded systems.
During week 6, I designed a board with a pushbutton wired between pin D10 of the XIAO RP2040 and GND. The pin is configured as INPUT and uses the microcontroller's internal pull-up resistor, so:
| Button state | Pin D10 reads | Serial output |
|---|---|---|
| Not pressed (open circuit) | HIGH (1) | Pushbutton Closed |
| Pressed (connected to GND) | LOW (0) | Pushbutton Open |
The Pitch timer PCB (milled in Week 8 on the Makera Carvera). The pushbutton is located at the D10 footprint. When pressed, it connects pin D10 to GND; when released, the internal pull-up holds D0 HIGH. All other components — the XIAO RP2040, display connector J6, LED strip connector J4, buzzer connector J5, and screw terminals J1–J3 — are also visible.
The Pitch timer PCB (milled in Week 8 on the Makera Carvera). The pushbutton is located at the D10 footprint. When pressed, it connects pin D10 to GND; when released, the internal pull-up holds D0 HIGH. All other components — the XIAO RP2040, display connector J6, LED strip connector J4, buzzer connector J5, and screw terminals J1–J3 — are also visible.
The firmware reads the pushbutton state every loop iteration using digitalRead() and reports the result over the Serial port at 9600 baud. The logic is inverted relative to the raw pin value because of the pull-up configuration: HIGH means open, LOW means closed.
With the firmware uploaded via the Arduino IDE and the Serial Monitor open at 9600 baud, the board correctly reports the pushbutton state in real time:
This week confirmed something I had understood conceptually but not yet experienced in practice: the difference between an input and an output is more than a wiring direction. An input device gives a system the ability to respond — to change its behavior based on something happening in the physical world. Without inputs, a device can only execute a fixed sequence. With even the simplest input — a pushbutton — it becomes interactive.
Using my own milled PCB for this test also reinforced the value of designing hardware with flexibility in mind. The pushbutton footprint on D10 was placed during the Week 8 design phase without knowing exactly how it would be used. Having it available this week meant I could complete the input assignment on a board I had designed and built myself — which is exactly what the Fab Academy program asks for.
Licensed under CC BY-NC-SA 4.0 — © Marita Chang