Which Arduino Board Should You Buy First?
Uno, Nano, Mega, Leonardo or an ESP32? A practical comparison of pins, voltage and price, and a clear recommendation for your first board.
→ just get an Uno first
section 2, the red band
Picking a board, writing sketches and understanding the pins.
Uno, Nano, Mega, Leonardo or an ESP32? A practical comparison of pins, voltage and price, and a clear recommendation for your first board.
→ just get an Uno first
Wire an external LED, upload the Blink sketch and understand every line of code, then change the timing and add a second LED.
→ LED dim? check pinMode()
How digital inputs read buttons, how analog inputs turn voltages into numbers from 0 to 1023, and what PWM outputs really do.
→ floating input = add INPUT_PULLUP
Print values, trace program flow, read commands from your computer and use the Serial Plotter to find bugs in Arduino sketches faster.
→ garbage text? baud rates don't match
Why delay() freezes your sketch, how to time events with millis(), and patterns for running several timers, blinking LEDs and reading sensors at once.
→ now - last >= interval, always unsigned long
Wire a button the simple way, detect presses instead of levels, and fix switch bounce with a millis() debounce you can reuse in any sketch.
→ one press, many bounces
How the Arduino's ADC turns a voltage into a number from 0 to 1023, how to convert it back to volts, reduce noise, measure above 5 V and use the internal reference.
→ 1023 means "at the reference", not 5 V
What hardware interrupts are, which Arduino pins support them, how to use attachInterrupt() safely with volatile variables, and a pulse counter you can reuse for encoders and flow sensors.
→ Keep the ISR short. Really short.
How the two-wire I2C bus works, which Arduino pins to use, device addresses and how to fix conflicts, pull-up resistors, and a scanner sketch that finds every device on the bus.
→ Two wires, many devices, one address each
Store settings, calibration values and counters in the Arduino's built-in EEPROM so they survive power-off: read, write, update, put and get explained, a settings struct example, and how to avoid wearing it out.
→ About 100,000 writes per byte. Don't write in loop()
Wire a 16x2 character LCD with an I2C backpack using only four wires, find its address, adjust the contrast, print text and numbers, and make custom characters. Code and fixes for a blank screen.
→ Blank screen? Turn the contrast screw first
A step-by-step checklist for the most common Arduino upload errors, from a missing COM port and CH340 drivers to avrdude "not in sync" and "programmer is not responding", with the cause behind each fix.
→ unplug everything from pins 0 and 1 first
How to tell an active buzzer from a passive one, how to wire each to an Arduino safely, and code for beeps, alarm sirens and short melodies with tone(), plus the timer conflict that silently breaks PWM pins.
→ active = DC beep, passive = needs tone()