Arduino Step by Step: Your complete guide

Learn how to create electronic projects with the Arduino, the world's friendliest electronics prototyping platform!
  • Lectures 130
  • Video 22 Hours
  • Skill level all level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

Course Description

The Arduino is an open-source electronics platform based on easy-to-use hardware and software. Sensing the environment by receiving inputs from many sensors, Arduino affects its surroundings by controlling lights, motors, and a number of other accessories. It's intended for anyone making interactive hardware projects.

This course is designed to introduce the Arduino hardware and programming environment to get you started on building projects as soon as possible.

Unleash Your Inner Tony Stark With this Comprehensive Course

  • Arduino Ecosystem and Programming Introduction
  • Shields, Accessories, and Sensors
  • Internet Integration and Communication
  • Advanced Integrations with Motors, Gears, and Movement
  • DIY Projects and Quick Tips

A Platform for Creating Any Device Imaginable Created in 2005 by students at the Interaction Design Institute in Italy, Arduinos are microcontrollers that make the creation of interactive electronic devices accessible and fun. In recent years have become a favorite of electronic hobbyists and DIYers because of their ease of use and extremely low cost.

Notable projects include Ardupilot, a UAV platform able to control aerial drones, and Xoscillo, an open-source oscilloscope.

Contents and Overview This course is designed for anyone interested in learning electronic design. No experience is required, and all you need is an Arduino and several low cost components.

With over 19 hours of content in 110 lectures, this course will take you from zero experience in electronics or programming to Arduino Master.

What are the requirements?

  • No materials required if you only wish to view the course
  • Computer (Windows, Linux, Mac)
  • An Arduino prototyping board
  • A detailed list of materials is provided in Lesson 1

What am I going to get from this course?

  • Over 130 lectures and 22 hours of content!
  • Program the Arduino prototyping platform
  • Understand the principles of programming micro-controllers
  • Understand and use many types of sensors and components
  • Connect your Arduino to the Internet for reporting and controlling
  • Use tools to build electronic devices
  • Understand basic principles in electronics design

What is the target audience?

  • Anyone with a curiosity for making electronics
  • People with no experience in electronics
  • People with an intermediate knowledge of electronics
  • Children over 12 years old (or younger with supervision)

What you get with this course?

Not for you? No problem.
30 day money back guarantee

Forever yours.
Lifetime access

Learn on the go.
Desktop, iOS and Android

Get rewarded.
Certificate of completion

Curriculum

Section 1: Getting started with the Arduino
01:54

This is the introduction to the course, what it's about, and a bit about Peter.

List of parts

In the resources (look at the bottom of this box) you can find a link to a Google sheet that contains the parts I am using in the demonstrations in this course. Use this sheet when you are shopping for parts.

Source code

Also in the resources, you will find a link to Github, where the source code for all sketches is available for view or download. Feel free to get this code and play. If you find any errors, or wish to recommend improvements, either email me (peter@txplore.com) or make a push request on Github.

Also...

Please take some time to review any videos in the last section, "Appendices". These videos contain hints, tips and general information that can help you better use this content. I update it as the need arises.

Please read this before continuing!
Preview
Text
IFrame

This document contains a list of the parts used throughout this course. Indicative prices and links to eBay are also included.

04:59

Please watch this video first!

I provide some advice and instructions on how to make the most out of Arduino Step by Step.

07:50

Before setting up the "hello world" demo app of the electronics world (the blinking LED), let's have a really quick look at the Arduino ecosystem. The members of this ecosystem are the bits and pieces that come together when you build an Arduino project.

The Arduino ecosystem is made up of these parts:

  1. The Arduino board
  2. The Arduino IDE
  3. The Arduino core software library ("Arduino language")
  4. Third party software libraries
  5. Shields
  6. Components

This lecture looks into these parts of the Arduino ecosystem.


Notes

  1. Here is a complete list of current official Arduino boards.
  2. Download the Arduino IDE.
  3. The Arduino language references page.
Arduino ecosystem - quiz
6 questions
07:51

In this lecture I will show you the tools and process involved in prototyping with the Arduino.

I will discuss:

  1. The prototyping process
  2. Multimeters
  3. Solderless Breadboards
  4. Jumper wires
  5. Power supplies

Notes

  • Breadboard power supply from eBay.
  • An Arduino battery pack from eBay.
Tools and prototyping - quiz
5 questions
11:35

In this lecture, I discuss the Light Emitting Diode (LED), and make one blink on and off in our first Arduino sketch. I also discuss the structure of an Arduino sketch, and specifically functions and variables.

Do all diodes emit light? In the start of the video, I mention that "all diodes emit light", not just LEDs. It would have been better to qualify this statement. There is a discussion going on in the Udemy forums about this, which I encourage you to read and participated if you are interested in this topic.I am looking into the literature to better understand the light emission process before I can "safely" revise this video. I hope I am not confusing you too much with this.

LED blinking - quiz
3 questions
04:40

In Lecture 4, we created a simple circuit in which an LED blinks on and off. The Arduino sketch that drove the circuit simply wrote a HIGH or LOW value to the digital output pin 9, and the LED was turn on or off accordingly.

What we want to do in this lecture, is to make the LED not blink but fade on and off. We will be keeping the exact same circuit, and we'll only change the sketch to make this happen.

Parts

* An LED.

* A 220Ohm resistor.

LED fading - quiz
3 questions
Section 2: Sensors
03:03
This is a short introduction to the world of sensors. I enumerate the sensors that I'll be showing you in this section, and then get straight into it!
08:29

In this lecture, you will learn about how to detect and measure light using a photo-resistor. You will also learn about a common technique in electronics, the voltage divider. You will put all this in practice in a simple Arduino circuit.

Parts

* A photoresistor.

Measuring light - Quiz
3 questions
07:09

In this lecture you will learn how to measure temperature and humidity. To do this, we will use a sensor from the DHT family of temperature and humidity sensors. You will also learn about the dielectric property of certain materials, and of how to include an external software library to your Arduino sketch.

Parts

* The DHT22 or DHT11 sensor.

* A resistor.

Temperature and Humidity - Quiz
6 questions
07:11

This lecture discusses barometric pressure and how you can measure it with the BPM085 sensor. You will also learn about the I2C communications interface that this sensor uses to communicate with the Arduino.

