SlideShare a Scribd company logo
standard Arduino workshop 2017
Hands-on Arduino introduction
Tom Tobback
www.cassiopeia.hk
2017
standard Arduino workshop 2017
some of Tom’s projects
cassiopeia.hk/category/projects/
standard Arduino workshop 2017
Before we start… check the connection between your
Arduino board and your laptop:
● plugin your Arduino board USB cable into your laptop
● open Arduino IDE software (www.arduino.cc)
● open the Blink sketch from File>Examples>Basic
● pick the correct port from Tools>Serial Port
● pick the correct board type from Tools>Board “Uno”
● hit ‘upload’ to test the connection
● look for ‘Done uploading’ and check if the onboard LED
is blinking
standard Arduino workshop 2017
Arduino: what is it?
Arduino is an open-source electronics
prototyping platform
based on flexible, easy-to-use hardware
and software
It is intended for artists, designers,
hobbyists and anyone interested in
creating interactive objects or
environments
• sensors
• sound
• light
• wifi
• ...
standard Arduino workshop 2017
Our program for today
terminology 4
software 2
basic electronics 4
projects 20+
metronome
theremin
standard Arduino workshop 2017
Arduino terminology
software:
• IDE
• web editor
• sketch
• uploading
hardware:
• board
• microcontroller (mcu)
• pin headers
• input
• output
• digital/analog
• breadboard
• jumper wires
• components
standard Arduino workshop 2017
Arduino vs Raspberry Pi
➔ looks similar
➔ similar price
➔ micro-controller vs
mini-computer
➔ Arduino: IO
➔ Pi: OS
Other popular platforms:
ESP8266, Particle Photon, micro:bit
standard Arduino workshop 2017
Arduino boards
➔ many official boards
➔ different sizes
➔ different connections
➔ use same code
➔ mostly compatible
➔ extra functions via shields
standard Arduino workshop 2017
Arduino UNO
standard Arduino workshop 2017
Arduino-style boards
➔ many copies
➔ many improvements
➔ extra functions included
(Wifi, GPS, motor, Ethernet,...)
➔ use same code
➔ mostly compatible
➔ cheaper!
standard Arduino workshop 2017
Arduino software: IDE
➔ Integrated Development Environment
➔ Write sketch -> upload to board
➔ Useful examples
➔ ‘Libraries’ to make our life easier
Always make sure to pick the correct BOARD
➔ Connect using USB cable, pick correct PORT
➔ Upload sketch
➔ Check output of Serial Monitor
➔ Save your sketches..
standard Arduino workshop 2017
Arduino software: Web Editor
Same functionality with:
➔ Browser based editor (needs login)
➔ Accessible from any computer
➔ Storage in the cloud
➔ Need to sign up for username
➔ Need to install the Arduino Create plugin for upload
standard Arduino workshop 2017
Basic electronics
➔ DC direct current vs alternating current AC
➔ voltage: volts 5V (usb), 3V3, 9V
➔ current: milli ampere 40 mA = 0.04 A
➔ power: watts 1-2 W (USB limit)
➔ resistors: reduce voltage
➔ diodes: one-way + light
➔ capacitors: small battery
➔ schematics
standard Arduino workshop 2017
Basic electronics
DIGITAL: on/off
1/0
true/false
high/low
0V/5V
ANALOG: variable 0->5V
Ohm’s law: U = I * R
Kirchoff’s laws:
standard Arduino workshop 2017
From prototype to product
standard Arduino workshop 2017
From prototype to product
standard Arduino workshop 2017
Breadboard = connections
standard Arduino workshop 2017
Breadboard power rails
5V to red line
GND to blue line
Optional:
connect to other side
standard Arduino workshop 2017
Breadboard
standard Arduino workshop 2017
Arduino projects for today
➔ Blink: the ‘hello world’ of Arduino pinMode
digitalWrite
delay
➔ Read push button digitalRead
➔ Read potentiometer analogRead
➔ Output to Serial Monitor Serial.print
➔ Buzzer music tone
➔ Potentiometer + blink + buzzer = metronome
➔ Read photoresistor/LDR
➔ Fading (PWM) analogWrite
➔ Input to Serial Monitor Serial.read
standard Arduino workshop 2017
Arduino: blink
Blink: the ‘hello world’ of Arduino
220 ohm
standard Arduino workshop 2017
resistor colour code
220 ohm = 220 Ω
red red black black (brown)
10k ohm = 10,000 Ω
brown black black red
(brown)
standard Arduino workshop 2017
Arduino: ‘blink’ sketch
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://www.arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
initialisation
setup { }
loop { }
bonus:
attach a second LED to
pin12 doing exactly
opposite of LED on pin13
standard Arduino workshop 2017
Arduino: RGB LED blink
Red Green Blue = primary colours (additive)
V = common negative
R = red positive
B = blue positive
G = green positive
(including resistors)
use digitalWrite to mix colours
e.g. on pin 10, 11, 12
standard Arduino workshop 2017
Arduino: RGB LED blink
standard Arduino workshop 2017
[optional] Arduino: button
boolean button_pressed = false;
---
pinMode(2, INPUT);
---
button_pressed = digitalRead(2);
if (button_pressed == true) {
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
use pinMode(2, INPUT_PULLUP);
or: pull-down resistor (e.g. 10kΩ)
standard Arduino workshop 2017
Arduino: potentiometer
standard Arduino workshop 2017
Arduino: potentiometer
int pot_value; [VARIABLE]
[SETUP]
[LOOP]
pot_value = analogRead(A0);
[change your delay to:]
delay(pot_value);
[analogRead returns 0->1023]
5k ohm
standard Arduino workshop 2017
Arduino: Serial Monitor
[SETUP]
Serial.begin(9600);
[LOOP]
[try one by one:]
Serial.print(“hello”);
[or]
Serial.println(“hello”);
[or]
Serial.print(“pot value: “);
Serial.println(pot_value); bonus:
print description of your
program on startup and
format output with t
standard Arduino workshop 2017
Arduino: Serial Plotter
[LOOP]
Serial.println(pot_value);
standard Arduino workshop 2017
Arduino: metronome
Blink with variable speed, and bpm in serial monitor
How?
read pot_value (analogRead)
print pot_value (Serial.print)
calculate beats per minute (=)
print BPM (Serial.print)
LED ON for 100ms (digitalWrite)
LED OFF for variable time: pot_value
100ms variable pot_value
ON OFF
standard Arduino workshop 2017
Arduino: metronome
total ‘beat’ length = 100ms ON + variable OFF
beat_length = 100 + pot_value
beats per minute = (60 * 1000) / beat_length
BPM will vary from 53 to 600
100ms variable pot_value
bonus:
attach a second LED to
pin12 doing exactly
opposite of LED on pin13
ON OFF
total beat length
standard Arduino workshop 2017
Arduino: metronome
‘int’ type does not work with large numbers
(larger than around 32000, 16 bits)
type to use = ‘long’
long bpm;
[SETUP]
[LOOP]
bpm = (60 * 1000L) / (100 + pot_value);
bonus:
format your output with t
standard Arduino workshop 2017
Arduino: sound
Piezo buzzer = speaker
SYNTAX:
tone(pin, freq);
tone(pin, freq, duration);
noTone(pin);
[SETUP]
[LOOP]
tone(3, 261); [put in correct place!]
noTone(3); [put in correct place!]
standard Arduino workshop 2017
Arduino: metronome + sound
● LED on and beep (100ms) + LED off and no beep
● variable speed with potentiometer
● serial monitor BPM
frequency examples (Hz):
C 261
D 293
E 329
G 392
bonus:
try different frequencies
standard Arduino workshop 2017
Arduino: light dependent resistor
LDR or photoresistor =
variable resistor, similar to potentiometer -> analogRead
voltage divider: sum=5V and analog input sees 0->5V
1K ohm
standard Arduino workshop 2017
Arduino: light dependent resistor
int ldr_value;
[SETUP]
[LOOP]
ldr_value = analogRead(A1);
Serial.println(ldr_value);
check on the Serial Monitor for min, max values of the LDR
how to go from e.g. 50-500 values to 200-5000Hz frequencies?
use ‘map’ function
standard Arduino workshop 2017
Arduino: light dependent resistor
int freq;
[SETUP]
[LOOP]
freq = map(ldr_value, 50, 500, 200, 5000);
tone(3, freq); [just update this line]
SYNTAX: map(value, fromLow, fromHigh, toLow, toHigh)
standard Arduino workshop 2017
Basic theremin
standard Arduino workshop 2017
Arduino: basic theremin sketch
int pot_value;
int ldr_value;
int freq;
long bpm;
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
pot_value = analogRead(A0);
bpm = (60 * 1000L) / (100 + pot_value);
ldr_value = analogRead(A1);
freq = map(ldr_value, 50, 500, 200, 5000);
Serial.print(“BPM: “);
Serial.println(bpm);
digitalWrite(13, HIGH);
tone(3, freq);
delay(100);
digitalWrite(13, LOW);
noTone(3);
delay(pot_value);
}
1
2
3
standard Arduino workshop 2017
Advanced theremin
1. Use a pentatonic scale with a lookup table
= table of frequencies on a pentatonic scale, accessible by index
2. Add a 2 step ‘sequencer’
1 loop = constant base note + variable note on second beat
100ms variable pot_value 100ms variable pot_value
base note silence variable pentatonic note silence
standard Arduino workshop 2017
Pentatonic theremin
Pentatonic scale with a lookup table
int pentatonicTable[50] = {
0, 19, 22, 26, 29, 32, 38, 43, 51, 58, 65, 77, 86, 103, 115, 129, 154, 173,
206, 231, 259, 308, 346, 411, 461, 518, 616, 691, 822, 923, 1036, 1232,
1383, 1644, 1845, 2071, 2463, 2765, 3288, 3691, 4143, 4927, 5530, 6577,
7382, 8286, 9854, 11060, 13153, 14764 };
OLD: freq = map(ldr_value, 50, 500, 200, 5000);
NEW: freq = pentatonicTable[map(ldr_value, 50, 500, 20, 45)];
standard Arduino workshop 2017
2 step sequencer theremin
1 loop = constant base note + variable note on second beat
tone(3, 206); noTone(3); tone(3, freq); noTone(3);
delay(100); delay(pot_value); delay(100); delay(pot_value);
Now you can add steps, change length of steps etc...
100ms variable pot_value 100ms variable pot_value
base note silence variable pentatonic note silence
standard Arduino workshop 2017
Arduino: AnalogWrite (PWM)
Analog input = 0 to 5 V
Arduino does not output
a real analog signal (0-5V)
analogWrite(pin, value);
PWM = Pulse Width Modulation
only available on pins 3,5,6,9,10,11
can use this to fade LED
values from 0 to 255 (8 bits)
standard Arduino workshop 2017
Arduino: AnalogWrite (PWM)
‘for’ structure = loop for X times
Open sketch: Examples > 03.Analog > Fading
[change your breadboard LED to pin 9]
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
standard Arduino workshop 2017
Arduino: input via Serial Monitor
top box of Serial Monitor = input
send data from computer to Arduino - ASCII format (bytes)
standard Arduino workshop 2017
Arduino: input via Serial Monitor
Let’s read a number 0-9 for intensity of LED
[remove all commands from loop]
int brightness;
[SETUP]
Serial.begin(9600);
[LOOP]
if (Serial.available()) {
brightness = Serial.read();
Serial.print("Arduino received: ");
Serial.println(brightness);
}
[switch to ‘No line ending’ at bottom of Serial Monitor?]
standard Arduino workshop 2017
Arduino: input via Serial Monitor
for analogWrite we need to map the brightness
from 48-57 (ASCII for 0 to 9)
to
0-255 for analogWrite (0% to 100%)
[add this line in the loop]
analogWrite(ledPin, map(brightness, 48, 57, 0, 255));
standard Arduino workshop 2017
Arduino: suppliers
ONLINE
➔ Official Arduino shop: http://arduino.cc/
great documentation, projects, forum
➔ Seeedstudio: http://www.seeedstudio.com/depot/
➔ Telesky: https://telesky.world.tmall.com/
➔ Adafruit: http://www.adafruit.com/ great documentation
IN HONG KONG - Apliu St
➔ WECL http://www.weclonline.com/wecl_eng/index.html
➔ Tell How http://tellhow-tech.com/
standard Arduino workshop 2017
Arduino: kits
➔ Seeedstudio Sidekick
Arduino kit
➔ Arduino Starter Kit
standard Arduino workshop 2017
Dimsum Labs
the hackerspace of HK www.dimsumlabs.com/
community of technology enthusiasts
space for creativity in Sheung Wan
Tuesday evening HackJam
www.facebook.com/groups/hackjamhk/
standard Arduino workshop 2017
Thank you
www.cassiopeia.hk
Happy tinkering!

