
Explore Arduino fundamentals and hardware concepts as you progress from beginner to designing and building projects, including a Larson scanner, burglar alarm, wall-avoiding robot, and weather-responsive light from internet data.
Explore Arduino programming and hardware fundamentals, learn to use LEDs, motors, accelerometers, LCDs, and sensors, and build IoT and interactive projects through project-based learning.
Discover how Arduino unites hardware and software, learn about microcontrollers and Gpio pins, and see how the Arduino IDE and wiring enable easy programming for automated watering systems.
Explore the Tinkercad Arduino simulator to build virtual circuits, program Arduino Uno R3 boards, and debug using the serial monitor, all within the browser without hardware.
Install the Arduino IDE from arduino.cc for Windows or Mac, follow prompts, install the USB driver, then start coding; the browser web editor offers optional in-browser uploads.
Learn to write a blink program on an Arduino, establishing pin 13 as an output, using setup and loop, and uploading code to see a pulsing led.
Learn to debug Arduino code using the serial monitor, enabling serial communication via UART, with setup using Serial.begin(9600) and Serial.print/println to observe data and track program flow.
Learn how Arduino users program by translating high-level C and C++ into machine code via AVR GCC, and explore basics like arithmetic, functions, and strings to control microcontroller hardware.
Learn the syntax rules of C and C++ in Arduino programming, including setup and loop functions, semicolons, whitespace, comments, and flowcharts to visualize sequential execution.
Explore literals and data types in Arduino programming, declare and initialize variables, and use them across code. Learn to print variables via the serial monitor and swap values during runtime.
Learn to use arithmetic operators in Arduino, including assignment, addition, subtraction, multiplication, division, and modulo. Explore integer vs floating-point calculations, order of operations, and compound shortcuts like += and *=.
Explore conditional statements in Arduino programming by using if, else, and else if to control flow, compare variables with operators, and build boolean expressions.
Explore Arduino loops by comparing while, for, and do-while structures, control flow with i counters, and break and continue statements to manage serial output like hello world.
Learn to write functions in Arduino, call them from setup and loop, and use return values, parameters, and modulo to print even or odd to the serial monitor.
Learn how to find and fix compile time and runtime errors in Arduino projects by reading error messages, declaring variables, and using serial print for debugging.
Learn how the capital S string object lets you store and manipulate character arrays in Arduino, using member functions such as charAt, concat, and to uppercase with the serial object.
Learn how to read serial input from the serial monitor, echo it to the Arduino, adjust the read string timeout, and convert strings to integers for processing.
Learn to generate random numbers on Arduino, print five values to the serial terminal during setup, and seed the generator with an analog read to produce varying sequences.
Explore how electricity moves in a circuit, covering voltage, current, resistance, Ohm's law, breadboard basics, and how a power source, load, and ground form a loop.
Explore how solderless breadboards connect components via clips and a central gap, then build a simple LED circuit with a 330Ω resistor and Arduino 5V supply.
Learn to read circuit schematics by identifying symbols for resistors, capacitors, diodes, LEDs, switches, and ICs, and understand how nodes, flags, and power connections link Arduino projects.
Apply Ohm's law to relate voltage, current, and resistance using V equals I times R; compute 0.05 A from 5 V and 100 Ω, and review the three equation forms.
Combine resistors in series or parallel to find equivalent resistance, then use Ohm's law to calculate current from a 5 volt supply for voltage dividers and LED circuits.
Learn to read resistor color codes across four, three, five, and six band resistors; identify the first band, apply the multiplier, and understand 5% and 1% tolerance.
Explore how a two-resistor voltage divider converts a higher input to a lower output, using Ohm's law to derive Vout for Arduino analog inputs.
Explore how diodes control current flow in one direction, including forward and reverse bias, breakdown, and their use in rectifiers and protection. Understand the non-linear I–V behavior and symbol.
Explore how LEDs act as polarized diodes of p-type and n-type materials that emit photons under forward bias, and learn to limit current with a resistor in a 5-volt circuit.
Learn practical debugging techniques for Arduino circuits, including verifying breadboard connections, testing with LEDs, using a multimeter to detect shorts, and separating hardware issues from code.
Explore general purpose input output on arduino by configuring digital pins as input or output and controlling voltages from code, including led experiments and pwm on suitable pins.
Control three LEDs on an Arduino via digital write, using 220–330 ohm resistors, with pinMode as outputs and blinking patterns in setup and loop, including a for loop.
Explore how pulse width modulation enables dimming LEDs by toggling a pin and adjusting duty cycle on an Arduino.
Use analogWrite to generate pwm on hardware pins and drive three LEDs with duty cycles from 0 to 255, animating brightness via a for loop with clamps and delays.
Learn how to use a shift register to expand Arduino outputs by receiving serial data, a clock signal, and a latch to drive eight leds from only three pins.
Explore how libraries provide reusable code for Arduino projects, including headers and C++ files, and include them with #include, plus installation via library manager or manual with Neopixel examples.
Connect five neopixels to an Arduino, using a 330 ohm resistor between pin six and the first data in, then chain data out to data in and set rgb colors.
Upgrade the Larson scanner with pulse width modulation to create soft transitions, using arrays for a main led with two dimmed leds before and after it, plus serial debugging.
Explore using Arduino digital and analog pins as inputs to respond to user interactions with switches, buttons, and knobs, and read digital levels and voltages on pins 0–13 and a0–a5.
Explore how switches control circuits to turn an LED on and off by opening or closing the path. Learn about single pole double throw concepts, poles, and throws.
Learn how push buttons work, including normally open and normally closed types, their symbols, and how to wire them on a breadboard using opposite corner pins.
Learn how external pull-up resistors set a digital input to a known high, read button states with an Arduino, and drive an LED, while understanding historical TTL vs CMOS reasons.
Enable internal pull-up resistors on the Arduino to avoid external components by wiring the switch to ground and using the 30 kΩ internal resistor.
Learn to prevent multiple counts from button bounce in Arduino projects through hardware and software debouncing, using millis and a 50 ms debounce delay.
Learn to read analog voltages with Arduino by wiring a red LED and resistor to A0, measure 0–5V, compute voltage as val*5/1023, and print to the serial monitor.
Learn how a potentiometer acts as an adjustable voltage divider with a movable wiper, providing analog input read by Arduino to control a led dimmer.
Design a mood lighting controller by integrating LEDs, user inputs, and fundamentals from Arduino programming; adjust brightness with a button and color with a knob using Neopixels as an example.
Explore effective user feedback using LEDs, character LCDs, and simple audio via a speaker and piezo elements to display words, graphics, and tunes that alert users.
Explore how character lcd displays work, wire a 16x2 Arduino-driven screen in four-bit mode, and print data with the liquid crystal library.
Learn to generate simple tones with an Arduino Uno using a mini speaker and a square wave via the tone function, playing 440 hz notes for 500 ms.
Build a simple arduino jukebox with an lcd, speaker, and input controls to select and play the first part of two songs.
Explore how electronic sensors let Arduino projects detect the environment, measure values, and react, such as triggering a light when temperature crosses a threshold.
Learn how a photoresistor uses light to change resistance and voltage in a voltage divider. Measure with an Arduino analog input to build light-sensing projects.
Convert Tlmp 36 sensor voltage to celsius using a straight-line equation. Connect to an Arduino analog input and print voltage and temperature; note accuracy factors and thermostats and greenhouses.
Trigger an ultrasonic sensor to emit a pulse, time the echo with pulseIn, and compute distance in centimeters using the microsecond duration and 58.8 divisor on an Arduino.
Learn how accelerometers detect motion across three axes, convert analog voltage to g-force using axis-specific sensitivity, and read the data with an Arduino over 3.3V.
Build a burglar alarm with an accelerometer to detect motion and trigger a three-second audible alert, with optional lights or an LCD and a potentiometer for sensitivity.
Explore real-world robots, from industrial welding robots to autonomous vehicles, and learn to control dc and servo motors with sensors to design and build your own robot.
Explore how an NPN transistor acts as a switch to control larger currents from a microcontroller, using a base resistor, a low-side configuration to drive an LED.
Explore how dc motors convert electrical energy to mechanical motion, compare direct and gear motors for torque, and control them with a transistor, flyback diode, and an Arduino setup.
Learn how an h-bridge uses four switches to reverse motor current and direction, control speed with PWM, and drive up to two motors with the L293D and Arduino.
Explore how a servo integrates a dc motor, potentiometer, and electronics to provide precise, feedback-controlled movement, and learn to control it with Arduino using the Servo library on pin nine.
Design and build a simple navigating rover project called Mousebot with two motors and an ultrasonic distance sensor, using Arduino, that backs up at walls, turns, and moves forward.
Learn how the internet underpins the internet of things by connecting sensors and microcontrollers, from Arpanet origins to TCP/IP, enabling get requests, reading and parsing information, and responsive IoT devices.
Explore UART communication between Arduino Uno and ESP 8266 to access Wi-Fi, including baud rate and frame configurations, and a hardware and software serial setup with two pins.
Connect ESP 8266 to the internet with Arduino using Adafruit feather huzzah or Sparkfun dev boards, and set up a virtual Wi-Fi network in the simulator.
Learn how to fetch a web page by crafting HTTP GET requests over TCP, understanding the internet layers, DNS resolution, and handling server responses.
Explore how Json stores data as attribute value pairs, uses objects and arrays, and how to parse json to retrieve values from endpoints and api responses.
Create an ESP8266 weather project that fetches local conditions from openweathermap or similar APIs, parses JSON, and uses temperature-based LEDs to indicate warm, mild, or cold.
Explore what the internet of things is, from non-browser internet-connected devices to sensors and actuators, and learn how to log data and communicate with online services for Arduino projects.
Post sensor data to ThingSpeak channels with an ESP8266. Create channel with a field, note the channel id and API key, and publish values via ThingSpeak library every 30 seconds.
Learn to retrieve data from Thingspeak by forming http requests to view a channel's field, use api keys, and read the latest value in Arduino with the ESP 8266.
Learn how if this then that automates tasks with triggers and actions, enabling applets that email you, log data, and control IoT devices.
Use the esp 8266 to post an http request to the ifttt maker webhooks trigger. Create an applet with the 'my reminder' event that emails you when the request arrives.
Send hourly http get requests from IFTTT to Thingspeak, create a Bells channel, and log values from ESP 8266 to enable IoT prototypes.
Build an internet-controlled LED by integrating IFTTT and Thingspeak to trigger on/off via sunrise, sunset, or weather, and reuse the same circuit for larger 120V devices.
Learn the Arduino platform and programming language to create robots, interactive art displays, electronic toys, home automation tools, and much more. This course was created in collaboration with Hackster.
Master the skills needed to bring your projects to life through electronics.
A versatile tool for prototyping, playing, and making
Arduino is both a hardware platform and programming language. By learning how to build circuits and code, you can add a new level of interactivity to your projects, prototype potential products, and gain new skills (while hopefully having fun).
The Arduino programming language is based on a combination of C and C++. With an understanding of these coding fundamentals, you will be able to more easily learn new languages, such as Java, Python, JavaScript, C#, and Swift, which are in high demand in the job market.
Course Overview
The first version of Arduino was released in 2003 and has exploded in popularity among makers, hobbyists, and tinkerers, who build everything from animatronic sculptures to interactive wearables. Professional engineers and entrepreneurs sometimes start with an Arduino to create a prototype before developing a finished product. The iconic blue board has even found its way into classrooms, where educators use it to teach programming, electronics, critical thinking, and problem solving skills.
I designed this course with the absolute beginner in mind: if you do not have any experience with programming or electronics, that’s OK! The first few sections walk you through the basics behind programming in C/C++ as part of the Arduino framework as well as how to build simple circuits that flash lights and spin motors. Following that, we continue our adventure into making noise, sensing the environment, and building a robot. Finally, we dive into the world of IoT, where we learn how to pass messages over the Internet, which allows us to do things like turn on a light with our smartphone!
Each video lecture is designed to give you one building block of knowledge. Almost every lecture is followed by a hands-on exercise where I ask you to expand on that building block or combine several previous blocks. I provide solutions to each exercise to help you learn. Additionally, most of the sections contain a project that challenges you to synthesize many of the concepts found in that section and from previous sections.
Upon completing this course, you will have the skills and knowledge needed to create fun and useful Arduino projects.