Lesson (Click to watch) |
Lesson Resources |
|

Part 1 looks at the basics equipment that you will need to program the Arduino Uno.
A small starter kit is an ideal starting point and this video shows what to look out for in a kit.
You will also require a computer of some sort (Windows, mac or Linux). The computer does not need to the latest version, I still use a 10 year old laptop for some programming and it has no problems.
You will also require the Arduino IDE to be able to write and upload your code to the Arduino.
Finally and most important is due to the combination of programming and electronics almost everyone gets stuck at different stages so be aware that some patience and perserverance is required. |
Arduino IDE Version 2 Arduino Integrated Development Environment software. The program used to write code and upload it to the Arduino boards.
CH340 Drivers Many boards use the CH340 communication chip and therefore require CH340 drivers to be installed.
Other information:
Windows 11 and CH340 drivers Under Windows 11 there has been a driver issue with a few boards using a certain type of CH340 chip. This includes the UNO and some ESP8266 boards. If you have issues with your board not being recognised this video explains how to fix the issue. |
|

Part 2 Looks at some of the settings in the Arduino IDE and then shows how to connect the Arduino Uno and upload the first sketch from the Arduino IDE.
This lesson also looks at the CH340 drivers required by some Uno boards and the solution if this error message is seen:
Error: cannot set com-state for \\.\COM10
Error: unable to open port COM10 for programmer arduino
Failed uploading: uploading error: exit status 1
|
Arduino IDE Version 2 Arduino Integrated Development Environment software. The program used to write code and upload it to the Arduino boards.
CH340 Drivers Many boards use the CH340 communication chip and therefore require CH340 drivers to be installed.
Other information:
Windows 11 and CH340 drivers Under Windows 11 there has been a driver issue with a few boards using a certain type of CH340 chip. This includes the UNO and some ESP8266 boards. If you have issues with your board not being recognised this video explains how to fix the issue. |
|

Part 3 Shows how to set your screen preferences within the Arduino IDE to make a more comfortable working environment.
This lesson also looks at sketch basics and examines the difference between the setup() and loop().
It also looks at how to use the Serial monitor to get a screen output from the Arduino UNO.... "Hello World!" |
Download Sketches for this lesson |
|

In this lesson we add the first input item, a simple button onto the breadboard to start a new project.
The sketch shows how to set up the button and then find it current state using digitalRead();
One of the biggest problems with building on breadboards is bad connections. This can becomes more difficult when plugging things in as the breadboard and Arduino move around. To fix this problem lesson also shows how to use a cutting board and Blu Tack to hold everything in position and at the same time make the project portable. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

|
|

In this lesson we look at using multiple buttons and discover the issues when using pin numbers in code.
The solution is the use of variables so this lesson also includes the basics of using variables, the different types and their limitations allowing the user to select the best data type for their project. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).
WARNING: Circuit diagram updated after video 27/05/26

|
|

This lesson adds four leds to the multiple button circuit and sketch.
After setting up the leds we see the problems with using delay() to control leds.
Finally a very basic solution is shown on how to use a pair of buttons to turn an led on and off using an if() statement.
Within the lesson a simple explanation of definitions is given. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).
WARNING: Circuit diagram updated after video 27/05/26

|
|

This lesson uses the same circuit as lesson 6 but shows how to control the timing of the LED's using millis() and States instead of delay.
This also introduces if(){ }else{ } into the sketch.
This then allows the four leds to be controlled independently with their own flash rates.
Finally a button is used to turn the flashing sequences on or off with the ability to set the led state when the sequence is turned off. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

|
|

This lesson looks at how to use a button press to turn an item on and then a second press to turn the item off.
This needs the state of the button to be stored but also shows the need to debounce the button to prevent false readings. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

|
|

As code become more complex the loop() can become very congested.
Although the course has looked at using some of the IDE functions such as digitalRead() and digitalWrite()
This lesson covers how to create functions to simplify code but just like built in functions we can also use the function to process multiple items by passing variables to the function.
The final sketch then moves functions into tabs to make the code even easier to follow. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

|
|

This lessons contunes to simplify the code, this time using loops and arrays.
The loop types covered are for(), while() and do while().
The lesson then looks at how to create and use arrays of different types, the advantages of arrays as well as the dangers. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

An alternate lesson on arrays and the for loop is avilable ni the beginners course.
 |
|

How to use a servo with the Ardiuino including using the breadboard power supply.
This sketch shows how to include the Servo library and use some of the library functions.
Video looks at button control to trigger servo movement as well as speed control.
The final sketch shows how to set leds to light up when the servo reaches it's destination.
All code is non blocking. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

For multiple Servos see:
 |
|

This lesson looks at reading analog values using the potentiometer to work out the actual pin voltage.
The lesson then continues to use map() to translate the analogRead value into a position for the servo to move to.
Finally leds are added that trigger at various angles.
NOTE: Although the buttons remain on the breadboard they are not used in this lesson. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

Alternate lesson at :
 |
|

The thermistor is one of the smnallest items in most kits but as this video shows, trying to get the temperature can lead to a bit of a search for information as well as learning how to translate equasions into programming code.
As always the code is non blocking and finishes with a simple to use function for future projects. |
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

Additional resources
10k Thermistor output chart
Thermistor Calculator
Voltage Dividers
Voltage divider Calculator
Steinhart - Hart Equation |
|

The GL5528 photoresistor is very common in starter kits.
This lesson covers the basics of using it as well as some issues to think about when adding it to a project.
For the final sketch analogWrite() is used to dim or brighten the LED to specific values as determined by the photoresistor.

|
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).

Additional resources
5528 Photoresistor data sheet
Lux value calculations
PWM Basics
Extra information on using map()

|
|

In this lesson I'm combining the analogue outputs from the joystick to control the speed and direction of 2 motors using the L293D motor driver.
The code can be used with a single motor if required.
Some kits come with the bigger L298N motor driver. The same code can be used with that driver and there is a link to an altenrate lesson that shows how to use the L298N driver board.
|
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).
Alternate code for L298N Motor driver

|
|

This lesson looks at how to conect the 5161AS Common Cathode 7 segment display to the Arduino Uno.
The lesson covers the differences in using a single resistor instead of a resistor per segment.
Sketches finish up with a function to display numbers as well as a blank and "-" sign that can be expanded as required to add further letters.
The 5161AS Common cathode display looks identical to the 5161BS common cathode display so check the version in your kit as they require different circuits to operate.

|
Download Sketches for this lesson
Circuit for this lesson (click on image for larger version).
Although both circuits shown below will work the left hand version with 8 resistors produces a better display output as each segment has the same brightness no matter how many segments are displayed.
The right hand circuit with single resistor shares the same power supply no matter how many segments are lit. This means that an "8" will display dimmer than a "-".

This lesson uses arrays, see part 10 if you are unsure about arrays.

|