
Learn Arduino programming from a beginner-friendly, step-by-step foundation to build structured and efficient programs in C, with hands-on practice using digital and analog pins to control hardware.
Explore essential hardware components for programming the Arduino, including Uno boards, breadboards, wires, LEDs, resistors, push buttons, potentiometers, and USB cables, with open-source options and affordable choices.
Develop practical Arduino programming by coding alongside the instructor, completing hands on activities, and receiving detailed solutions, with a Q&A and project ideas to kickstart your learning.
Install the Arduino IDE and write your first program, explore the Arduino environment, and learn debugging to prepare for the next steps.
Install the Arduino IDE by downloading the Windows, Mac, or Linux installer, launch it from your desktop, initialize the software, and note that the web editor is not covered.
Connect your Arduino board to the Arduino software by selecting the correct board and the COM port in the IDE, using USB to interface and unplugging to identify the port.
Understand the Arduino program architecture with two functions: setup runs once, and loop runs forever. Use setup to initialize variables, pins, components, and communications, while loop repeatedly executes your code.
Learn to upload your first Arduino program and make the onboard led on pin 13 blink, using setup, loop, pinMode, digitalWrite, and delay.
Start with a simple LED blink: power the LED two seconds, then off for half a second, reuse the prior code, and pause to try the program yourself before advancing.
Modify Arduino sketch to control an LED blink by adjusting delay values; power the LED with digitalWrite high, keep it on two seconds and off for 0.5 seconds, then upload.
Debug Arduino programs with the serial library and serial monitor to verify communication between the board and computer. Initialize serial at 9600 baud, print messages, and upload.
Learn how to reset an Arduino program without re-uploading using software reset via the serial monitor and a hardware reset button, so setup runs again for quick debugging.
Conclude section two by reviewing how to install the Arduino IDE, connect the board to your computer, verify and upload, reset the program, and debug with the serial monitor.
Learn C programming basics and apply them to Arduino, using debugging and output printing to build confidence for the next Arduino programming sections.
Explore variables by tracing a blink example, declare int ledpin as 13, and learn to name, declare, assign, and print variables in setup and loop using the Arduino serial monitor.
Learn about Arduino data types, including int and long, and how unsigned and boolean types extend range, plus using double for decimals and strings for text, with overflow concepts.
Discover how to write reusable functions in Arduino: define a name, return type, and input parameters, then call them from setup. Learn void functions and simple serial printing for output.
Explore the scope of variables in Arduino programs, distinguishing global and local variables, their visibility across setup and loop, and how nested scopes affect creation and destruction.
Create a new Arduino project, define two integers, and write a function that returns their sum and prints the result to the serial monitor using the setup structure.
Create a simple Arduino function to add two integers, return the sum, and print the result, while exploring scope and proper function calls in setup.
Document code with comments in C by using the double dash for line notes and a dash-asterisk block for descriptions, reminding you that comments are not executed and aid understanding.
Use if, else, and else if to test conditions in setup, making Arduino code dynamic; print results with serial.println and observe how condition order and case sensitivity affect blocks executed.
Learn how to use comparison and logical operators to drive conditional statements in Arduino, including ==, !=, >, <, >=, <=, and, or, not, with if and else if structures.
Explore the switch statement to execute actions based on an integer variable’s value, with cases two, five, and seven, including break and a default option.
Implement a function to check fridge temperature returning -1, 0, or 1 as a status flag, print messages via serial, and store result in a variable to avoid repeated calls.
Learn to use while and for loops in Arduino to repeat code, print hello world multiple times, manage a counter, and decide when each loop fits.
Declare and use arrays as a collection of variables in Arduino, specifying data type and size, with zero-based indices and for loops to read, modify, and print values.
Learn to declare constants with define, using uppercase names for fixed pins and array sizes, and place them at the top of your Arduino program. Remember constants have no semicolon.
Practice writing a program to print the maximum value from an array of numbers, using a seven-value array, initializing max to zero, and iterating to update and print.
Traverse an integer array with a for loop, updating max value when a larger element appears, then print it; implement get max array value by passing the array and size.
Gain the confidence to start making powerful Arduino programs using the C basics learned here, and apply this knowledge to future Arduino projects.
Create real Arduino programs using the setup and loop, learn about data types and delay, and upload with the Arduino IDE while wiring leds and buttons.
Explore how a breadboard uses metal lines to connect components on the same row, letting you place wires, resistors, and LEDs, while power and ground rails organize circuits.
Select the right resistor for the blink LED circuit by identifying 220 ohm resistors with color codes, understanding four- and five-band resistors, and considering tolerance.
Build a simple Arduino circuit with a LED, resistor, and ground on a breadboard wired to pin 12. Write and upload code to blink the LED.
Explore digital pins on the Arduino, reading or writing values 0 or 1, and switching between input to read sensors and output to drive LEDs.
Power off and disconnect the Arduino, then add three LEDs with 220 ohm resistors. Connect the shorter leads to ground and wire the anodes to pins 11, 10, and 9.
Learn to use the pinMode function in Arduino by setting pins to input or output in setup, wiring leds on pins 9–12, and mapping pins with constants.
Learn to use the digitalWrite() function to drive four LEDs on an Arduino after pinMode(output) setup. Create a 2-on, 2-off LED pattern and upload with the right board and port.
Demonstrates controlling four LEDs on Arduino pins 9–12 by initializing them as outputs, turning them off, and sequentially blinking each with 200 ms delays to form an almost Christmas tree.
Rewrite repetitive Arduino code by using a led pins array to replace pinmode and digitalwrite calls, and use for loops to initialize, blink, and organize the code into three functions.
Refactor Arduino code with arrays and a for loop to initialize and drive leds using pin modes and digital writes; use a constant for array size and implement void functions.
Add a push button to the Arduino circuit, wire middle pins, place 10 kΩ resistor from a leg to ground, and connect the other leg to 5 V for readout.
Configure pin five as input and read it with digitalRead; store the value in buttonValue and print pressed or dash to the serial monitor with a 100 ms delay.
Use digital read and digital write to control a four-led array, blinking leds one at a time, and trigger next led only if the button on pin five isn't pressed.
Learn how analogWrite uses pwm on select digital pins to create brightness from 0 to 255. Observe pin 11 with an led and compare 0, 128, and 255.
Learn to set up and use digital pins on Arduino Uno with pin mode, digitalWrite, and digitalRead for input and output, including analogWrite for a percentage of the output voltage.
Learn how to have an Arduino interact with a user by receiving input during execution and storing it for later reuse, using the serial library for debugging with four-LED circuit.
Learn to establish serial communication between a computer and an Arduino using serial.begin, serial.available, and parseInt to send, receive, and print data. Check the baud rate to avoid weird characters.
Control four leds on the Arduino by sending a number 0–3 via the serial monitor to power a chosen led and turn off the others.
Power an LED from serial input by selecting an LED index from an array, updating pins with a power-on function, and validating input to avoid hazards.
Learn to use the Arduino eeprom memory to store settings across resets, with 512 bytes, using eeprom.h to read and write bytes and integers.
Practice using the Arduino EEPROM to persist the last selected LED across resets by reading an integer sent by the user through the serial communication, and restore it on startup.
Store the last selected LED index in EEPROM and read it during Arduino setup to power on that LED after each reset.
Learn to communicate between the Arduino and your computer in both directions using serial communication and the serial library, and store values permanently in EEPROM for reuse after reset.
Explore analog pins on the Arduino Uno, learn how analog read converts 0–5v into 0–1023 values, and see how analog pins can double as digital pins with pin mode.
Learn to add a potentiometer as an analog sensor to the Arduino, wiring ground, 5 volts, and the middle pin to analog input A0 on the breadboard.
Define the potentiometer pin, read it with analogRead, and print values from 0 to 1023 with a short delay to avoid reading too fast.
Map a potentiometer value to four leds on an Arduino by defining pins, setting pin modes, and using an led select function with a 0–1023 to 0–3 range.
Discover using an analog pin as a digital pin on the Arduino. Connect a wire to A5 and code with pinmode digital read and digital write.
Learn how to use the Arduino Uno's analog pins A0 to A5, read values with analogRead, and treat analog pins like digital pins, with results ranging from 0 to 1023.
Learn a simple, delay-free method to run tasks on the Arduino so you can blink two LEDs at different rates and read sensors without stalling the program.
Learn to read the Arduino's elapsed time with millis(), which returns milliseconds since start as an unsigned long, then print it via Serial.println and observe updates at a set interval.
Learn to blink an LED without delay by using the millis function, tracking previous and current times, and toggling LED state with non-blocking timing.
Blink two leds at different rates by tracking separate previous times and intervals with millis, then update led states with digitalWrite on pins 9 and 10.
Blink four LEDs at four different rates using arrays for previous times, intervals, states, and pins, with a function that traverses the arrays to manage timing via millis.
Discover how to blink multiple LEDs at different rates using arrays for pins, previous times, and states, with a blink led function to simplify Arduino code.
Compare millis and micros for Arduino timing, use delay microseconds for short waits, and avoid long delays; emphasize millis as the default timer while micros offers microsecond precision when needed.
Create multitask Arduino program using millis to blink a led, control pin ten led via serial analogWrite, and read push button and potentiometer, printing potentiometer value every two seconds.
Coordinate multi-task Arduino control: blink led one with millis and drive led two via serial and analogWrite; read a button and potentiometer to drive leds three and four.
Learn to replace blocking delays with the millis function, enabling simultaneous actions. Build multi-sensor data reads, concurrent actuations, and user communication at varying rates.
You want to learn Arduino programming from the beginning ?
You want to write Arduino code that works, and that you can understand ?
You want to really do things by yourself, instead of reading theory and copying/pasting some code ?
Then you are in the right place!
The goal of this course is to give you, step by step, the Arduino programming foundation that you need, along with a ton of practice, so you will be more confident to create much more complex and nice Arduino programs in the future.
You don’t need any special knowledge or programming experience to start this course, I will explain everything in details.
Every line of code that you see in this course will be written in front of you. I will write code, and you will also write code. No copy and paste.
For every important step on this course, you will do a programming activity to practice and get a better understanding.
Along the different activities, I’ll also give you some programming best practices that I’ve learned myself, so you’ll improve much faster than if you were just alone.
Why this course ?
Because I found that it’s hard to find a tutorial or course online that is mainly focused on Arduino programming.
I recognize that plugging out-of-the-box components can be cool, because you feel that you are making complex things, but for real, you are just using easy-to-plug blocks that work by themselves. And now, when you need to make something more complex by yourself, or even a basic thing that has no “fancy” component doing it for you, then at this point, you feel lost, and need to go back to the basics. Or you find some random code from the Internet that you can copy and paste, and hope that this code will just work out of the box.
I personally come from a programming background. So, when I first started to program on Arduino, I quickly noticed how limited most people are, just because they don’t have the required programming basics.
What I found is that most people are limited by the programming side. When you use Arduino, OK this is a hardware board, but the true value you add to your circuit, robot, or anything else, comes from the programming side. You can’t skip that if you want to become an advanced Arduino Maker.
So… Start your learning today and unleash your programming creativity !
Here is an overview of what you will learn through the course:
Install the Arduino IDE and upload a program to your Arduino board
C programming in the Arduino environment
Setup a basic Arduino circuit
Use digital and analog pins to control external hardware components
Communicate with the outside
Store values on your Arduino board
Create a multitask program
Separate your program into reusable blocks of code
… and much more !
Please make sure to read the following. This course is NOT for you if :
You want an Arduino course specialized in hardware
You just want to quickly plug components, copy and paste some code
You are not interested in software development
You already have strong basics in Arduino programming