Mastering Arduino Tinkering Programming and Problem Solving
Duration: 5 Days
Course Background
The aim of this 5 day intensive course is to provide a thorough introduction and confidence building experience for teachers, technologists and engineers wanting to explore the world of Arduino and programming so that they can use this knowledge in either the classroom, for pleasure, or for work. 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 arduinos and related systems such as e.g. Lego Mindstorms with confidence, and do not go away with the impression that its 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 ... for which we can also provides beginners courses. 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. 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 electronics applications 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 Prerequisites and Target Audience
This course is suitable for those with a technical background but with little or no prior programming experience in either tinkering with and building and programming embedded systems Its goal is to provide a starting point for those who wish to learn how to build and program and prototype arduino based systems and to provide them with a good understanding of the underlying principles and concepts. Some knowledge of programming is assumed such as e.g. JavaScript programming or VBA (Visual Basic for Applications) programming. For those with absolutely no knowlege of programming attending a foundation programming course either face to face or distance learning based in recommended, or the 3 day introductory Arduino workshop.
Course Outline
- Introduction to Arduino
- 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 the tasks associated with a gadget into small 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
- 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
- Arrays and their uses for storing collections of values
- Designing Programs
- Using scenarios and use cases to help design embedded system programs and applications
- Using flow charts to work out what a program is to do
- A gentle introduction to UML for C programming
- 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 and SPI peripheral devices
- Using PWM signals and Piezo devices to create sounds
- 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 and SPI peripheral devices
- Using PWM signals and Piezo devices to create sounds
- Introduction to Finite 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 with a PC
- Overview of RS232
- Using RS232 to connect an Arduino to a PC Terminal program
- Controlling an Arduino from a PC
- Reading and writing files on a PC
- Logging Arduino sensor readings on a PC
- LCD displays
- How LCD controllers work and interface to microcontrollers
- Driving LCD displays
- Implementing simple menu driven interactive displays using an Arduino
- Reading and writing files on a PC
- Logging Arduino sensor readings on a PC
- Controlling a simple mobile robot with an Arduino
- Introduction to collision detection using switches
- Introduction to obstacle detection using a sonar sensor
- Introduction to line following using an LED and a pair of photodetectors
- Handling multiple tasks simultaneously
- Introduction to more complex robot behaviours