Skip to content

Glossary

Plain-language definitions of every term used on this site.


ADC (Analog-to-Digital Converter) A chip that converts a continuously-varying analog voltage into a discrete integer a computer can process. The MCP3008 in these labs is a 10-bit ADC with a range of 0–1023. → What is an ADC?

Analog signal A signal that varies continuously across a range — like the voltage output of a joystick as you push it around. Contrast with digital signal. → Analog vs digital

Assembly language A human-readable representation of machine instructions. objdump -d shows you assembly. Each line corresponds to one CPU operation.

Binary A base-2 number system using only the digits 0 and 1. All data in a computer is stored and processed in binary. → Bit operators

Bit A single binary digit — either 0 or 1. The smallest unit of data.

Breadboard A plastic board with a grid of holes used to build circuits without soldering. Internally, the holes in each short row are connected, so plugging wires into the same row connects them. → Your toolkit

Compiler A program that translates source code (like C or C++) into machine instructions before the program runs. Contrast with interpreter. → Compiled vs interpreted

C / C++ Compiled, general-purpose programming languages. The motor labs use C. C++ is the same language with object-oriented extensions. Both compile to native machine code.

Cartesian coordinates A way to describe a position using (x, y) values — horizontal and vertical distances from an origin point. One of the coordinate systems used in HandState.

Compile To translate source code into machine instructions using a compiler. In these labs you compile with make <target>. → Building & running

Duty cycle In PWM, the fraction of each cycle the signal spends in the HIGH state. A 50% duty cycle means the signal is HIGH half the time. → What is PWM?

Digital signal A signal with only two possible states: HIGH (on) or LOW (off). GPIO pins are digital. Contrast with analog signal. → Analog vs digital

Function A named, reusable block of code. analogRead(), digitalWrite(), printf() are all functions. You call a function by writing its name followed by parentheses (and any arguments).

geany A simple code editor available on the Raspberry Pi. Open a file with geany filename.c. → Opening & editing code

get_handstate() The function provided in core.h that retrieves the latest hand position data from the AI pipeline. → Hand state (AI)

git A version control system that tracks changes to files. The starter code lives in a git repository. git reset --hard restores files to the original version. → Resetting your work

GPIO (General Purpose Input/Output) The row of programmable pins on the Raspberry Pi that can be set as digital inputs or outputs. "GPIO" is both the name of the pins and the concept.

HandState A struct defined in core.h that holds four values describing one hand's position: x, y, theta, and mag. → Hand state (AI)

HIGH A constant equal to 1, representing the "on" state for a digital GPIO pin (~3.3 V).

HOTIS Hands-On Trainings In Semiconductors — the University of Michigan program that created these labs.

Interpreter A program that reads and executes source code line by line at run time. Python uses an interpreter. Contrast with compiler. → Compiled vs interpreted

L293 The motor driver chip used in Labs 3 and 4. It takes small control signals from the Pi and provides enough current to drive the motor. → The motor driver

LOW A constant equal to 0, representing the "off" state for a digital GPIO pin (0 V).

Machine instruction One primitive operation executed directly by the CPU — add two numbers, move data, compare values, jump to another location. High-level language statements compile into many machine instructions. → Compiled vs interpreted

make A build tool that compiles your program using rules defined in a Makefile. Run make <target> (e.g., make joystick) to compile. → Building & running

MCP3008 The Analog-to-Digital Converter chip used in these labs. It reads the joystick's analog voltage and converts it to a 10-bit integer (0–1023). → What is an ADC?

MediaPipe A library by Google for real-time video analysis. In Lab 4 it runs a hand-tracking model that detects the positions of hand landmarks in each webcam frame. → How the AI works

MemryX An AI accelerator chip that runs machine learning models much faster than a general-purpose CPU. Used in Lab 4 to run the MediaPipe hand-tracking model in real time. → How the AI works

Model (machine learning) A program that has been trained on data to recognize patterns. The hand-tracking model was trained on many images of hands so it can identify hand landmarks in new images it has never seen. → How the AI works

OUTPUT A pinMode mode constant. Set a pin to OUTPUT when you will use digitalWrite() to write HIGH or LOW to it.

Parameter A value passed into a function when you call it. analogRead(X_INPUT) passes X_INPUT as the parameter.

Polar coordinates A way to describe a direction and distance using an angle (theta) and a magnitude (mag) from an origin point. One of the coordinate systems used in HandState.

PWM (Pulse-Width Modulation) A technique for delivering variable power through a digital pin by rapidly switching it on and off. The fraction of time the pin spends HIGH is the duty cycle. → What is PWM?

PWM_OUTPUT A pinMode mode constant. Set a pin to PWM_OUTPUT when you will use pwmWrite() on it.

Python An interpreted programming language. Lab 1 includes a Python counting program to compare with the C++ equivalent.

Raspberry Pi A small single-board computer that runs Linux. These labs use a Raspberry Pi 5.

Root / sudo Administrator-level permissions on Linux. Some programs that directly access hardware need root access. Prefix the command with sudo to run with those permissions. → Building & running

Struct A C construct that groups related variables together under one name. HandState is a struct with fields x, y, theta, and mag. Access fields with a dot: lHand.theta.

Variable A named storage location in your program. You declare it with a type and a name, and you can read and write its value while the program runs. → Variables & types