PLEASE NOTE: A new sensor, BMP180, has been release as a drop-in replacement of the BPM085. The new device is a drop-in replacement of the old, so you can use the exact same connections schematic and library as described in this lecture. Also, Adafruit has released a new version of the library, compatible with both BPM085 and BPM180 with new useful features; I will be creating a new lecture showing how to use the new library.

Parts

* The BPM085 barometric pressure sensor.

Barometric pressure sensors - quiz
4 questions
09:04

In this lecture, we will connect a passive infrared sensor to our Arduino, calibrate it, and turn an LED on every time motion is detected. We also discuss the different technologies used to detect motion.

Parts

* HC-SR501 passive infrared sensor.

* A resistor.

* An LED.

Infrared motion sensors - Quiz
4 questions
10:11

In this lecture you will learn about how to measure distance using an ultrasonic distance sensor. This is a fairly sophisticated sensor that carries out a quite involved function when it comes to the physics of its implementation, however, as you will see, its application is as simple as it can be. You will also learn how to use a more advanced function of the Arduino language, the pulseIn function, through which you can time external events.

Parts

* HC-SR04 ultrasonic distance sensor.

Ultrasonic distance sensors - Quiz
2 questions
06:37

In this lecture, you will learn how to use a common 3-axis accelerometer, the ADXL335, to accurately measure the acceleration applied to an object. At the end of the lecture, you will be invited to create your first non-trivial circuit using this accelerometer.

Parts

* The ADXL335 sensor.

Detecting acceleration - quiz
2 questions
03:36

In this lecture, we look at the infrared line sensor, a sensor that can detect the reflection of infrared light that it emits of nearby objects. Sensors like this are used in toy robots, for detecting colour, tracking objects, even in measuring pulse in medical equipment.

Parts:

  • The QRE1113 line sensor.
Line sensor - quiz
2 questions
08:54

In this lecture, you will learn how to use a simple sensor that can detect the shock of an impact or being upside down. Even though in an earlier lecture we learned about the accelerometer, a sensor that can give us a lot of details about impact and the forces applied to it from which we can derive information about orientation, sometimes our needs are simple enough no not warrant using something as sophisticated as that. A simple switch that engages depending on its orientation or if something hits it is enough in such cases.

Parts

* A cylindrical tilt and impact sensor.

Tilt and impact sensors - quiz
3 questions
Section 3: Interaction
06:18

Buttons are everywhere!

This lecture will show you how to use a push button. You will assemble a circuit where pressing a button turns on an LED. You will also learn about the different kinds of buttons that you can use in your projects.

Parts

* Mini push button.

* Red LEDs.

* Resistors.

Buttons - quiz
1 question
07:26

In this lecture I'll show you how to use a potentiometer.

I will also explain how potentiometers work, and what Pulse Width Modulation is, avery useful feature in some of Arduino's digital pins (which we have used in an earlier lecture but did not explain).

Parts

* A linear rotary potentiometer. (See external resources for an example).

* An LED.

* A resistor.

Potentiometer - quiz
1 question
04:56

This lecture shows you how to use a flex sensor, a device for which the resistance changes when it is bent.

Parts

* A flex sensor, from Sparkfun (see External Resources for an example).

* A resistor.

Flex sensor - Quiz
2 questions
04:12

This lecture shows you how to use a membrane potentiometer, a device electricaly similar to a regular rotary potentiometer but where instead of rotating a knob in order to change the resistance of the middle pin, you can slide your finger over the sensor's surface.

Parts

* A membrane potentiometer (see example in External Resources).

Membrane potentiometer - quiz
2 questions
05:26

Generating simple tones with this little buzzer is very easy. In this lecture I'll show you how.

Parts

* A passive buzzer (example from eBay in External Resources).

* A potentiometer (example from eBay in External Resources).

Making noise with a buzzer - quiz
1 question
04:06

In this lecture, I will demonstrate how to connect a common 4x4 membrane keypad that contains numbers, letters “A”, “B”, “C”, and “D”, a “*” and a “#”. I will do it in two ways. First, I'll use the keypad library that comes with the Arduino IDE in a sketch that reads the keypad, while the keypad is connected in parallel. In demo 2 I will show you how to hack together a solution that allows a connection that uses a single signal pin.

Parts

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

12:25

This is Part 2 of 5 of the keypad lecture. In this lecture, I will go through the parallel wiring for the keypad. In Part 3 I explain the sketch that works with this hardware configuration.

Parts

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

05:14

This is Part 3 of 5 of the keypad lecture. Here I describe the sketch that works with the parallel wiring of the keypad. This configuration was demonstrated in Part 2.

Parts

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

12:35

This is Part 4 of 5 of the keypad lecture. Here I describe an alternative way to connect the keypad that only uses one signal wire. The single wire configuration concludes in Part 5.

Parts

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

11:32

This is Part 5 of 5 of the keypad lecture. Here I conclude the discussion of the single wire connection configuration.

Parts

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

Hardware button deboucing
Text
17:08

This 3-part lecture looks into the conductive rotary encoder, the most common type of rotary encoders.

In this first part of the lecture, I discuss the various types and principal of operation of this device.

13:36

This 3-part lecture looks into the conductive rotary encoder, the most common type of rotary encoders.

In this second part of the lecture, I demonstrate a minimal circuit involving a rotary encoder that doesn't work very well due to the "bouncing" effect of the encoder's electrical conductive contacts.

10:34

This 3-part lecture looks into the conductive rotary encoder, the most common type of rotary encoders.

In this third part of the lecture, I demonstrate an upgraded circuit where I add debouncing and an improved version of the sketch where I add simple software debouncing. These two additions improve the accuracy of the rotary encoder.

Section 4: Displays
14:40

This 2-part lecture will show you how to connect and use and LCD character screen. In part 1, I'll show you how to wire up the screen and display a message on it. And in part 2, we'll connect a sensor and display its readings to the screen.

Parts

* An LCD screen. See External Resources for an example from eBay. No need for a shield unless you really want to. Also, best NOT to buy an 2x8 screen since those come with their pins arranged in two rows which makes it a big pain to connect to your Arduino. When pins are arranged in two rows, you can't use a breadboard as is, you will need to make an adaptor. Avoid!

* The DHT22 or DHT11 sensor.