More Related Content

PDF
Arduino 8-step drum sequencer 3 channels
PDF
DSL Junior Makers - electronics workshop
PDF
Introduction to Arduino
PDF
Introduction to Arduino Programming
KEY
Intro to Arduino
PPTX
Arduino Day 1 Presentation
PDF
Lab2ppt
PDF
Arduino: Arduino lcd
Arduino 8-step drum sequencer 3 channels
DSL Junior Makers - electronics workshop
Introduction to Arduino
Introduction to Arduino Programming
Intro to Arduino
Arduino Day 1 Presentation
Lab2ppt
Arduino: Arduino lcd

What's hot (20)

PPTX
Arduino Workshop
PDF
Introduction to Arduino and Circuits
PDF
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
PPTX
Getting started with arduino workshop
PPTX
Arduino slides
PPTX
Introduction to Arduino
PPT
Arduino Introduction by coopermaa
PPTX
Arduino Robotics workshop Day1
PPTX
Aurdino presentation
PDF
Ardublock tutorial
PDF
Introducing the Arduino
PPTX
Introduction to Arduino
PPTX
Basics of arduino uno
PDF
Arduino experimenters guide hq
PPT
Arduino technical session 1
PDF
Intro to Arduino Revision #2
PDF
Arduino electronics cookbook
PDF
Arduino spooky projects_class1
PPT
IoT with Arduino
PPTX
Introduction to Arduino Microcontroller
Arduino Workshop
Introduction to Arduino and Circuits
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
Getting started with arduino workshop
Arduino slides
Introduction to Arduino
Arduino Introduction by coopermaa
Arduino Robotics workshop Day1
Aurdino presentation
Ardublock tutorial
Introducing the Arduino
Introduction to Arduino
Basics of arduino uno
Arduino experimenters guide hq
Arduino technical session 1
Intro to Arduino Revision #2
Arduino electronics cookbook
Arduino spooky projects_class1
IoT with Arduino
Introduction to Arduino Microcontroller
Ad

