C++ Programming (Implemented With An Arduino)
C++ implemented on an Arduino & Other Micro Controllers
C++ implemented on an Arduino & Other Micro Controllers
This Unit is all about learning to use the Arduino Micro-controller and Learning to program it with C and C++. While the goal is to learn C++, the main goal of this Unit is to learn to programmatically access sensors and other input devices, act on them with a control program, and then manipulate outputs to actually control the real world. I teach C++ before I teach Python, not because I think it's a better language, but rather because I want to use the Arduino hardware platform first.
This C++ Programming Unit is intended to introduce students not just the syntax of coding, but to the concept of Design Thinking when playing with an Arduino or planning and writing a C or C++ Program. While we will learn basic C++, we will actually focus on the libraries and specific syntax used when programming an Arduino and other micro controllers. For all practical purposes we are learning C, because we really are not going to get too deep into the Object Oriented aspects of C++.
Learning Objective:
Inspire Life Long Learning by applying concepts like Design Thinking and Computational Thinking, Top Down Design and step by step Problem Decomposition and Debugging
Students will have a basic, but fundamental knowledge of setting up, configuring, and connecting an Arduino to the physical world.
Apply Scientific Methods, fundamental principles of computer science to design Top Down, modular and reusable Arduino code
Demonstrate the principles of object-oriented programming and the interplay of algorithms and data structures in well-written modular code;
Solve C & C++ coding exercises and problems requiring the writing of well-documented programs in the C++ language
Demonstrate significant experience with the Arduino IDE program development environment
This is my best attempt to create a C++ & Arduino Resource page for my Mechatronics Engineering class. Let me know how to make this better, what I may be missing, and what I can add. Contact me at TopClown@STEAMClown.org.
I'm a huge supporter of Open Source and Creative Commons resources. This is another way of saying Free, Equitable and Accessible resources... 📽️ 🎧 📰 📖 📝🛠️ 🖼️ - Want to Support Me on this endeavor?
Let's get started... Its going to be a wild, fun, awesome ride...
Web Site: WWW.STEAMCLOWN.ORG | Contact: TopClown@STEAMClown.org | LinkedIn: Jim Burnham | TikTok: STEAM Clown
Consider Supporting my Open Source STEAM Curriculum Development -- Patrion: Jim The STEAM Clown | Amazon: Amazon Classroom Wishlist,
Note: TEACHERS!!!! If you are going to use any of these lessons or labs, please let me know. I would really like to understand how you are using this material. I want to know what works, what does not work, what would you like me to add, and how I can make it better. If you changed something, let me know, because it's probably a good idea and you should share it with me, so I can add it and share with everyone else.
This Module or lesson is how I teach in my class. Many of the lessons might be specific to my class, but you could probably adjust them for your class. I'll try to make them a neutral as I can, so they can be used in any Mathematics, Physics, Computer Science, or any other Engineering / Technology class. Let me know how I can make that better. I'll try to keep this unit current and relevant. Please let me know if any resource links are broken or not accessible.
Send me email at TopClown@STEAMClown.org You can also Join the STEAM Clown's Mailing List. If you want to Unsubscribe, click my Unsubscribe From Mailing List link
I would like to thank <Your Company or Organization Here> for their generous support of my classroom and curriculum development. <Your Company or Organization Here> has <Your value proposition, call to action, & related content and message>
(If you would like to sponsor this, or other Modules or presentation, please contact TopClown@STEAMClown.org or check out my "How To Help Page"
If you would like to sponsor other Curriculum Development, check out my "How To Help Page" or contact TopClown@STEAMClown.org
Primer: "Aaron, I can imagine no way in which this thing could be considered anywhere remotely close to safe. All I know is I spent six hours in there and I'm still alive... You still want to do it?"
As with any activity, please make sure you are using appropriate safety equipment. If you are coding, writing, reading, or working a lab, make sure you stand up and stretch every hour or so, Please consider any safety issues connecting to a Raspberry Pi, Arduino, computers and other electronic equipment.
How does learning C++ on an Arduino help you understand real-world embedded systems used in engineering applications?
In what ways does programming in C++ on Arduino teach you to think critically about hardware-software integration?
Why is C++ a powerful language for engineering problem-solving, especially when working with resource-constrained devices like an Arduino?
Microcontroller - A compact integrated circuit designed to govern a specific operation in an embedded system; the heart of an Arduino board.
Digital and Analog I/O - Input and output signals; digital refers to binary (HIGH/LOW), analog involves a range of values (e.g., from sensors).
Sketch vs Program - A C++ program written in the Arduino IDE, typically composed of setup() and loop() functions.
Variables and Data Types - Core programming concepts including int, float, char, and bool used to store and manipulate data.
Functions - Modular blocks of code that perform specific tasks; include built-in Arduino functions (digitalWrite(), delay()) and user-defined ones.
Control Structures - Programming logic used for decision-making and repetition: if, else, for, while, etc.
Pin Mapping - Assigning functions to physical pins on the Arduino; crucial for circuit interaction and correct I/O operation.
Serial Communication - Data exchange between the Arduino and a computer (or other devices) using protocols like UART via Serial.print().
Library - Pre-written code that extends Arduino functionality—like controlling displays, motors, or sensors easily.
Embedded System - A hardware-software system designed for a dedicated function; Arduino projects exemplify embedded systems in practice.
Online C++ Coding Interpreters
While I teach my C++ coding using the Arduino as the main platform, sometimes you want to just try some code on line.
Replit.com - This is a great free site that you can save and organize your C++ code (not for Arduino Programming)
TinkedCAD - This has a circuits option where you can simulate and code on an Arduino in the browser.
Coding Ground GCC C++ Compiler - This is a Tutorials Point Browser based GCC Compiler
C Shell -
IDEone -
C++ Tutorial
Tutorials Point Arduino C++ Tutorial Page - This is a good tutorial for learning C++ from the folks at Tutorials Point
Online Class you can sign up for:
Udemy - Arduino Workshop 2018 | A step-by-step Arduino how-to guide This is a Udemy class we will be using as a class "text book" resource. You should get a Udemy account and work through each lesson. You should have an Arduino, a breadboard and various electronic components, like resistors, LEDs, and other stuff.
Cursa - Arduino Classes - Free online course
YouTube - Arduino Tutorial - Paul McWharter - https://www.youtube.com/playlist?list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP
Online Books and Guides
Arduino in a Nutshell Rev 1.1.3 (PDF) - Source RWTH Aachen University This is one of the web PDF resources we will be using as a class "text book"
Drivers and Other Tools To Run Arduino's
There are some Arduinos which used a non-standard USB2Serial chip set, and this need a special driver.
Windows - CH341SER_WINDOWS.EXE
Zip File For MAC - CH341SER_MAC.ZIP
Zip File For Linux
Zip File for Android - CH341SER_ANDROID.ZIP
<Overview of the Arduino Rover project and how we will learn about sensors, power, motors and stuff with C++ and Arduinos and Rovers
Over Arching Goals - Arduino & C++ - 📰 Slide Presentation
Goal #1 - Learn basic C++ syntax using a C++/G++ compiler - 📟 Coding / 🛠️ LAB Activity
Goal #2 - Learn how to C++ stuff on an Arduino - 📟 Coding / 🛠️ LAB Activity
Goal #3 - Use the C++ you have learned on an Arduino based Robot Rover - 📟 Coding / 🛠️ LAB Activity
Take the Pre-Quiz to get a better self assessment. Sometimes we feel like we already know a topic, and maybe we can just do a quick review. Other times we find we need to go a little deeper. By taking a quick self assessment, you can measure how much effort you need to put into this section.
Whole Number Pre-Quiz
If you scored 79% or less, you should probably spend a 20-30 min reviewing this section. Even if you scored 100%, it can't hurt to spend 10-15 min.
Arduino Is An Open-source Electronics Platform, with easy to use hardware & software. It is intended for anyone making interactive projects. Arduino can sense & control it’s environment. it is good at receiving information from sensors on input pins. It can be use to affect its surroundings by controlling lights, motors, actuators, etc on output pins. You can tell your Arduino what to do. You can write code in the Arduino programming language of C++.
C++ / Arduino - Arduino Introduction - 📰 Slide Presentation
Signup for the Replit Browser coding IDE - ✍️ Sign Up / - 📰 Slide Presentation
Signup for TinkerCAD (Browser based Arduino simulation) - ✍️ Sign Up / - 📰 Slide Presentation
Overview
C++ Programming - <Title> - 📖 Lesson Tutorial
C++ Programming - <Title> - 📰 Slide Presentation
TINKERCAD - Make learning fun with 3D design, Circuits, and Codeblocks. TinkerCAD not only lets you learn 3D design, simulate electronic circuits and learn to code. You can build a circuit that includes an Arduino, and you can run simulated code. You don't need to have the physical hardware. You can simulate real world hardware on your computer. Re-create ann Arduino, Breadboard & LED lab on your computer. Sign up and play
Sign Up & Create A TinkerCAD Account - ✍️ Sign Up / - 📰 Slide Presentation
C++ Programming - Your First Arduino Design - 📟 Coding / 🛠️ LAB Activity - 📰 Slide Presentation
C++ Programming - Using An Arduino & A Breadboard - 📟 Coding / 🛠️ LAB Activity - 📰 Slide Presentation
If your school has a subscription to the Cisco Network Academy resources, you will have access to this C++ Programming class. It's not the most engaging content, lots of slides with lots of text, but it's good reference and background material. I have a plan to create a Google/Canvas set of lessons that trach this material
C++ Programming - C++ Cisco Networking Academy - 📰 Slide Presentation
Overview
C++ Programming - <Title> - 📖 Lesson Tutorial
C++ Programming - <Title> - 📰 Slide Presentation
Online C++ Coding Interpreters
While I teach my C++ coding using the Arduino as the main platform, sometimes you want to just try some code on line.
Replit.com - This is a great free site that you can save and organize your C++ code (not for Arduino Programming)
TinkedCAD - This has a circuits option where you can simulate and code on an Arduino in the browser.
Coding Ground GCC C++ Compiler - This is a Tutorials Point Browser based GCC Compiler
C Shell -
IDEone -
C++ Tutorial
Tutorials Point Arduino C++ Tutorial Page - This is a good tutorial for learning C++ from the folks at Tutorials Point
Online Class you can sign up for:
Udemy - Arduino Workshop 2018 | A step-by-step Arduino how-to guide This is a Udemy class we will be using as a class "text book" resource. You should get a Udemy account and work through each lesson. You should have an Arduino, a breadboard and various electronic components, like resistors, LEDs, and other stuff.
Online Books and Guides
Arduino in a Nutshell Rev 1.1.3 (PDF) - Source RWTH Aachen University This is one of the web PDF resources we will be using as a class "text book"
Drivers and Other Tools To Run Arduino's
There are some Arduinos which used a non-standard USB2Serial chip set, and this need a special driver.
Windows - CH341SER_WINDOWS.EXE
Zip File For MAC - CH341SER_MAC.ZIP
Zip File For Linux
Zip File for Android - CH341SER_ANDROID.ZIP
Overview
C++ Programming - <Title> - 📖 Lesson Tutorial
C++ Programming - <Title> - 📰 Slide Presentation
Overview
C++ Programming - <Title> - 📖 Lesson Tutorial
C++ Programming - <Title> - 📰 Slide Presentation
Differentiating between machine and high-level languages
Understanding machine code and compilation
Working with variables, integers, and characters
Utilizing comments in code
Basics of flow control
Dealing with streams and basic I/O operations
Writing simple programs
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Overview
C++ / Arduino - <Title> - Lesson Tutorial
C++ / Arduino - <Title> - 📰 Slide Presentation
This Lecture/Lab explores adding a push button switch to turn on an LED. Pullup resistor and Pulldown resistors are shown and used. Why use a Pulldown rather than a Pullup Resistor? You will build a circuit with a pulldown resistor, and write code to sense when a push button switch is pushed, and trun on an LED.
Overview
C++ / Arduino - Button-LED Input-Output - STEAM Clown - Lesson Tutorial (Coming Soon'ish)
C++ / Arduino - Button-LED Input-Output - STEAM Clown - - 📰 Slide Presentation
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Overview
C++ / Arduino - <Title> - Lesson Tutorial
C++ / Arduino - <Title> - Slide Presentation
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Overview
C++ / Arduino - <Title> - Lesson Tutorial
C++ / Arduino - <Title> - Slide Presentation
This Lesson will cover "Asking Questions" and Looping or Iterating. We will explore how C++ asks questions, what the answer can be and what to do based on that answer.
Overview
C++ / Arduino - IF /ELSE IF / ELSE - Lesson Tutorial (Coming Soon)
C++ / Arduino - IF /ELSE IF / ELSE - 📰 Slide Presentation
In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The while loop can be thought of as a repeating if statement.
Overview
C++ / Arduino - While Loops - Lesson Tutorial
C++ / Arduino - While Loops - 📰 Slide Presentation
This Lesson will introduce you to the for loop coding control structure. This loop structure, lets you preform an operation for a specific, pre-calculated number of times.
Overview
C++ / Arduino - For Loops - Lesson Tutorial
C++ / Arduino - For Loops - 📰 Slide Presentation
This Lesson is all about reading the Arduino Analog pins
Overview
C++ / Arduino - Reading Analog Pins - Lesson Tutorial
C++ / Arduino - Reading Analog Pins - 📰 Slide Presentation
This Lesson is an introduction to using an Arduino to read the analog value produced by a Photoresistor in a Voltage divider circuit.
Overview
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Potentiometer - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Potentiometer - 📰 Slide Presentation
This Lesson is an introduction to using an Arduino to read the analog value produced by a Photoresistor in a Voltage divider circuit.
Overview
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Photoresistor - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Photoresistor - 📰 Slide Presentation
This Lesson is all using an Ultrasonic sensor to measure distance. Using the Arduino, you can make decisions about how close or fare something is. If a wall is too close, stop the robot. Sound an alarm if an object is moved too far away...
Overview
C++ / Arduino - Ultrasonic - Measuring Distance Lab - Lesson Tutorial
C++ / Arduino - Ultrasonic - Measuring Distance Lab - 📰 Slide Presentation
This Lesson is all using LCD display to communicate with a User
Overview
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - 📰 Slide Presentation
This Lesson is all using LCD display to do more than just display a message. In this Lesson/Lab, you will create a menu structure to let a user make choices and selections to control a program flow.
Overview
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - 📰 Slide Presentation
Let's make some sound. The Arduino can create Tones, and you can use this to create sound and even music
Overview
C++ / Arduino - User Interface & Communication - Sound / Tones Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Sound / Tones Lab - 📰 Slide Presentation
Analog inputs - POT, PHOTO
Analog - five buttons, 1 input
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Overview
C++ Programming - <Title> - Lesson Tutorial
C++ Programming - <Title> - Slide Presentation
Lessons I'm Going To Add
Tell me which to work on first? - Coding & Micro Controller Newsletter
Overview
Introduction to the rotary encoder
Rotary encoder wiring and quadrature encoding
have one motor track a rotory encoder
track motors and have the right match the left
MPU labs
MPU dead reconning
C++ / Arduino - Program Timing - Stop Using delay(1000) - 📰 Slide Presentation
C++ / Arduino - Multiple Buttons on 1 Analog Pin - 📰 Slide Presentation
C++ / Arduino - Program Timing - Interrupts - 📰 Slide Presentation
C++ / Arduino - More on Functions and Libraries - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - 8X8 LED Matrix - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - I2C Communication - RGB LEDS - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - Serial Communication - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - Connecting A Keyboard - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - Graphics on OLED Screen - 📰 Slide Presentation
C++ / Arduino - Sensing The World - IR Reflective Sensors - 📰 Slide Presentation
C++ / Arduino - Sensing The World - Load Sensors - 📰 Slide Presentation
C++ / Arduino - Sensing The World - 9-Axis Sensors - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - Bluetooth Communication - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - WIFI Communication - 📰 Slide Presentation
C++ / Arduino - User Interface & Communication - RFID Communication - 📰 Slide Presentation
Still thinking...
Lessons I'm Thinking About
This Lesson is all using an Ultrasonic sensor to measure distance. Using the Arduino, you can make decisions about how close or fare something is. If a wall is too close, stop the robot. Sound an alarm if an object is moved too far away...
Tell me which to work on first? - Coding & Micro Controller Newsletter
Overview
Arduino Tutorial 1: Setting Up and Programming the Arduino for Absolute Beginners.
Arduino Tutorial 2: Understanding How Light Emitting Diodes (LEDs) Work.
Arduino Tutorial 3: Understanding How Breadboards Work.
Arduino Tutorial 4: Understanding Arduino Variables.
Arduino Tutorial 5: Understanding and Working With Binary Numbers.
Arduino Tutorial 6: Build an LED Binary Counter.
Arduino Tutorial 7: Understanding the Arduino Analog Write Command.
Arduino Tutorial 8: Understanding Pulse Width Modulation (PWM) and the Arduino Analog Write Command.
Arduino Tutorial 9: Understanding Ohm's Law and Simple Circuit Design.
Arduino Tutorial 10: Understanding How To Read Analog Voltage using analogRead Command.
Arduino Tutorial 11: Understanding the Arduino Serial Port and Print Commands.
Arduino Tutorial 12: Understanding Potentiometers.
Arduino Tutorial 13: Understanding Arduino If Statements.
Arduino Tutorial 14: Dimmable LED Project.
Arduino Tutorial 15: Understanding Arduino For Loops.
Arduino Tutorial 16: Fun With Arduino For Loops.
Arduino Tutorial 17: Understanding Arduino While Loops.
Arduino Tutorial 18: Reading Numbers from the Serial Monitor.
Arduino Tutorial 19: Reading Strings from the Serial Monitor.
Arduino Tutorial 20: Understanding RGB LED's.
Arduino Tutorial 21: Understanding and Mixing Primary Colors with an RGB LED.
Arduino Tutorial 22: Understanding and Using Active Buzzers to Add Sound to Your Project.
Arduino Tutorial 23: Changing Tone of an Active Buzzer.
Arduino Tutorial 24: Understanding Passive Buzzers.
Arduino Tutorial 25: Understanding Photoresistors and Photo Detectors.
Arduino Tutorial 26: More Fun with Photo Resistors.
Arduino Tutorial 27: Understanding Pushbuttons and Pull Up and Pull Down Resistors.
Arduino Tutorial 28: Using a Pushbutton as a Toggle Switch.
Arduino Tutorial 29: Using Push Buttons to Create Dimmable LED.
Arduino Tutorial 30: Understanding and Using Servos in Projects.
Arduino Tutorial 31: Using Servo in a Simple Project.
Arduino Tutorial 32: Understanding and Using Joysticks in a Project.
Arduino Tutorial 33: Understanding How to Control Servos with a Joystick.
Arduino Tutorial 34: Simplest Way to Use a Pushbutton Switch.
Arduino Tutorial 35: Understanding How to Use a Stepper Motor.
Arduino Tutorial 36: Understanding How to Use Tilt Switches in Your Projects.
Arduino Tutorial 37: Understanding How to Control DC Motors in Projects.
Arduino Tutorial 38: Using a Tilt Switch Cut Off With a DC Motor.
Arduino Tutorial 39: Using a Joystick to Control DC Motor Speed and Direction.
Arduino Tutorial 40: Controlling DC Motor Speed and Direction with Pushbuttons.
Arduino Tutorial 41: Understanding Hexadecimal Numbers and Why They Are Important.
Arduino Tutorial 42: Understanding How to Use a Serial to Parallel Shift Register (74HC595).
Arduino Tutorial 43: Binary Counter with 74HC595 Serial to Parallel Shift Register.
Arduino Tutorial 44: Understanding Logical Shift Left and Logical Shift Right with the 74HC595.
Arduino Tutorial 45: Understanding Circular Shift Left and Circular Shift Right with the 74HC595.
Arduino Tutorial 46: HOMEWORK- Create a Binary Bit Flipper with the 74HC595.
Arduino Tutorial 47: Binary and Hexadecimal Bit Flipper.
Arduino Tutorial 48: Connecting and Using an LCD Display.
Arduino Tutorial 49: How to Build a Simple Calculator with LCD Display.
Arduino Tutorial 50: How to Connect and Use the DHT11 Temperature and Humidity Sensor.
Arduino Tutorial 51: DHT11 Temperature and Humidity Sensor with LCD Display.
Arduino Tutorial 52: Portable Temperature and Humidity Sensor with DHT11.
Arduino Tutorial 53: Understanding and Connecting the HC-SR04 Sensor.
Arduino Tutorial 54: Measuring Speed of Sound With HC-SR04 Sensor.
Arduino Tutorial 55: Measuring Distance With HC-SR04 Ultrasonic Sensor.
Arduino Tutorial 56: How to Graph Live Data Using the Serial Plotter.
Arduino Tutorial 57: How to Plot Multiple Channels on the Serial Plotter.
Arduino Tutorial 58: How to Build a Portable Distance Sensor with the HC-SR04 Ultrasonic Sensor.
Arduino Tutorial 59: How To Build a Portable Distance Detector With the Ultrasonic Sensor.
Arduino Tutorial 60: Add a Go Button to your Distance Sensor.
Arduino Tutorial 61: Improving Precision of Your Distance Measurements.
Arduino Tutorial 62: Understanding How to Use Dimensional Analysis.
Arduino Tutorial 63: Dimensional Analysis Example Problems.
Arduino Tutorial 64: Understanding and Using the Infrared (IR) Remote to Control a Project.
Arduino Tutorial 65: Creating Useful Commands from IR Remote Buttons.
Arduino Tutorial 66: Controlling DC Motor, Speed and Direction with a Remote.
ARDUINO TUTORIAL 67: Create a Remote Controlled RGB LED with Brightness and Color Control.
ARDUINO TUTORIAL 68: Make a Remote Controlled RGB LED with Brightness and Color Control.
Introduction to this section
Serial (UART) communications
I²C (TWI) communications
SPI communications
Introduction to this section
An introduction to Arduino programming
Understand the basic parts of an Arduino sketch
Getting started with custom functions
Creating custom functions and the return keyword
Using variables
Understanding variable scope
Understanding constants
Introduction to control structures: The "if" statement
Introduction to control structures: The "while" statement
Introduction to control structures: The "For" statement
Introduction to control structures: The "Switch" statement
Digital output - how to control an LED
Digital input - how to read the state of a button
Analog input - how to read the state of a potentiometer
Analog output - how to create a fading LED
Introduction to the RGB (color) LED
Wiring the RGB LED
RGB LED: creating colors
Using a library to control an RGB LED with PWM
Master your Arduino, starting from scratch
Become confident to create your own Arduino projects
Create an interactive obstacle detection application
Build your own Arduino circuit with many hardware components
Program the Arduino with C/C++
Create an online simulation of the course project
Learn through hands-on lessons
Practice a lot with 20 activities and a big final project
Learn by doing and not just watching
Understand the “why” behind things
Start directly with the best practices
Develop an engineer mindset when solving problems
Setup and optimize the Arduino IDE
Master digital and analog pins
Work with LEDs, push buttons, potentiometers
Communicate between your Arduino and your computer through Serial
Save values on the Arduino with EEPROM
Solve the delay problem with millis and micros
Multitask your programs
Debounce a push button
Discover Arduino interrupts
Use interrupts with the ultrasonic sensor
Measure distances with an ultrasonic sensor
Print text with a 16x2 LCD screen
Control the Arduino with an InfraRed remote controller
Measure luminosity with a photoresistor
Install an Arduino library with different versions
Build simple circuits around the Arduino Uno, that implement simple functions.
Write simple Arduino sketches that can get sensor reading, make LEDs blink, write text on an LCD screen, read the position of a potentiometer, and much more.
Understand what is the Arduino.
Understand what is prototyping.
Understand analog and digital inputs and outputs
Understand the ways by which the Arduino can communicate with other devices
Use the multimeter to measure voltage, current, resistance and continuity
Use protoboards to make projects permanent
be productive with the Arduino IDE, write, compile and upload sketches, install libraries
Understand what is Arduino programming, it's basic concepts, structures, and keywords
Detect and measure visible light, color, and ultraviolet light
Measure temperature, humidity and acceleration
Measure the distance between the sensor and an object in front of it
Detect a person entering a room
Detect a noise
Make noise and play music
Display text on a liquid crystal display
Learn about the Arduino IDE 2.0 and the Arduino Web Editor
Arduino R4 labs <-- Look for more of these
An introduction to the Arduino R4 Wi-Fi
LED matrix
Graphics with frames
How to use the LED matrix editor
How to use the built-in frames
Custom animation
Text
Wi-Fi
List Wi-Fi networks
Connect to a local Wi-Fi network and fetch a URL
Control a local LED via remote CSV file
Web server and matrix control
Real-time clock
EEPROM
This Lesson is all about reading the Arduino Analog pins
Overview
C++ / Arduino - Rube Goldberg - 1 Arduino 1 Sensor 1 Motor - Lesson Tutorial
C++ / Arduino - Rube Goldberg - 1 Arduino 1 Sensor 1 Motor - 📰 Slide Presentation
This Lesson is all about spinning a salvaged DC motor. Most DC motors pulled from a printer really should be running at 9+ volts, will run at 5 volts. This lab is about breadboarding a motor with out an Arduino or controller.
Overview
C++ / Arduino - Rube Goldberg - Spin A DC Motor Lab - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Spin A DC Motor Lab - 📰 Slide Presentation
This Lesson is all about spinning a salvaged DC motor using an Arduino to control it. This lab should work, and while most DC motors pulled from a printer will run at 5 volts, normally the Arduino is not really meant to drive a load like a DC motor. Later you will also use a Motor Controller, but for now try just spinning a motor and control it with a program. It should work, but there are better ways to do this that you will learn later.
Overview
C++ / Arduino - Rube Goldberg - Using An Arduino To Spin A Motor Lab - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Using An Arduino To Spin A Motor Lab - 📰 Slide Presentation
This Lesson is all about spinning a salvaged DC motor. Most DC motors pulled from a printer really should be running at 9+ volts, will run at 5 volts. This lab is about breadboarding a motor with out an Arduino or controller.
Overview
C++ / Arduino - Rube Goldberg - Introduction to Servos & Servo Control - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Introduction to Servos & Servo Control - 📰 Slide Presentation
This Lesson is all about using a Relay to control larger voltages with smaller voltages. The Arduino is a low voltage (5 volts) low current (200mA I/O) device, but using a Relay, you can control large voltages - 24 -200 DC volts or even 240 AC voltage
Overview
C++ / Arduino - Rube Goldberg - Relays - Controlling Big Voltage - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Relays - Controlling Big Voltage - 📰 Slide Presentation
This Lesson is an introduction to Solenoids and how these Electro-Magnetic devices work and how they can be used to move a load, leaver, or even push something. This lesson comes after the Relay lesson/labs, because Solenoids typically need to be switched with 24 volts DV/AC and an Arduino can't do that directly... So you use a Relay to control the voltage to the Solenoid.
Overview
C++ / Arduino - Rube Goldberg - Solenoids - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Solenoids - 📰 Slide Presentation
This Lesson is coming soon - click here to be notified when it's available - Professional Development Newsletter
Mechatronics - <topic> - 📖 Lesson Tutorial
Mechatronics - <topic> - 📽️ Video / Podcast
Mechatronics - <topic> - 📰 Slide Presentation (Coming Soon)
Mechatronics - <topic> - LAB #1 - 🛠️ LAB Activity
Mechatronics - <topic> - LAB #2 - 🛠️ LAB Activity
Mechatronics - <topic> - LAB #3 - 🛠️ LAB Activity
If you are a teacher and want to connect and teach this Lesson or Module, discuss how I teach it, give me feedback, please contact me at TopClown@STEAMClown.org
To access this Lesson Plan and the Teacher collaboration area, you will have needed to connect with me so I can Share the content with you. Please go to the Teachers & Partner Page, check out my Licensing and fill out my Collaboration and Curriculum Request Form. I'll review and then grant you access to the requested areas and lesson plans if they exist.
If you have questions or feedback on how I can make a presentation, lesson, lab better please give use my Feedback Form.
I’ll work on getting these in, but it’s the last thing I want to work on :-) When I have them updated, I’ll move to the top of the Lesson Plan.
NGSS: <list standard numbers>
California CTE Standards: <list standard numbers>
Related Instructional Objectives (SWBAT): <list standard numbers>
CCSS: nnn, RSIT: nnn, RLST: nnn, WS: nnn, WHSST: nnn, A-CED: nnn, ETS: nnn <list standard numbers>
Main Standard:
Priority standards:
National Standards:
Reference Text Book - Basic College Mathematics with Early Integers 4th edition - Elayn Martin-Gay - University of New Orleans - Pearson
Reference Sites -
https://imgbin.com/png/ZJtzkYZZ/under-construction-png
Understanding Course Structure and Certification Opportunities
Getting Started with C++ Programming
Differentiating between machine and high-level languages
Understanding machine code and compilation
Working with variables, integers, and characters
Utilizing comments in code
Basics of flow control
Dealing with streams and basic I/O operations
Writing simple programs
Module 1 Test
Controlling program flow
Exploring more data types
Conditional instructions: if, else, switch
Understanding loops and controlling loop execution
Working with logic, bitwise, and arithmetic operators
Introduction to vectors and multidimensional arrays
Declaring and initializing structures
Module 2 Test
Designing, declaring, and invoking functions
Understanding pointers and their usage
Different methods of passing parameters and their purpose
Working with default parameters and inline functions
Understanding overloaded functions
Sorting data
Managing memory dynamically
Module 3 Test
Understanding arrays of pointers
Working with conversions
Manipulating strings: declarations, initializations, assignments
Utilizing strings as examples of objects: methods and properties
Declaring and using namespaces
Handling exceptions in code
Module 4 Test
C Essentials 2 – Final Test (Score 70% or more to qualify for a 20% discount on the CPE exam)
Become CPE certified (Paid Option)
Module 1: Absolute Basics - Introduction to Computer Programming
languages: natural and artificial;
machine languages;
high-level programming languages,
obtaining the machine code: compilation process;
variables;
integer values in real life and in C++;
integer literals;
characters;
comments;
the basics of flow control;
dealing with streams and basic I/O operations;
writing simple programs.
Module 2: Advanced flow control and data aggregates
how to control the flow of the program;
more data types;
conditional instructions: if, else, switch;
loops and controlling the loop execution;
logic, bitwise and arithmetic operators;
vectors, multidimensional arrays;
declaring and initializing structures.
Module 3: Extending expressive power: pointers, functions, and memory
designing, declaring, and invoking functions;
pointers;
different methods of passing parameters and their purpose;
default parameters;
inline functions;
overloaded functions;
sorting;
memory on demand.
Module 4: Accessing various data types
arrays of pointers;
conversions;
strings: declarations, initializations, assignments;
strings as an example of objects: (methods and properties)
using and declaring namespaces;
dealing with exceptions.
Section 1 Test
Key: 📰 Slides / Audio 🎧 / 📽️▶️ Video/YouTube / 🎧▶️📽️ Audio/Video / ✨ Resources / 🖼️ Tutorial / 📖 Reading Activity / 📝 Writing Activity / 📖 📝 Reading/Writing / 📟 Coding / 🛠️ LAB Activity / 🚀 Quiz / 🔎 Review / ✔️ Mastery Check / ✍️ Sign Up /🍕 Extra Credit / 🕸️ Web Links / 👩🏽🎓🧑🏽🎓🧑🏿🎓👩🏫 Class / 🏵️📜📃 Certificate / 🗂️ 📈 Collecting Survey Data
/🧟 Review / 🦾 Practice / 🆙Level Up /
🎚️🦑📤🎯 🚧
- 🦑 Special Project -
Assignment Type: ⚓ Establishing (Minimum Standard) / ⛏️ Developing (Digging Deeper) / 💎 Aspiring (Putting It Together)
This is an ⚓ Establishing Assignment (Minimum Standard) - "Everyone Do" Assignment
This is an ⛏️ Developing (Digging Deeper) - "Everyone Should Do, To Stretch" Assignment
This is an 💎 Aspiring (Putting It Together) - "When you have done the ⚓ Establishing and⛏️ Developing" Assignment
🚀 Formative Quiz - 🔎 Review
🚀 Quiz -🔀 Mastery Path
🚀 Summative Quiz -✔️ Skills Mastery Check
Quiz - verify that they are all listed as a "Formative", "Mastery Path", or "Summative"
🚀 Formative Quiz - These are quizzes that the students can take a few times. I have them either set for unlimited times, or 3-5 times, where the final score is their average. The idea is that these Formative Quizzes are designed for students to learn and master a skill. while I want them to ger 100%, and when it's set to unlimited tries, the student should get 100% eventually. When the quiz is set to 3-5 tries with an average, then they should be prepared and should take the quiz seriously. I set the quiz to not show the right answer, but I do let them see their wrong answer. I also put the explanation of the right and wrong answer in the right and wrong answer prompt for each question. That way they can see why they got the answer wrong and learn from that experience.
8.1.0.3.2.4 - Python - Ch 3 - Functions - Quiz #2 -Built-In Functions - 🚀 Formative Quiz
🚀 Quiz -🔀 Mastery Path - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts. Based on the average, they will be presented with a Canvas Mastery Path, where they will have an option for take additional quiz and assignments to help with remediation. This will get them ready to take the Summative Quizzes.
8.1.0.3.3.1 - Python - Ch 3 - Functions - Mastery Quiz #1 - 🚀 Quiz -🔀 Mastery Path
🚀 Summative Quiz -✔️ Skills Mastery Check - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts. That will be their final module/subject topic grade.
8.1.0.3.3.1 - Python - Ch 3 - Functions - Skills Mastery Check Quiz #1 - 🚀 Summative Quiz -✔️ Skills Mastery Check