* A potentiometer.

07:50

This is part 2 of the lecture on the LCD screen. In this lecture, we expand the project from part 1 by adding a DHT22 sensor and displaying its readings to the screen.

Parts

* An LCD screen. See External Resources for an example from eBay. No need for a shield unless you really want to. Also, best NOT to buy an 2x8 screen since those come with their pins arranged in two rows which makes it a big pain to connect to your Arduino. When pins are arranged in two rows, you can't use a breadboard as is, you will need to make an adaptor. Avoid!

* The DHT22 or DHT11 sensor.

* A potentiometer.

15:40

In the LCD Lecture, you learned how to display text in a LCD screen. Although this was a simple way to show useful information to the user, the sheer number of wires required to make the LCD screen work makes this solution far from elegant.

In this lecture, I will show you a much-improved solution to the same problem, one that involves a single data wire (plus power).

To achieve this reduction in total number of wires we have to switch the type of interface we use to connect the screen to the Arduino. Natively, the screen uses a parallel interface, where each of the 8 bits that make up a character encoding uses up a wire. You may remember that in Lecture 24, use used a 4-bit parallel mode instead of the full 8-bits in order to save 4 wires. Still, even 4 wires are too many for transferring data. We also needed wires for power, and for the screen backlit.

To improve the design, we'll use an adaptor that allows us to connect the parallel LCD screen to the Arduino using the I2C serial bus.

The adapter I'll use in the demos is the 1602LCD Display I2C board.

In this part 1, I'll show you how to connect the LCD adaptor to the screen and to the Arduino, and make sure it works.

In Part 2, I'll show you how to connect a second I2C device to the circuit from Demo 1 (in Part 1 of this lecture). The second device is a real-time clock.

IMPORTANT! If your I2C adaptor uses a different I2C address to mine, you will need to change it in your sketch. If you don't know what your adaptor's address is, you can find it by running an I2C scanner sketch on your Arduino with the adaptor connected. The address for the I2C scanner sketch is in the External Resources.

Parts

* An Arduino Uno

* A 16x2 LCD screen (see External Resources for an example).

* A 1602LCD Display I2C board (see External Resources for an example).

* A few jumper wires, including one 4-pin jumper (Dupont) cable for the adapter (see External Resources for an example).

07:41

In the LCD Lecture, you learned how to display text in a LCD screen. Although this was a simple way to show useful information to the user, the sheer number of wires required to make the LCD screen work makes this solution far from elegant.

In this lecture, I will show you a much improved solution to the same problem, one that involves a single data wire (plus power).

To achieve this reduction in total number of wires we have to switch the type of interface we use to connect the screen to the Arduino. Natively, the screen uses a parallel interface, where each of the 8 bits that make up a character encoding uses up a wire. You may remember that in Lecture 24, use used a 4-bit parallel mode instead of the full 8-bits in order to save 4 wires. Still, even 4 wires are too many for transferring data. We also needed wires for power, and for the screen back lit.

To improve the design, we'll use an adapter that allows us to connect the parallel LCD screen to the Arduino using the I2C serial bus.

The adaptor I'll use in the demos is the 1602LCD Display I2C board.

In this Part 2, I'll show you how to connect a second I2C device to the circuit from Demo 1 (in Part 1 of this lecture). The second device is a real-time clock.

IMPORTANT! If your I2C adaptor uses a different I2C address to mine, you will need to change it in your sketch. If you don't know what your adaptor's address is, you can find it by running an I2C scanner sketch on your Arduino with the adaptor connected. The address for the I2C scanner sketch is in the External Resources.

Parts

* An Arduino Uno

* A 16x2 LCD screen (see External Resources for an example).

* A 1602LCD Display I2C board (see External Resources for an example).

* A few jumper wires, including one 4-pin jumper (Dupont) cable for the adapter (see External Resources for an example).

Text

This is a mini project to test your skill and knowledge. Bragging rights are awarded on succesful completion!

Exercises for the LCD with I2C lectures
4 questions
16:42

In this lecture, I show you have to add a TFT LCD screen to your Arduino project in order to produce colourful text and shapes. The lecture contains two demos in which I demonstrate one of the common TFT LCD shields. In the first one, I show you how to use the screen itself, while in the second how to use the 5-button joystick that is integrated into the screen shield.

Parts

* Apart from the Arduino Uno or compatible, you will need a TFT LCD screen. The one I used, is this.

Documentation

The documentation for the screen I use in this lecture is here.

Quiz for the LCD TFT lecture
1 question
11:31

In this lecture, you will learn how to use a seven segment display using only three wires: one for data, one for clock, and one for the latch. Because there are so many SSD out there, I will assume that you don't have your particular display's datasheet and have no idea which pin controls the pins. I will describe the process of figuring out the correct wiring and then constructing the numerical symbols in the sketch.

Please consider watching the Lectures on Shift Registers if you are not familiar with this component as it is central to driving the seven-segment display. The lectures on shift registers is in the section titled "Integrated Circuits Peripherals".

In part one, I show you how to assemble the circuit. In part two, I discuss the sketch.

Parts:

* Arduino Uno

* A common anode seven segment LED display

* A 9-volt battery or battery pack, or an external power supply that can provide 9 to 15V power.

* A 595 shift register

* A 1.5V coin battery

* A 5mm LED

* Lot's of jumper wires

* A mini breadboard

A list of all parts is available on Google Drive.

14:31

In this lecture, we will build on our knowledge from Lecture 60, where you learned how to use a shift register in order to control multiple LEDs using only three wires: one for data, one for clock, and one for the latch. Because there are so many SSD out there, I will assume that you don't have your particular display's datasheet and have no idea which pin controls the pins. I will describe the process of figuring out the correct wiring and then constructing the numerical symbols in the sketch.

Please consider watching the Lectures on Shift Registers if you are not familiar with this component as it is central to driving the seven-segment display. The lectures on shift registers is in the section titled "Integrated Circuits Peripherals"

In part one, I show you how to assemble the circuit. In part two, I discuss the sketch.

Parts

* Arduino Uno

* A common anode seven segment LED display

* A 9-volt battery or battery pack, or an external power supply that can provide 9 to 15V power.

* A 595 shift register

* A 1.5V coin battery

* A 5mm LED

* Lot's of jumper wires

* A mini breadboard