Viewers also liked (20)

PDF
Cassiopeia Ltd - ESP8266+Arduino workshop
PPT
Arduino
PPT
Intro to Arduino
PPTX
Introduction to arduino
PDF
Arduino Lecture 1 - Introducing the Arduino
PPTX
Arduino Basic
PDF
Android Control Hardware and Arduino IoT ( 22 Aug 15 )
ODP
Arduino Presentation
PDF
Arduino Development For Beginners
DOCX
Arduino Full Tutorial
PPTX
Theremin Presentation
PDF
ThereminReport
PPTX
ThereminPresentation
PPTX
Ar5 mood cue
PPTX
Robotics Presentation
PPTX
Lego robotics
PPTX
Interfacing bluetooth with arduino
PPTX
Basic Robotics Workshop Slides
PPTX
Student2student: Arduino Project-based Learning
PPT
Basic robotics workshop
Cassiopeia Ltd - ESP8266+Arduino workshop
Arduino
Intro to Arduino
Introduction to arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Basic
Android Control Hardware and Arduino IoT ( 22 Aug 15 )
Arduino Presentation
Arduino Development For Beginners
Arduino Full Tutorial
Theremin Presentation
ThereminReport
ThereminPresentation
Ar5 mood cue
Robotics Presentation
Lego robotics
Interfacing bluetooth with arduino
Basic Robotics Workshop Slides
Student2student: Arduino Project-based Learning
Basic robotics workshop
Ad

