Arduino Tinkering, Programming and Problem Solving (5 days)
Overview and Intended Delegates
This course is suitable for teachers with little or no prior programming experience who are new to tinkering with and building embedded systems or programming.
The aim of this 5 day course/workshop is to provide a thorough introduction and confidence building experience for teachers wanting to explore the world of Arduino and programming so that they can use this knowledge in the classroom. It is not aimed solely for IT, Science and Technology Teachers, but for all teachers - especially junior school teachers and arts teachers. The goal is to "de-mistify" electronics and programming so that pupils see "non-technology" teachers as well as "technology teachers" using Lego Mindstorms with confidence, and do not go away with the impression that it is only for "geeky" types. It is also hoped that the programming skills learned will be capable of being transferred to other "technologies" such as Scratch, Lego's WeDo as well as Robot programming languages such as RobotC ... This course is suitable not only for teachers but also for parents, and teaching assistants with a technical background. The most important background requirements are some familiarity with computers, curiosity and the love of puzzle solving and toy/model building. Children aged 10 and upwards accompanied by parents are also welcome on this course.
Unlike traditional programming courses this course introduces programming concepts such as variable, branching, looping , input output, and the use of modules as a natural part of the problem solving involved in building robots to perform various tasks of increasing complexity.
Another important aspect of this course is the introduction of basic design concepts and notation based on simplified UML and flowcharts.
Course Outline
- Background and basic concepts of microcontrollers
- Overview of the Atmel AVR family of microcontrollers
- How microcontrollers differ from PCs
- How microcontrollers are programmed
- How microcontrollers interface with sensors (e.g. buttons) and actuators (e.g. motors)
- Overview of Arduino programming
- Firmware its structure and uses
- What syntax is and how compilers work
- How to break down the tasks associated with a gadget into small component behaviors
- What psuedocode is and how it can be used to describe "mini tasks"
- How to download programs
- First steps in interfacing, breadboarding and prototyping using Arduino
- Anatomy and layout of arduino boards
- Introduction to the Arduino programming environment
- The "wiring" metaphor underlying Arduino programming
- Writing, compiling and downloading Arduino programs (Sketches) to the Arduino board
- Introduction to breadboards and breadboarding techniques
- Powering up the breadboard
- Connecting up buttons, LEDs and resistors
- "Hello world" the embedded way by lighting up an LED
- More sophisticated "Hello World" programs [ hello world will
be enhanced throught the course as more is learned about Arduino C
programming ]
- Using timers to flash an LED
- Detecting button presses to turn an LED on and off
- Fancy patterns using multiple LEDs
- Arduino / C Programming in greater depth
- Overview of data types and their purpose
- C's basic data types - integer types, floating point types
- Variables and assignment of values to variables
- C's maths operators and basic maths in C
- Functions and function prototypes
- Returning a value from a function
- Arrays and their uses for storing collections of values
- C's logic and comparison operators and logical expressions
- Making decisions using switch statements
- Looping in C - while loops, do .. while loops and for loops
- Designing Programs
- Using scenarios and use cases to help design robot programs and applications
- Using flow charts to work out what a program is to do
- More advanced C programming
- A very gentle introduction to pointers
- Data structures and their uses
- An introduction to arrays of data structures and their applications
- An introduction to pointers and how they relate to arrays
- An introduction to pointers to data structures
- Exploring sensors, motors , buzzers ...
- An overview of sensors - temperature, pressure, light
- An overview of converting analog sensor values to digital values
- An overview of digital outputs
- An overview of serial communications
- An overview of digital to analog conversion
- An overview of using digital outputs to control equipment that uses bigger voltages and currents - DtoA converters, HBridges, Pulse Width Modulation (PWM)
- Driving DC motors
- An overview of the I2C and SPI protocols
- Arduino code for driving I2C peripheral devices
- Using PWM signals and Piezo devices to create sounds
- Introduction to State Machines and their uses
- Event driven applications
- Events, States, Actions and Transitions
- Implementing simple finite state machines in Arduino
- Interactive Traffic Lights demonstrator implemented using a Finite State Machine approach
- Serial communications
- Overview of RS232
- Using RS232 to connect an Arduino to a PC Terminal program
- LCD displays
- How LCD controllers work and interface to microcontrollers
- Driving LCD displays
- Implementing simple menu driven interactive displays using an Arduino