A list of all parts is available on Google Drive.

23:05

In this lecture, I will show you how to use the MAX7219 LED controller IC with a single 8x8 matrix LED display. You can combine these two components together to create large LED matrix displays, but in this lecture we'll keep it simple. In a separate lecture, we'll expand to multi-display setups.

In this Part 1 of the lecture, I'll show you how to create shapes, simple animations and text on the screen.

06:58

In this Part 2 of the MAX7219 lecture, we'll create a simple visualisation from data coming out of an accelerometer.

The sketch is available on Github.

Section 5: Motors
18:12

In this lecture I will show you how to use a DC motor through a series of demos. All involve two geared DC motors (why use just one when we can use two?) and a motor break-out circuit. I'll explain what these are in a minute. Here's what we are going to build in this lecture:

  • First, we'll just hook the motors to the Arduino via the motor break-out board, and make them spin in a single direction. This is part 1 of 3.
  • Second, we'll get the motors spinning forwards and backwards using a potentiometer as a controller. This is part 2 of 3.
  • Third, we'll use an ultrasonic sensor to get the motors to spin faster or slower depending on the distance between the sensor and an object in front of it. This is part 3 of 3.

Because this lecture turned out to be fairly large, I have broken it into three parts.

Parts

* A DC motor, perhaps from an old toy.

* A motor controller board containing the L298N IC.

* A battery powerpack (preferred) or external power supply that can provide 10V-18V.

* A potentiometer.

08:00

This is Part 2 of the lecture on the direct current motor. In this part, you will learn about how to control the speed and direction of rotation of a motor using a potentiometer.

Parts

* A DC motor, perhaps from an old toy.

* A motor controller board containing the L298N IC.

* A battery powerpack (preferred) or external power supply that can provide 10V-18V.

* A potentiometer.

12:05

This is Part 3 of the lecture on the direct current motor. In this part, you will learn about how to control the speed and direction of rotation of a motor using an ultrasonic distance sensor. After that, you could go ahead and design your fist autonomous driving vehicle.

Exercises for the Direct Current motor lectures
2 questions
15:23

In this Lecture, we will learn about how to use a servo motor. We will use both the build-in servo motor library that comes standard with the Arduino IDE, and a third party library that adds a bunch of very useful features.

Parts

* Servos. Most of these will work just fine. Price depends on the rated torque, materials used (plastic the least expensive), and bundled accessories.

* Capacitors.

* Potentiometer

11:14

This is part 2 of the lecture on the servo motor in which I show you how to use a third party library that adds a bunch of very useful features on top of what is available through the build-in servo library.

Parts

* Servos. Most of these will work just fine. Price depends on the rated torque, materials used (plastic the least expensive), and bundled accessories.

* Capacitors.

* Potentiometer

Exercises for the servo motor lectures
1 question
Text

Here's a mini project to stretch your understanding of servo motors and LCD screens!

07:32

This lecture will introduce you to stepper motors.

In Part 1, I discuss the basics of stepper motors and their most typical configurations.

All demo sketches are available on Github (see External Resources below for a link).

Parts

* 12V DC 48 Step motor (see External Resources below for a link)

* L298N motor controller (see External Resources below for a link)

Notes

* Small stepper motors (see External Resources below for a link)

* About DC motors (see External Resources below for a link)

* A presentation on stepper motors (see External Resources below for a link)

* Stepper motors on Wikipedia (see External Resources below for a link)

11:39

This lecture will introduce you to stepper motors.

In Part 2, I show you how to wire up and use a unipolar un-geared motor.

All demo sketches are available on Github (see External Resources below for a link).

Parts

* 12V DC 48 Step motor (see External Resources below for a link)

* L298N motor controller (see External Resources below for a link)

Notes

* Small stepper motors (see External Resources below for a link)

* About DC motors (see External Resources below for a link)

* A presentation on stepper motors (see External Resources below for a link)

* Stepper motors on Wikipedia (see External Resources below for a link)

06:17

This lecture will introduce you to stepper motors.

In Part 3, I show you how to control the speed of an un-geared using a potentiometer.

All demo sketches are available on Github (see External Resources below for a link).

Parts

* 12V DC 48 Step motor (see External Resources below for a link)

* L298N motor controller (see External Resources below for a link)

Notes

* Small stepper motors (see External Resources below for a link)

* About DC motors (see External Resources below for a link)

* A presentation on stepper motors (see External Resources below for a link)

* Stepper motors on Wikipedia (see External Resources below for a link)

05:05

This lecture will introduce you to stepper motors.

In Part 4, I show how to connect a unipolar geared motor.

All demo sketches are available on Github (see External Resources below for a link).

Parts

* 12V DC 48 Step motor (see External Resources below for a link)

* L298N motor controller (see External Resources below for a link)

Notes

* Small stepper motors (see External Resources below for a link)

* About DC motors (see External Resources below for a link)

* A presentation on stepper motors (see External Resources below for a link)

* Stepper motors on Wikipedia (see External Resources below for a link)

07:50

This lecture will introduce you to stepper motors.

In Part 5, I show how to connect a unipolar geared motor and control it using the AccellStep library.

All demo sketches are available on Github (see External Resources below for a link).

Parts

* 12V DC 48 Step motor (see External Resources below for a link)

* L298N motor controller (see External Resources below for a link)

Notes

* Small stepper motors (see External Resources below for a link)

* About DC motors (see External Resources below for a link)

* A presentation on stepper motors (see External Resources below for a link)

* Stepper motors on Wikipedia (see External Resources below for a link)

18:29

In this lecture I show you how to control a NEMA17 stepper motor with the popular EasyDriver breakout board.

The demo sketches are available from the Arduino SbS Github repository (link is in External Resources below).

Section 6: Ethernet and Internet communications
24:08

In this 2-part lecture I will show you how to get your Arduino gadget to speak to the Internet! In part 1, I will show you how to connect your Ethernet shield, and how to make your Arduino part of your local network. Specifically, I will show you how to connect to the network by automatically acquiring an IP address via DHCP, or how to acquire an IP address manually.

In the 2nd part, I will show you how to turn on and off an LED, and to read light intensity through a Telnet connection to your Arduino from your computer.

Parts

* Arduino Uno

* Arduino Ethernet shield.

14:18

