A hands-on kit for high school students to learn programming through interactive modules combining hardware and software.
- Understand basic programming concepts (variables, loops, conditionals)
- Apply logic to control hardware (LEDs, sensors, motors)
- Build end-to-end projects integrating code and electronics
- Develop problem-solving and debugging skills
- Microcontroller board (e.g., Arduino Uno)
- Breadboard and jumper wires
- LEDs and resistors
- Sensors (light, temperature)
- Outputs (buzzers, motors)
- Servo motors
- USB cable and power supply
- Instruction manual and software
- TBD
- TBD
- Sample code library
- Troubleshooting guide
- Online reference materials
thinkstem-kit/
├── thinkstem-kit.ino // Main Arduino sketch
├── 7-segment.ino // Seven-segment display helper functions
└── README.md // Project documentation
An Arduino-based kit to introduce programming and electronics concepts to middle and high school students with minimal hardware setup required. (plug and play)
- Semi-assembled hardware components for quick prototyping
- Custom Arduino functions to simplify interaction with a seven-segment display
The 7-segment.ino helper file provides the following functions:
Initializes all seven segment pins (A–G) as outputs and turns them off. Must be called in setup() before any display functions.
Lights up the segments corresponding to the digit num (0–9) on a common-cathode display.
- Parameters:
int num— Digit to display (0–9).
Lights a single segment identified by the character c ('a'–'g' or 'A'–'G').
- Parameters:
char c— Segment label.
Overloaded version accepting a C-string (e.g. "a"). Uses only the first character.
- Parameters:
const char* s— String whose first character indicates the segment.
Cycles through all seven segments in order (a–g), lighting each for delayTime milliseconds.
- Parameters:
int delayTime— Delay in milliseconds between segments.
Displays a sequence of digits from from to to, pausing delayTime milliseconds between each.
-
Parameters:
int from— Starting digit (0–9)int to— Ending digit (0–9)int delayTime— Delay in milliseconds
segmentCount()— Counts 0 through 9 with a default 1000 ms delay.segmentCount(int delayTime)— Counts 0 through 9 with custom delay.
Includes and uses the seven-segment helper:
#include <ctype.h>
// Segment pin mapping: A→8, B→9, C→12, D→11, E→10, F→7, G→6
const int segmentPins[7] = {8, 9, 12, 11, 10, 7, 6};
const char segmentLabels[7] = {'a','b','c','d','e','f','g'};
void setup() {
sevenSegmentSetup();
}
void loop() {
loopSegments(300);
}This setup cycles through segments a–g, each lit for 300 ms.
- Open
thinkstem-kit.inoin the Arduino IDE. - Ensure
7-segment.inois in the same folder. - Customize pin mappings or display routines as needed.
- Upload to your Arduino and watch the display in action.
- Add support for a decimal point (DP) segment.
- Implement multi-digit display via multiplexing.
- Create curriculum exercises around segment control.