Similar to Cassiopeia Ltd - standard Arduino workshop (20)

PPT
01 Intro to the Arduino and it's basics.ppt
PDF
IOTC08 The Arduino Platform
PPTX
Arduino Workshop (3).pptx
PPTX
Arduino . .
PPSX
Arduino اردوينو
PPTX
Arduino Slides With Neopixels
PPTX
Arduino Workshop Slides
PPTX
Introduction to Arduino
PPTX
Introduction to Arduino
PPTX
How to use an Arduino
KEY
Scottish Ruby Conference 2010 Arduino, Ruby RAD
PPTX
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
PDF
Arduino-workshop.computer engineering.pdf
PPT
arduino Simon power point presentation.ppt
PPTX
Arduino workshop
PPTX
Fun with arduino
PPTX
Arduino intro.pptx
PDF
Cassiopeia ltd Arduino follow-up workshop 2018
PPT
arduinoSimon.ppt
01 Intro to the Arduino and it's basics.ppt
IOTC08 The Arduino Platform
Arduino Workshop (3).pptx
Arduino . .
Arduino اردوينو
Arduino Slides With Neopixels
Arduino Workshop Slides
Introduction to Arduino
Introduction to Arduino
How to use an Arduino
Scottish Ruby Conference 2010 Arduino, Ruby RAD
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
Arduino-workshop.computer engineering.pdf
arduino Simon power point presentation.ppt
Arduino workshop
Fun with arduino
Arduino intro.pptx
Cassiopeia ltd Arduino follow-up workshop 2018
arduinoSimon.ppt

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPT
Teaching material agriculture food technology
PPTX
sap open course for s4hana steps from ECC to s4
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Electronic commerce courselecture one. Pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
KodekX | Application Modernization Development
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Teaching material agriculture food technology
sap open course for s4hana steps from ECC to s4
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Electronic commerce courselecture one. Pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Encapsulation_ Review paper, used for researhc scholars
MIND Revenue Release Quarter 2 2025 Press Release
Per capita expenditure prediction using model stacking based on satellite ima...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
KodekX | Application Modernization Development
NewMind AI Weekly Chronicles - August'25 Week I
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
Programs and apps: productivity, graphics, security and other tools
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