In this 2-part lecture I will show you how to get your Arduino gadget to speak to the Internet!

In part 1, I will showed you how to connect your Ethernet shield, and how to make your Arduino part of your local network. Specifically, I will show you how to connect to the network by automatically acquiring an IP address via DHCP, or how to acquire an IP address manually.

In this 2nd part, I will show you how to turn on and off an LED, and to read light intensity through a Telnet connection to your Arduino from your computer.

Parts

* Arduino Uno

* Arduino Ethernet shield.

* An LED

* A 1kΩ resistor

Ethernet shield - Quiz
2 questions
05:04

In this lecture, we'll look into the scenario of using a web server running on the Arduino that reports values from its sensors.

In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

In part 2, we will examine the web server example that comes with the Arduino IDE.

In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

Parts

To complete the experiments in all three parts of this lecture, you will need:

* An Arduino

* An Arduino Ethernet shield

* A DHT11 or 22 sensor

* A photo-resistor

* A 10KΩ resistor

Sketches

The sketches shown in this lecture are available on Github. Please look at External Resources for a link.

19:39

This is Part 2 (of 3) of the reporting web server lecture.

In this lecture, we look into the scenario of using a web server running on the Arduino that reports values from its sensors.

In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

In part 2, we will examine the web server example that comes with the Arduino IDE.

In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

Parts

To complete the experiments in all three parts of this lecture, you will need:

* An Arduino

* An Arduino Ethernet shield

* A DHT11 or 22 sensor

* A photo-resistor

* A 10KΩ resistor

Sketches

The sketches shown in this lecture are available on Github. Please look at External Resources for a link.

10:33

This is Part 3 (of 3) of the reporting web server lecture.

In this lecture, we look into the scenario of using a web server running on the Arduino that reports values from its sensors.

In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

In part 2, we will examine the web server example that comes with the Arduino IDE.

In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

Parts

To complete the experiments in all three parts of this lecture, you will need:

* An Arduino

* An Arduino Ethernet shield

* A DHT11 or 22 sensor

* A photo-resistor

* A 10KΩ resistor

Sketches

The sketches shown in this lecture are available on Github. Please look at External Resources for a link.

Simple reporting server - Quiz
1 question
25:29

In this lecture, I will show you how to setup a web server on the Arduino that allows you to control LEDs via a web browser. You could replace the LEDs for other devices, like motors, without having to introduce significant changes to the sketch we’ll see here. We will do this in the next lecture (Lecture 39).

Just like in lecture 35, we first look at the HTTP request parsing issues that we will need to deal with before implementing the controlling web server sketch. Because the web browser will be sending information with instructions to the Arduino, the Arduino’s web server HTTP parser will have a lot more work to do.

Parts

* An Arduino

* An Arduino Ethernet shield

* One red LED

* One yellow LED

* Two 10KΩ resistors

* Four jumper wires

Controlling web server - Quiz
3 questions
16:40

In this lecture, I’ll show you how to send HTTP GET requests that contain values other than 1s and 0s as we did in the previous Lectures. To do that I will demonstrate how you can control a DC motor through your web browser. Motor control requires sending direction and speed values to the Arduino from your web browser, and this adds realism to our controlling web server.

Parts

* An Arduino

* An Arduino Ethernet shield

* One or two DC motors

* An L298N motor control bridge

* A battery pack with 4 x 1.5V AA bateries or a 18V-9V power supply

* A bunch of jumper wires

Web motor control - Quiz
2 questions
08:58

In this lecture I show you how to use a cloud logging service, Nimbits, to record your Arduino's sensor data. Nimbits is one of several such services, but I prefer it to others because it is fully open-source software, which means that you can even setup your own logging server with Nimbits.

In part 1 of this lecture, I will talk a bit about logging services and show you how to setup your Nimbits account.

In part 2, I will walk through the logging sketch and post photo-resistor values to Nimbits.

IMPORTANT PLEASE READ BEFORE WATCHING THIS LECTURE:

Nimbits has released a new version of their API which has rendered part of this lecture out of date.

I have updated the sketch on Github so that it works with the latest changes in Nimbits.

Please read the notes in the root of the folder on Github, there's a couple of things worth knowing about the changes. The code is still fairly simple. (The link to the sketch on Github is below)

Any problems, please let me know. I'll be updating the video as soon as possible.


Parts

* An Arduino

* An Arduino Ethernet shield

18:48

In this lecture I show you how to use a cloud logging service, Nimbits, to record your Arduino's sensor data. Nimbits is one of several such services, but I prefer it to others because it is fully open-source software, which means that you can even setup your own logging server with Nimbits.

In part 1 of this lecture, I will talk a bit about logging services and show you how to setup your Nimbits account.

In part 2, I will walk through the logging sketch and post photo-resistor values to Nimbits.

IMPORTANT PLEASE READ BEFORE WATCHING THIS LECTURE:

Nimbits has released a new version of their API which has rendered part of this lecture out of date.

I have updated the sketch on Github so that it works with the latest changes in Nimbits.

Please read the notes in the root of the folder on Github, there's a couple of things worth knowing about the changes. The code is still fairly simple. (The link to the sketch on Github is below)

Any problems, please let me know. I'll be updating the video as soon as possible.

Parts

* An Arduino

* An Arduino Ethernet shield

Nimbits Lecture - Quiz
1 question
16:33