Cassiopeia Ltd - standard Arduino workshop

  • 1. standard Arduino workshop 2017 Hands-on Arduino introduction Tom Tobback www.cassiopeia.hk 2017
  • 2. standard Arduino workshop 2017 some of Tom’s projects cassiopeia.hk/category/projects/
  • 3. standard Arduino workshop 2017 Before we start… check the connection between your Arduino board and your laptop: ● plugin your Arduino board USB cable into your laptop ● open Arduino IDE software (www.arduino.cc) ● open the Blink sketch from File>Examples>Basic ● pick the correct port from Tools>Serial Port ● pick the correct board type from Tools>Board “Uno” ● hit ‘upload’ to test the connection ● look for ‘Done uploading’ and check if the onboard LED is blinking
  • 4. standard Arduino workshop 2017 Arduino: what is it? Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software It is intended for artists, designers, hobbyists and anyone interested in creating interactive objects or environments • sensors • sound • light • wifi • ...
  • 5. standard Arduino workshop 2017 Our program for today terminology 4 software 2 basic electronics 4 projects 20+ metronome theremin
  • 6. standard Arduino workshop 2017 Arduino terminology software: • IDE • web editor • sketch • uploading hardware: • board • microcontroller (mcu) • pin headers • input • output • digital/analog • breadboard • jumper wires • components
  • 7. standard Arduino workshop 2017 Arduino vs Raspberry Pi ➔ looks similar ➔ similar price ➔ micro-controller vs mini-computer ➔ Arduino: IO ➔ Pi: OS Other popular platforms: ESP8266, Particle Photon, micro:bit
  • 8. standard Arduino workshop 2017 Arduino boards ➔ many official boards ➔ different sizes ➔ different connections ➔ use same code ➔ mostly compatible ➔ extra functions via shields
  • 9. standard Arduino workshop 2017 Arduino UNO
  • 10. standard Arduino workshop 2017 Arduino-style boards ➔ many copies ➔ many improvements ➔ extra functions included (Wifi, GPS, motor, Ethernet,...) ➔ use same code ➔ mostly compatible ➔ cheaper!
  • 11. standard Arduino workshop 2017 Arduino software: IDE ➔ Integrated Development Environment ➔ Write sketch -> upload to board ➔ Useful examples ➔ ‘Libraries’ to make our life easier Always make sure to pick the correct BOARD ➔ Connect using USB cable, pick correct PORT ➔ Upload sketch ➔ Check output of Serial Monitor ➔ Save your sketches..
  • 12. standard Arduino workshop 2017 Arduino software: Web Editor Same functionality with: ➔ Browser based editor (needs login) ➔ Accessible from any computer ➔ Storage in the cloud ➔ Need to sign up for username ➔ Need to install the Arduino Create plugin for upload
  • 13. standard Arduino workshop 2017 Basic electronics ➔ DC direct current vs alternating current AC ➔ voltage: volts 5V (usb), 3V3, 9V ➔ current: milli ampere 40 mA = 0.04 A ➔ power: watts 1-2 W (USB limit) ➔ resistors: reduce voltage ➔ diodes: one-way + light ➔ capacitors: small battery ➔ schematics
  • 14. standard Arduino workshop 2017 Basic electronics DIGITAL: on/off 1/0 true/false high/low 0V/5V ANALOG: variable 0->5V Ohm’s law: U = I * R Kirchoff’s laws:
  • 15. standard Arduino workshop 2017 From prototype to product
  • 16. standard Arduino workshop 2017 From prototype to product
  • 17. standard Arduino workshop 2017 Breadboard = connections
  • 18. standard Arduino workshop 2017 Breadboard power rails 5V to red line GND to blue line Optional: connect to other side
  • 19. standard Arduino workshop 2017 Breadboard
  • 20. standard Arduino workshop 2017 Arduino projects for today ➔ Blink: the ‘hello world’ of Arduino pinMode digitalWrite delay ➔ Read push button digitalRead ➔ Read potentiometer analogRead ➔ Output to Serial Monitor Serial.print ➔ Buzzer music tone ➔ Potentiometer + blink + buzzer = metronome ➔ Read photoresistor/LDR ➔ Fading (PWM) analogWrite ➔ Input to Serial Monitor Serial.read
  • 21. standard Arduino workshop 2017 Arduino: blink Blink: the ‘hello world’ of Arduino 220 ohm
  • 22. standard Arduino workshop 2017 resistor colour code 220 ohm = 220 Ω red red black black (brown) 10k ohm = 10,000 Ω brown black black red (brown)
  • 23. standard Arduino workshop 2017 Arduino: ‘blink’ sketch /* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://www.arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } initialisation setup { } loop { } bonus: attach a second LED to pin12 doing exactly opposite of LED on pin13
  • 24. standard Arduino workshop 2017 Arduino: RGB LED blink Red Green Blue = primary colours (additive) V = common negative R = red positive B = blue positive G = green positive (including resistors) use digitalWrite to mix colours e.g. on pin 10, 11, 12
  • 25. standard Arduino workshop 2017 Arduino: RGB LED blink
  • 26. standard Arduino workshop 2017 [optional] Arduino: button boolean button_pressed = false; --- pinMode(2, INPUT); --- button_pressed = digitalRead(2); if (button_pressed == true) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } use pinMode(2, INPUT_PULLUP); or: pull-down resistor (e.g. 10kΩ)
  • 27. standard Arduino workshop 2017 Arduino: potentiometer
  • 28. standard Arduino workshop 2017 Arduino: potentiometer int pot_value; [VARIABLE] [SETUP] [LOOP] pot_value = analogRead(A0); [change your delay to:] delay(pot_value); [analogRead returns 0->1023] 5k ohm
  • 29. standard Arduino workshop 2017 Arduino: Serial Monitor [SETUP] Serial.begin(9600); [LOOP] [try one by one:] Serial.print(“hello”); [or] Serial.println(“hello”); [or] Serial.print(“pot value: “); Serial.println(pot_value); bonus: print description of your program on startup and format output with t
  • 30. standard Arduino workshop 2017 Arduino: Serial Plotter [LOOP] Serial.println(pot_value);
  • 31. standard Arduino workshop 2017 Arduino: metronome Blink with variable speed, and bpm in serial monitor How? read pot_value (analogRead) print pot_value (Serial.print) calculate beats per minute (=) print BPM (Serial.print) LED ON for 100ms (digitalWrite) LED OFF for variable time: pot_value 100ms variable pot_value ON OFF
  • 32. standard Arduino workshop 2017 Arduino: metronome total ‘beat’ length = 100ms ON + variable OFF beat_length = 100 + pot_value beats per minute = (60 * 1000) / beat_length BPM will vary from 53 to 600 100ms variable pot_value bonus: attach a second LED to pin12 doing exactly opposite of LED on pin13 ON OFF total beat length
  • 33. standard Arduino workshop 2017 Arduino: metronome ‘int’ type does not work with large numbers (larger than around 32000, 16 bits) type to use = ‘long’ long bpm; [SETUP] [LOOP] bpm = (60 * 1000L) / (100 + pot_value); bonus: format your output with t
  • 34. standard Arduino workshop 2017 Arduino: sound Piezo buzzer = speaker SYNTAX: tone(pin, freq); tone(pin, freq, duration); noTone(pin); [SETUP] [LOOP] tone(3, 261); [put in correct place!] noTone(3); [put in correct place!]
  • 35. standard Arduino workshop 2017 Arduino: metronome + sound ● LED on and beep (100ms) + LED off and no beep ● variable speed with potentiometer ● serial monitor BPM frequency examples (Hz): C 261 D 293 E 329 G 392 bonus: try different frequencies
  • 36. standard Arduino workshop 2017 Arduino: light dependent resistor LDR or photoresistor = variable resistor, similar to potentiometer -> analogRead voltage divider: sum=5V and analog input sees 0->5V 1K ohm
  • 37. standard Arduino workshop 2017 Arduino: light dependent resistor int ldr_value; [SETUP] [LOOP] ldr_value = analogRead(A1); Serial.println(ldr_value); check on the Serial Monitor for min, max values of the LDR how to go from e.g. 50-500 values to 200-5000Hz frequencies? use ‘map’ function
  • 38. standard Arduino workshop 2017 Arduino: light dependent resistor int freq; [SETUP] [LOOP] freq = map(ldr_value, 50, 500, 200, 5000); tone(3, freq); [just update this line] SYNTAX: map(value, fromLow, fromHigh, toLow, toHigh)
  • 39. standard Arduino workshop 2017 Basic theremin
  • 40. standard Arduino workshop 2017 Arduino: basic theremin sketch int pot_value; int ldr_value; int freq; long bpm; void setup() { pinMode(13, OUTPUT); Serial.begin(9600); } void loop() { pot_value = analogRead(A0); bpm = (60 * 1000L) / (100 + pot_value); ldr_value = analogRead(A1); freq = map(ldr_value, 50, 500, 200, 5000); Serial.print(“BPM: “); Serial.println(bpm); digitalWrite(13, HIGH); tone(3, freq); delay(100); digitalWrite(13, LOW); noTone(3); delay(pot_value); } 1 2 3
  • 41. standard Arduino workshop 2017 Advanced theremin 1. Use a pentatonic scale with a lookup table = table of frequencies on a pentatonic scale, accessible by index 2. Add a 2 step ‘sequencer’ 1 loop = constant base note + variable note on second beat 100ms variable pot_value 100ms variable pot_value base note silence variable pentatonic note silence
  • 42. standard Arduino workshop 2017 Pentatonic theremin Pentatonic scale with a lookup table int pentatonicTable[50] = { 0, 19, 22, 26, 29, 32, 38, 43, 51, 58, 65, 77, 86, 103, 115, 129, 154, 173, 206, 231, 259, 308, 346, 411, 461, 518, 616, 691, 822, 923, 1036, 1232, 1383, 1644, 1845, 2071, 2463, 2765, 3288, 3691, 4143, 4927, 5530, 6577, 7382, 8286, 9854, 11060, 13153, 14764 }; OLD: freq = map(ldr_value, 50, 500, 200, 5000); NEW: freq = pentatonicTable[map(ldr_value, 50, 500, 20, 45)];
  • 43. standard Arduino workshop 2017 2 step sequencer theremin 1 loop = constant base note + variable note on second beat tone(3, 206); noTone(3); tone(3, freq); noTone(3); delay(100); delay(pot_value); delay(100); delay(pot_value); Now you can add steps, change length of steps etc... 100ms variable pot_value 100ms variable pot_value base note silence variable pentatonic note silence
  • 44. standard Arduino workshop 2017 Arduino: AnalogWrite (PWM) Analog input = 0 to 5 V Arduino does not output a real analog signal (0-5V) analogWrite(pin, value); PWM = Pulse Width Modulation only available on pins 3,5,6,9,10,11 can use this to fade LED values from 0 to 255 (8 bits)
  • 45. standard Arduino workshop 2017 Arduino: AnalogWrite (PWM) ‘for’ structure = loop for X times Open sketch: Examples > 03.Analog > Fading [change your breadboard LED to pin 9] // fade in from min to max in increments of 5 points: for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { // sets the value (range from 0 to 255): analogWrite(ledPin, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); }
  • 46. standard Arduino workshop 2017 Arduino: input via Serial Monitor top box of Serial Monitor = input send data from computer to Arduino - ASCII format (bytes)
  • 47. standard Arduino workshop 2017 Arduino: input via Serial Monitor Let’s read a number 0-9 for intensity of LED [remove all commands from loop] int brightness; [SETUP] Serial.begin(9600); [LOOP] if (Serial.available()) { brightness = Serial.read(); Serial.print("Arduino received: "); Serial.println(brightness); } [switch to ‘No line ending’ at bottom of Serial Monitor?]
  • 48. standard Arduino workshop 2017 Arduino: input via Serial Monitor for analogWrite we need to map the brightness from 48-57 (ASCII for 0 to 9) to 0-255 for analogWrite (0% to 100%) [add this line in the loop] analogWrite(ledPin, map(brightness, 48, 57, 0, 255));
  • 49. standard Arduino workshop 2017 Arduino: suppliers ONLINE ➔ Official Arduino shop: http://arduino.cc/ great documentation, projects, forum ➔ Seeedstudio: http://www.seeedstudio.com/depot/ ➔ Telesky: https://telesky.world.tmall.com/ ➔ Adafruit: http://www.adafruit.com/ great documentation IN HONG KONG - Apliu St ➔ WECL http://www.weclonline.com/wecl_eng/index.html ➔ Tell How http://tellhow-tech.com/
  • 50. standard Arduino workshop 2017 Arduino: kits ➔ Seeedstudio Sidekick Arduino kit ➔ Arduino Starter Kit
  • 51. standard Arduino workshop 2017 Dimsum Labs the hackerspace of HK www.dimsumlabs.com/ community of technology enthusiasts space for creativity in Sheung Wan Tuesday evening HackJam www.facebook.com/groups/hackjamhk/
  • 52. standard Arduino workshop 2017 Thank you www.cassiopeia.hk Happy tinkering!