In this lecture I will show you how to post your Arduino sensor data to Twitter using the arduinoTweet proxy server and library. You can setup your own instance of this proxy on your own server (you can use a free virtual server on Google's App Engine cloud service) so that you can control privacy and access, or use public instances like arduino-tweet.appspot.com or my own asbs-twitter.appspot.com.

In this lecture, I'll show you how to set up your tweeting Arduino using asbs-twitter.appspot.com as the proxy. In the first demo, you will learn about getting the first tweet out there, and in the second, to post sensor data.

Parts

* An Arduino Uno

* An Arduino Ethernet shield

* An analog sensor, which ever you have handy.

Logging to Twitter - Quiz
1 question
Section 7: Wireless communications
12:35

In this lecture, you will learn how to use a Bluetooth breakout board to create a wireless serial connection between your computer and your Arduino. With this connection, your Arduino will be able to send and receive data to and from your computer.

There are 2 parts in this lecture. In the first part, I discuss some basic concepts around Bluetooth, and compare with other wireless technologies, then in demo 1, I demonstrate how to connect the breakout board with the Arduino and establish a serial channel.

In the second part there are 2 demos. In the first demo, I show how to do 2-way communication, and in the second demo I how to use software serial (instead of hardware serial as in demos 1 and 2).

Parts

* An Arduino Uno,

* An LED

* A photo-resistor (or other analog sensor)

* 2 x 1KΩ resistors

* A Bluetooth breakout board, like the one I used (HC-06).

09:51

In this lecture, you will learn how to use a Bluetooth breakout board to create a wireless serial connection between your computer and your Arduino. With this connection, your Arduino will be able to send and receive data to and from your computer.

There are 2 parts in this lecture. In the first part, I discuss some basic concepts around Bluetooth, and compare with other wireless technologies, then in demo 1, I demonstrate how to connect the breakout board with the Arduino and establish a serial channel.

In the second part (this) there are 2 demos. In the first demo, I show how to do 2-way communication, and in the second demo I how to use software serial (instead of hardware serial as in demos 1 and 2).

Parts

* An Arduino Uno,

* An LED

* A photo-resistor (or other analog sensor)

* 2 x 1KΩ resistors

* A Bluetooth breakout board, like the one I used (HC-06).

Bluetooth - Quiz
3 questions
02:46

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

If your CC3000 is not resolving domain names properly, you may need to upgrade its firmware. This is an easy process. I have created a Lecture to show you how to do this - it is available further down in this section.

--------------------------------------------------------------------

In an earlier Lecture, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we'll again connect the Arduino to the Internet, but we'll do that using Wifi, and go completely wireless!

For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we'll connect the CC3000 to the Arduino and run one of the library's examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I'll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from the Ethernet lecture, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

Parts

* An Arduino Uno

* The Adafruit CC3000 Wifi module

* An LED

* A 1kΩ resistor

* Access to a Wifi access point.

Sketches for this lecture

* Github (a link is available in External Resources)

25:32

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

If your CC3000 is not resolving domain names properly, you may need to upgrade its firmware. This is an easy process. I have created a Lecture to show you how to do this - it is available further down in this section.

--------------------------------------------------------------------

In an earlier Lecture, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we'll again connect the Arduino to the Internet, but we'll do that using Wifi, and go completely wireless!

For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we'll connect the CC3000 to the Arduino and run one of the library's examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I'll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from the Ethernet lecture, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

Parts

* An Arduino Uno

* The Adafruit CC3000 Wifi module

* An LED

* A 1kΩ resistor

* Access to a Wifi access point.

Sketches for this lecture

* Github (a link is available in External Resources)
19:34

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

If your CC3000 is not resolving domain names properly, you may need to upgrade its firmware. This is an easy process. I have created a Lecture to show you how to do this - it is available further down in this section.

--------------------------------------------------------------------

In an earlier Lecture, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we'll again connect the Arduino to the Internet, but we'll do that using Wifi, and go completely wireless!

For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we'll connect the CC3000 to the Arduino and run one of the library's examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I'll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from the Ethernet lecture, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

Parts

* An Arduino Uno

* The Adafruit CC3000 Wifi module

* An LED

* A 1kΩ resistor

* Access to a Wifi access point.

Sketches for this lecture

* Github (a link is available in External Resources)
06:59

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

If your CC3000 is not resolving domain names properly, you may need to upgrade its firmware. This is an easy process. I have created a Lecture to show you how to do this - it is available further down in this section.

--------------------------------------------------------------------

In an earlier Lecture, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we'll again connect the Arduino to the Internet, but we'll do that using Wifi, and go completely wireless!

For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we'll connect the CC3000 to the Arduino and run one of the library's examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I'll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from the Ethernet lecture, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

Parts

* An Arduino Uno

* The Adafruit CC3000 Wifi module

* An LED

* A 1kΩ resistor

* Access to a Wifi access point.

Sketches for this lecture

* Github (a link is available in External Resources)
10:09

In this lecture, I show you how to upgrade the firmware in your CC3000. It is an easy process: connect your CC3000 module to your Arduino just like you did in the other CC3000 lectures, and run the upgrade sketch from the Arduino IDE v1.0.6 or earlier.

An upgrade to the latest version of the firmware (at the moment, that is 1.14), will fix a problem with the DNS resolution.

20:16

In this lecture I show you how to use the cheap and reliable NRF24L01+ transceiver module. With this module you can achieve reliable point to point communications. I am showing you the basics so you can go on creating sophisticated wireless systems, including mesh sensor arrays!

You can download the sketch used in the demo from Github (see External Resources for a link).

12:09

In this 4-part lecture I discuss Bluetooth Low Energy (BLE). It is a relatively new member of the Bluetooth standard, and has been responsible for the emergence of countless low-power mobile and wireless devices, like activity trackers, wireless headphones, lost item locators etc.

In this 1st part, I discuss BLE and it's most important characteristics.

04:50

In this 4-part lecture I discuss Bluetooth Low Energy (BLE). It is a relatively new member of the Bluetooth standard, and has been responsible for the emergence of countless low-power mobile and wireless devices, like activity trackers, wireless headphones, lost item locators etc.

In this 2nd part, I discuss the Adafruit nRF8001 BLE module, and wire it to my Arduino.

13:13

In this 4-part lecture I discuss Bluetooth Low Energy (BLE). It is a relatively new member of the Bluetooth standard, and has been responsible for the emergence of countless low-power mobile and wireless devices, like activity trackers, wireless headphones, lost item locators etc.

In this 3rd part, I demonstrate the Adafruit nRF8001 BLE module using the demo sketches that ship with the Adafruit library.

07:48

In this 4-part lecture I discuss Bluetooth Low Energy (BLE). It is a relatively new member of the Bluetooth standard, and has been responsible for the emergence of countless low-power mobile and wireless devices, like activity trackers, wireless headphones, lost item locators etc.

In this 4th part, I discuss the Firmata protocol, a popular way to control an Arduino remotely via various kinds of data transport technologies. I demonstrate how you can use an nRF8001 module to read and write state of the Arduino's pin.

Section 8: External storage
13:56

In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

SD cards have matured over the years. Their sizes have expanded to many gigabytes, and their prices have dropped to a few cents per gigabyte. Compared to build-in memory, SD cards offer a really good mass storage solution. On the Arduino, an SD card can be used with the appropriate hardware extension and with an easy to use library that comes with the IDE. Your Arduino Ethernet shield comes with a micro-SD card slot, but you can also get them as a separate breakout board. In this lecture, I opted to use a dedicated, small and cheap break-out board.

In Part 1, I will show you how to connect the SD card module to the Arduino, format an SD card, and verify that it can be used.

Parts

* An Arduino

* An SD Card socket reader/writer

* A bunch of jumper wires

10:31

In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

In Part 2, I will show you how to store sensor measurement data to the SD card, and import to Excel for charting.

Parts

* An Arduino

* An SD Card socket reader/writer

* A bunch of jumper wires

09:48

In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

In Part 3, I will show you how to use a recursive function in order to excaustively traverse files and directories.

Parts

* An Arduino

* An SD Card socket reader/writer

* A bunch of jumper wires

SD Card lecture - Quiz
1 question
10:58

EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

In this first demo, we'll use two sketches to write and read a pin number for a basic security system. The writing sketch will write the default pin in a specific internal EEPROM memory location, and the reading sketch will simply go to that location and read back the pin. Keeping things simple, we are not going to worry about LCD screens, a keypad for the pin entry, or encryption for storing the pin securely.

Parts

Just your Arduino

Sketches: At Github (see link in External Resources)

05:36

EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

In this Lecture, I'll show you a way to abstract the way that data is written to and read from the EEPROM in a bid to speed up your personal productivity.

Parts:

Just your Arduino

Sketches: At Github (see link in External Resources)

10:39

EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

In this Lecture, I'll show you how to use the Atmel 24C256 chip, which provides 256KBytes of external EEPROM memory.

Parts

* Arduino Uno

* Atmel 24C256 breakout

Sketches: At Github (see link in External Resources)

Section 9: Taking a closer look at the Atmega microcontroller
12:16

This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

In this first demo, we'll take the circuit from the button lecture and only modify the sketch it so that the LED is lit as a response to an interrupt generated by the button, instead of by polling the state of the button a few million times per second.

All sketches in this lecture can be downloaded from Github (please find link in External Resources).
05:17

This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

In the second demo, we'll add a volatile variable which the code in the interrupt request function will be able to access and update.

This variable will keep track of the number of times that we have pressed on the button.

All sketches in this lecture can be downloaded from Github (the link is in External Resources).

05:08

This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

In this demo, we'll make an LED blink by setting a timer to trigger an interrupt once every second.

All sketches in this lecture can be downloaded from Github (the link is in External Resources).

06:11

This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

The TimerOne library also contains several other useful functions that you can explore. One of them provides that ability to create very accurate PWM output. In this fourth demo, I'll show you how to use the TimerOne library to create a PWM pulse.

All sketches in this lecture can be downloaded from Github (the link is in External Resources).

07:16

In this lecture, I show how to use the Atmega's internal pull-up resistor on it's output pins. This is a convenience feature that will save you from having to use external pull-up resistors.

05:49

In this lecture, we'll look at some design and programming principles you can follow to make better use of your Arduino's limited memory resources.

This is Part 1, and it discusses ways to optimize the use of the Flash memory.

07:52

In this lecture, we'll look at some design and programming principles you can follow to make better use of your Arduino's limited memory resources.

This is Part 2, and it discusses ways to optimize the use of the SRAM memory.

23:40

In this lecture, I will show you three ways by which you can extend the life of a battery so that your Arduino-powered device can operate for very long periods of time.

I will discuss three ways of doing that.

First, by using a simple library called Narcoleptic, which makes it very easy to place the CPU of the Atmega to sleep mode.

Second, we will look at the power down mode that is available in AVR microcontrollers by which we can achieve the maximum reduction in power consumption.

Third, I will show you a technique that can further reduce power consumption in these applications for the periods of time when the microcontroller out of sleep mode. This technique is based on the ability of AVR microcontrollers to change their clock speed.

The sketches used in this lecture are available on Github (see link in External Resources).

Section 10: Integrated circuit peripherals
07:16

In cases where you need to use a push button, relays or switch (or anything mechanical used to close a circuit), like we saw in Lectures 15 and 28, we have a situation where metal comes in contact with metal in order to close the circuit. These contacts are never perfect, and as a result instead of getting one clean connection, you get multiple ones.

In this lecture, we will look at how we can achieve “de-bouncing”, which means how to get contacts to output a clean signal when they are closing or opening.

Part 1 is an introduction to debouncing. In Part 2, I show how to use a Schmitt trigger.

Parts

* 74HC14 - Schmitt trigger IC (See external resources for a link to eBay)

08:51

In cases where you need to use a push button, relays or switch (or anything mechanical used to close a circuit), like we saw in Lectures 15 and 28, we have a situation where metal comes in contact with metal in order to close the circuit. These contacts are never perfect, and as a result instead of getting one clean connection, you get multiple ones.

In this lecture, we will look at how we can achieve “de-bouncing”, which means how to get contacts to output a clean signal when they are closing or opening.

Part 1 was an introduction to debouncing. In this Part 2, I show how to use a Schmitt trigger.

Parts

* 74HC14 - Schmitt trigger IC (See external resources for a link to eBay)

05:35

In this lecture, I'll show you how to use shift registers to multiply the available digital outputs. Part 1 is an introduction to shift registers, where I explain how these devices work.

The source code for the sketches from the two demos is available for download on Github (see link in External Resources).

Parts:

* 2 x 74HC595N shift register chips

* 16 x 5mm LEDs

* 2 x 220μF capacitors

* 16 x 200Ω resistors

03:50

In this lecture, I'll show you how to use shift registers to multiply the available digital outputs. Part 2 sets up the first demonstration, where the Arduino controls 8 LED via a shift register

The source code for the sketches from the two demos is available for download on Github (see link in External Resources).

Parts:

* 2 x 74HC595N shift register chips

* 16 x 5mm LEDs

* 2 x 220μF capacitors

* 16 x 200Ω resistors

09:27

In this lecture, I'll show you how to use shift registers to multiply the available digital outputs. Part 3 concludes the first demonstration, where the Arduino controls 8 LED via a shift register

The source code for the sketches from the two demos is available for download on Github (see link in External Resources).

Parts:

* 2 x 74HC595N shift register chips

* 16 x 5mm LEDs

* 2 x 220μF capacitors

* 16 x 200Ω resistors

07:34

In this lecture, I'll show you how to use shift registers to multiply the available digital outputs. Part 4 presents the second demonstration, where the Arduino controls 16 LED via two shift registers connected in daisy-chain.

The source code for the sketches from the two demos is available for download on Github (see link in External Resources).

Parts:

* 2 x 74HC595N shift register chips

* 16 x 5mm LEDs

* 2 x 220μF capacitors

* 16 x 200Ω resistors

14:24

The Arduino Uno has 14 digital I/O pins. That sounds a lot, but it isn't consider that all these pins are multi-functional, so that they are used for tasks other than pure input/output, like Pulse Width Modulation, serial and SPI communications. We saw in an earlier lecture, number 60, that shift registers can be used to provide us with additional digital outputs.

But what about additional digital inputs? In this lecture, I'll show you how to use the MCP23017 IC to easily add a total of 16 digital I/O pins to your Arduino project.

In this Part 1, I'll describe the basics of the MCP23017 IC, and show you how to wire it up.

Parts:

* The MCP23017 IC

* 2 10KΩ resistors

* 2 220Ω resistors

* 1 4.7ΚΩ resistor

* 2 LEDs

* 1 push button

* An Arduino

* Wires

09:13

The Arduino Uno has 14 digital I/O pins. That sounds a lot, but it isn't consider that all these pins are multi-functional, so that they are used for tasks other than pure input/output, like Pulse Width Modulation, serial and SPI communications. We saw in an earlier lecture, number 60, that shift registers can be used to provide us with additional digital outputs.

But what about additional digital inputs? In this lecture, I'll show you how to use the MCP23017 IC to easily add a total of 16 digital I/O pins to your Arduino project.

In this Part 2, I'll show you 2 examples that involve digital input and output functions.

Parts:

* The MCP23017 IC

* 2 10KΩ resistors

* 2 220Ω resistors

* 1 4.7ΚΩ resistor

* 2 LEDs

* 1 push button

* An Arduino

* Wires

15:53

In this 2-part lecture, I'll show you how to use a typical real time clock with your Arduino. I will be using the DFRobot DS1307 RTC breakout, which I purchased on eBay for around $4. This device, like many others, is based on the popular DS1307 clock IC, and it can do anything you would expect a good clock can do. It counts seconds, minutes, hours, days, years, goes up to 2100 and compensates for leap years.

In this Lecture part 1, I show how to connect the RTC module to the Arduino, set the time, and read the time from it. In Lecture part 2, I show how to time-stamp sensor readings and store them in an SD card.

Parts

* DF Robot DS1307

* An Arduino Uno

* Two 1kΩ resistors

* A photo resistor

* A thermistor

07:29

In this 2-part lecture, I'll show you how to use a typical real time clock with your Arduino. I will be using the DFRobot DS1307 RTC breakout, which I purchased on eBay for around $4. This device, like many others, is based on the popular DS1307 clock IC, and it can do anything you would expect a good clock can do. It counts seconds, minutes, hours, days, years, goes up to 2100 and compensates for leap years.

In Lecture part 1, I show how to connect the RTC module to the Arduino, set the time, and read the time from it. This this Lecture part 2, I show how to time-stamp sensor readings and store them in an SD card.

Parts

* DF Robot DS1307 (also search for it on eBay)

* An Arduino Uno

* Two 1kΩ resistors

* A photo resistor

* A thermistor

Exercises for the real time clock Lectures
2 questions
Section 11: Controlling large loads with relays and friends
07:46

In this lecture, I show you how to use a TIP22 Darlington transistor to drive a 12V LED strip.

The simple sketch for this lecture is available on the Arduino SbS Github repository (see External Resources for the link).

Instructor Biography

Peter Dalmaris , Tech Explorer

Peter is Chief Explorer at Tech Explorations. He is fascinated by technology because of its ability to make amazing things happen, and science because of its ability to make nature transparent.

He is an Electrical and Computer Engineer, has a PhD (most of which was spent reading philosophy of knowledge) and a couple of Masters in Information Systems.

He has been a lecturer for over 13 years in a variety of IT (and occasionally management) subjects. During this time, he has developed a hands-on teaching style, whereby he invites and challenges his students to learn by doing. He has taught thousands of students in dozens of undergraduate and postgraduate courses.

Peter is also a software developer at Futureshock Enterprises, making applications using Ruby, Ruby on Rails, and iOS.

Peter has been an electronics enthusiast since he remembers himself when he wrecked his sister's digital watch and his parents VCR. He replaced the watch but managed to fix the VCR.

Now, he is particularly fascinated by the rapid prototyping opportunities that the Arduino and similar platforms has brought about.

He lives in Sydney, Australia.

Join the biggest student community

6,400,000

Hours of video content

24,000,000

Course Enrollments

6,800,000

Students

Reviews

Average Rating
4.7
Details
  1. 5 Stars
    72
  2. 4 Stars
    8
  3. 3 Stars
    2
  4. 2 Stars
    3
  5. 1 Stars
    1
    • Henp

    Excellent Course For Beginners

    Got me from working on the code for the Arduino to coding in C, C++, C# and java.. working on a secrete project :) Great teacher, everything in not too slow, not to fast! I rarely skipped backwards in the videos. Also every thing is organized, makes it easier to find a subject that your working on, Loving it ! :) If you're DIY person, You will not regret this Course!

    • Mike Romans

    This is the best Arduino course at ANY cost!

    Very very good course, great teacher, always updating, source on github, covers tons of sensors and concepts from beginner to expert! Best class of any type I have ever taken and I've been in this industry for 30 years.

    • Gabriel Ruiz

    COMPLETE care!

    Not only are the lesson good and complete, But Dr. Peter is fast to answer questions when you get stock. Worth the price at any price.

    • Roberto Burgos

    Simply amazing

    Nice course with regular updates and great quality contents. Recommended.

    • Gabriel Esteban Serrano

    Great course!

    I'd just like to have a few more explanations about the theory under every circuit. How to select a resistance and things like that but, anyway, it is a great course to get started with Arduino.

Show more reviews
Ready to start learning?
Preview this course