TANGIBLE MEDIA & PHYSICAL COMPUTING INTRODUCTION TO ARDUINO

Similar documents
Lab 01 Arduino 程式設計實驗. Essential Arduino Programming and Digital Signal Process

BASIC ARDUINO WORKSHOP. Mr. Aldwin and Mr. Bernardo

Arduino Prof. Dr. Magdy M. Abdelhameed

keyestudio Keyestudio MEGA 2560 R3 Board

IME-100 Interdisciplinary Design and Manufacturing

Introduction to Arduino. Wilson Wingston Sharon

Introduction to Arduino

Introduction to Microcontrollers Using Arduino. PhilRobotics

Arduino Uno Microcontroller Overview

ARDUINO LEONARDO ETH Code: A000022

Arduino provides a standard form factor that breaks the functions of the micro-controller into a more accessible package.

How to Use an Arduino

Note. The above image and many others are courtesy of - this is a wonderful resource for designing circuits.

ARDUINO LEONARDO WITH HEADERS Code: A000057

More Arduino Programming

Arduino Part 2. Introductory Medical Device Prototyping

IDUINO for maker s life. User Manual. For IDUINO development Board.

FUNCTIONS For controlling the Arduino board and performing computations.

ARDUINO UNO REV3 Code: A000066

ARDUINO M0 PRO Code: A000111

<Table of content> <Parts and description> <Circuit board Guide> <Pins> <Basics of Coding> <Intro to Arduino> <Intro> <Downloading Arduino IDO>

IDUINO for maker s life. User Manual. For IDUINO Mega2560 Board(ST1026)

Arduino Programming. Arduino UNO & Innoesys Educational Shield

IME-100 ECE. Lab 3. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,

Alessandra de Vitis. Arduino

Arduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front

Introduction To Arduino

The Arduino Briefing. The Arduino Briefing

Arduino Uno. Power & Interface. Arduino Part 1. Introductory Medical Device Prototyping. Digital I/O Pins. Reset Button. USB Interface.

ARDUINO UNO REV3 SMD Code: A The board everybody gets started with, based on the ATmega328 (SMD).

Intro to Arduino. Zero to Prototyping in a Flash! Material designed by Linz Craig and Brian Huang

ARDUINO YÚN MINI Code: A000108

ARDUINO PRIMO. Code: A000135

TANGIBLE MEDIA & PHYSICAL COMPUTING MORE ARDUINO

Introduction to Arduino

TABLE OF CONTENTS INTRODUCTION LESSONS PROJECTS

ARDUINO MEGA 2560 REV3 Code: A000067

ARDUINO MEGA ADK REV3 Code: A000069

Arduino ADK Rev.3 Board A000069

ARDUINO INDUSTRIAL 1 01 Code: A000126

Arduino Platform Part I

University of Portland EE 271 Electrical Circuits Laboratory. Experiment: Arduino

ARDUINO YÚN Code: A000008

CARTOOINO Projects Book

Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S

ARDUINO MICRO WITHOUT HEADERS Code: A000093

Arduino and Matlab for prototyping and manufacturing

Computer Architectures

Arduino For Amateur Radio

ARDUINO MINI 05 Code: A000087

Arduino Uno R3 INTRODUCTION

USER MANUAL ARDUINO I/O EXPANSION SHIELD

The Arduino IDE and coding in C (part 1)

ARDUINO. By Kiran Tiwari BCT 2072 CoTS.

Introduction to Microcontroller Apps for Amateur Radio Projects Using the HamStack Platform.

Adapted from a lab originally written by Simon Hastings and Bill Ashmanskas

Microcontrollers for Ham Radio

Smart Objects. SAPIENZA Università di Roma, M.Sc. in Product Design Fabio Patrizi

Introduction to Programming Using Java (98-388)

Laboratory 1 Introduction to the Arduino boards

Procedure: Determine the polarity of the LED. Use the following image to help:

Introducting Itsy Bitsy 32u4

GOOD MORNING SUNSHINE

Getting to know the Arduino IDE

Electronic Projects for Artists II: Programming for Interactivity with Microcontrollers

Chapter 2 The Basic Functions

Sanguino TSB. Introduction: Features:

Beetle SKU:DFR0282. Contents. Introduction

Lesson 5 Arduino Prototype Development Platforms. Chapter-8 L05: "Internet of Things ", Raj Kamal, Publs.: McGraw-Hill Education

Arduino Dock 2. The Hardware

CTEC 1802 Embedded Programming Labs

Serial.begin ( ); Serial.println( ); analogread ( ); map ( );

Energia MSP-430!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1

Exen Mini. Setup Guide - V1. nerdonic.com

The Big Idea: Background: About Serial

Introduction to Internet of Things Prof. Sudip Misra Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Seeeduino LoRaWAN. Description

Digital Design through. Arduino

Arduino Programming and Interfacing

Programming Microcontroller Assembly and C

Workshop on Microcontroller Based Project Development

MassDuino User's manual

Specification. 1.Power Supply direct from Microcontroller Board. 2.The circuit can be used with Microcontroller Board such as Arduino UNO R3.

WAVETEK BLE-WT51822AA/AB. Revision History. Bluetooth low energy Module WT51822AA (256k) /AB (128k) (Bluetooth Low Energy BT4.0) PRODUCT SPECIFICATION

INDUSTRIAL TRAINING:6 MONTHS PROGRAM TEVATRON TECHNOLOGIES PVT LTD

FUNCTIONS USED IN CODING pinmode()

1 Overview. 2 Basic Program Structure. 2.1 Required and Optional Parts of Sketch

Diploma in Embedded Systems

Review of the syntax and use of Arduino functions, with special attention to the setup and loop functions.

EXPERIMENT 7 Please visit to learn all features of arduino before you start the experiments

E11 Lecture 4: More C!!! Profs. David Money Harris & Sarah Harris Fall 2011

STEPD StepDuino Quickstart Guide

w w w. b a s e t r a i n i n g i n s t i t u t e. c o

Lab 2 - Powering the Fubarino. Fubarino,, Intro to Serial, Functions and Variables

ARDUINO BOARD LINE UP

WALT: definition and decomposition of complex problems in terms of functional and non-functional requirements

Electronics Single Board Computers

Introduction to Microprocessors: Arduino

mith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut

IME-100 ECE. Lab 4. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,

Transcription:

TANGIBLE MEDIA & PHYSICAL COMPUTING INTRODUCTION TO ARDUINO

AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS DEBUGGING & HELLO WORLD INPUTS AND OUTPUTS DEMOS

ARDUINO HISTORY IN 2003 HERNANDO BARRAGÁN CREATED THE DEVELOPMENT PLATFORM WIRING AS A MASTER'S THESIS PROJECT AT IDII, UNDER THE SUPERVISION OF MASSIMO BANZI AND CASEY REAS, KNOWN FOR THEIR WORK ON THE PROCESSING LANGUAGE. GOAL: CREATE SIMPLE, LOW COST TOOLS FOR CREATING DIGITAL PROJECTS BY NON ENGINEERS. WIRING CONSISTED OF A PCB WITH AN ATMEGA 168 MICRO CONTROLLER, AN IDE BASED ON PROCESSING AND LIBRARY FUNCTIONS TO PROGRAM THE CONTROLLER EASILY. IN 2005, MASSIMO BANZI, DAVID MELLIS AND DAVID CUARTIELLES, ADDED SUPPORT FOR THE CHEAPER ATMEGA8 MICROCONTROLLER TO WIRING. THEY FORKED THE WIRING SOURCE CODE AND STARTED RUNNING IT AS A SEPARATE PROJECT, CALLED ARDUINO.

WHAT IS AN ARDUINO TODAY? 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. THE PREMIER RESOURCE FOR ANYTHING ARDUINO - THE HOME OF THE ORIGINAL DOCUMENTATION FOR THE IDE, BUNDLED LIBRARIES, AND THE HARDWARE: HTTPS://WWW.ARDUINO.CC/

ARDUINO: INSPIRATION & HELP ARDUINO FORUM ARDUINO REFERENCE INSTRUCTABLES LADYADA ARDUNIO PLAYGROUND THE ITP PHYSICAL COMPUTING WIKI MAKE: PROJECTS

ARDUINO BOARDS** DRAFT ARDUINO MAKES SEVERAL DIFFERENT BOARDS, EACH WITH DIFFERENT CAPABILITIES. A FEW OPTIONS THAT ARE WELL-SUITED TO SOMEONE NEW TO THE WORLD OF ARDUINO: UNO R3 LILYPAD ARDUINO ARDUINO MEGA R3 ARDUNIO LEONARDO 3RD PARTY MANUFACTURERS CERTIFIED BY ARDUINO

ARDUINO UNO SPECS ATMEL ATMEGA328P 8-BIT MICROCONTROLLER 32KB OF FLASH MEMORY FOR APPLICATION PROGRAMS, 2KB OF SRAM 1KB OF EEPROM FOR NON-VOLATILE DATA. THE CLOCK SPEED IS 16MHZ.

ARDUINO UNO 1 & 2 : POWER (USB /BARREL JACK)

ARDUINO UNO 3&4&5 : PINS: 5V, 3.3V, GND

ARDUINO UNO 6 : PINS: ANALOG

ARDUINO UNO 7 & 8 : PINS: DIGITAL

ARDUINO UNO 9 : PINS: AREF

ARDUINO UNO 10 : RESET BUTTON

ARDUINO UNO 11 : POWER LED INDICATOR

ARDUINO UNO 12 : TX & RX LEDS

ARDUINO UNO 13 : MAIN IC

ARDUINO UNO 14 : VOLTAGE REGULATOR

AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS INPUTS AND OUTPUTS DEMOS

DOWNLOAD & SETUP PREREQUISITES: LATEST JAVA SDK ( SHOULD BE PRE-INSTALLED) DOWNLOAD: HTTPS://WWW.ARDUINO.CC/EN/MAIN/SOFTWARE FOLLOW THE INSTALLATION GUIDE (FOR YOUR OS): HTTPS://WWW.ARDUINO.CC/EN/GUIDE/HOMEPAGE

THE IDE

LET S UPLOAD! PLUG YOUR ARDUINO INTO YOUR COMPUTER VIA THE USB CABLE SELECT THE CORRECT BOARD : (TOOLS> BOARDS) SELECT THE SERIAL/COM PORT: (TOOLS > PORT) OPEN THE BLINK EXAMPLE SKETCH BY GOING TO: FILE > EXAMPLES > 1.BASICS > BLINK

LET S UPLOAD! WITH YOUR ARDUINO BOARD CONNECTED, AND THE BLINK SKETCH OPEN, PRESS THE UPLOAD BUTTON. AFTER A SECOND, YOU SHOULD SEE SOME LEDS FLASHING ON YOUR ARDUINO, FOLLOWED BY THE MESSAGE DONE UPLOADING IN THE STATUS BAR OF THE BLINK SKETCH. IF EVERYTHING WORKED, THE ONBOARD LED ON YOUR ARDUINO SHOULD NOW BE BLINKING! YOU JUST PROGRAMMED YOUR FIRST ARDUINO!

LIBRARIES UNDER FILE > EXAMPLES, YOU WILL ALREADY FIND SOME USEFUL LIBRARIES WITH EXAMPLE SKETCHES( EEPROM, SOFTWARE SERIAL ) YOU CAN ALSO FIND A LIST WITH NAMES AND DESCRIPTIONS OF ALL THE LIBRARIES CURRENTLY INSTALLED IN YOUR IDE. GO TO SKETCH> INCLUDE LIBRARY >MANAGE LIBRARIES, AND THE LIBRARY MANAGER WILL POP UP, ALLOWING YOU TO VIEW AND INSTALL NEW LIBRARIES EASILY

AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS INPUTS AND OUTPUTS DEMOS

THE ARDUINO LANGUAGE EVENTHOUGH THE ARDUINO LANGUAGE IS C++, MOST OF THE TIME YOU WILL BE PROGRAMMING PROCEDURALLY USING C, A SUBSET OF C++. THOSE WITH A FAMILIARITY WITH JAVA WILL NOT FIND PROGRAMMING FOR THE ARDUINO HARD. C++ IS OBJECT ORIENTED - AND EXTERNAL LIBRARIES ARE WRITTEN USING THIS PARADIGM. YOU NEED TO UNDERSTAND HOW TO INSTANTIATE OBJECTS FROM THESE LIBRARIES AND INVOKE THEIR METHODS. YOU WILL PROBABLY NOT HAVE TO CREATE YOUR OWN CLASS DEFINITIONS FROM SCRATCH - RATHER WE WILL FOCUS ON PROGRAM FLOW, FUNCTIONS AND OPTIMIZATION STRATEGIES.

COMPILATION YOU WRITE CODE IN THE ARDUINO IDE. YOUR SKETCH IS COMPILED INTO MACHINE CODE, WHICH THE MICRO CONTROLLER UNDERSTANDS. WE NEED A COMPILER TO SUPPORT THIS PROCESS: LUCKILY ARDUINO COMES WITH OPEN SOURCE C++ COMPILERS. WHEN YOU PRESS UPLOAD, THE IDE AUTOMATICALLY STARTS THE COMPILER, COMPILES THE CODE AND SENDS IT TO THE MICRO CONTROLLER VIA USB CABLE.

BASIC PROGRAMMING CONCEPTS AS EVERY USEFUL PROGRAMMING LANGUAGE, C++ IS MADE UP OF VARIOUS KEYWORDS AND CONSTRUCTS. THERE ARE CONDITIONALS, FUNCTIONS, OPERATORS, VARIABLES, CONSTRUCTORS, DATA STRUCTURES, AND MANY OTHER THINGS.

STRUCTURE OF A SKETCH: VOID SETUP(){ /*PUT YOUR SETUP CODE HERE */} THIS FUNCTION IS EXECUTED ONCE (WHEN PROGRAM STARTS) VOID LOOP(){/*MAIN CODE HERE */} THIS FUNCTION IS EXECUTED REPEATEDLY UNTIL YOU RESET OR CUT POWER. THESE FUNCTIONS MUST EXIST IN ORDER FOR THE PROGRAM TO COMPILE CORRECTLY.

FUNCTIONS PLEASE WRITE CUSTOM FUNCTIONS TO KEEP YOUR CODE ORGANIZED AND MODULAR! FUNCTION DEF EX: int sumfunction (int a, int b) { int c = a + b; return c; } FUNCTION CALL: void loop(){ int res = sumfunction(5,6); }

VARIABLES PROGRAMS ARE MOST USEFUL WHEN THEY PROCESS DATA: FROM USER, SENSOR, NETWORK, LOCAL FILE SYSTEM, LOCAL MEMORY WE MUST STORE THIS DATA IN MEMORY - SO THAT THE EXECUTING PROGRAM CAN PERFORM STANDARD OPERATIONS ON THE DATA: WRITE, READ, MODIFY AND USE. A VARIABLE: ASSOCIATES A MEMORY LOCATION WITH A NAME. PLEASE USE MEANINGFUL NAMES AND START WITH THEM WIT A LOWERCASE LETTER.

STANDARD DATATYPES FOR UNO A VARIABLE MUST HAVE A DATATYPE: boolean 1 byte true/false char 1 byte -127 to 127 (ASCII) unsigned char 1 byte 0 to 255 (ASCII) byte 1 byte 0 to 255 int/short 2 bytes -32768 to 32767 unsigned int 2 bytes 0 to 65535 long 4 bytes -2* 31 to 2 *31-1 unsigned long 4 bytes 0 to 2 *32-1 float 4 bytes 6-7 decimals of precision (total)

VARIABLE SCOPE int vala; int valb =6; void setup(){ int vala = 4; } void loop(){ int res = sumfunction(vala,valb); } int sumfunction (int a, int b) { int vala = a + b; return vala; }

CONSTANTS SOME INBUILT CONSTANTS FOR UNO: HIGH (INPUT): A VOLTAGE GREATER THAN 3.0V IS PRESENT AT THE PIN HIGH (OUTPUT): 5V SIGNAL IS OUTPUT LOW (INPUT): A VOLTAGE LESS THAN 1.5V IS PRESENT AT THE PIN LOW(OUTPUT): 0V SIGNAL IS OUTPUT

CONSTANTS SOME INBUILT CONSTANTS FOR UNO CONT: A DIGITAL PIN IS CONFIGURED AS AN INPUT OR OUTPUT USING THE PINMODE() FUNCTION. USE THE KEYWORD INPUT, OUTPUT, OR INPUT_PULLUP AS A PARAMETER TO THIS FUNCTION, DEPENDING ON YOUR INTENTIONS TRUE: ANY INTEGER (BOOLEAN SENSE) THAT IS NOT 0. FALSE: 0.

CONSTANTS DEFINE YOUR OWN: #DEFINE: GIVE A CONSTANT A NAME BEFORE COMPILING: #define <NAME> <value> CONST: MAKES A VARIABLE READ-ONLY const <datatype> <NAME> = <value>; GOOD PRACTICE: CAPITALIZE CONSTANTS

OPERATORS ARDUINO SUPPORTS UNARY AND BINARY OPERATIONS: Arithmetic: +, -, *, /, % Compound: +=,-=,*=, /= Inc & Dec: ++, - - Comparison: ==,!=, <, >,, Logical:!, &&, Bitwise: <<, >>,, &,^

CONDITIONAL STATEMENTS if ( boolean expr is true ) { /*perform instructions in this clause*/ } else if ( another boolean expr is true ) { /* perform instructions in this clause*/ } else { /*previous statements were false*/ }

SWITCH CASE 1: TESTVAL IS THE VARIABLE THAT WE TEST WITH 2: EXECUTE CORRESPONDING SWITCH STATEMENT 3: BREAK : JUMP OUT OF THE SWITCH CONSTRUCT 4: DEFAULT : IF NO OTHER CASE IS MATCHED switch ( testval ) { case 1: { // do this; break; } case 2: { // do this; break; } case n: { //do this; break; } default: { // no other cases were true; } }

FOR LOOP 1: COUNTER START 2: TERMINATING CONDITION 3: HOW MUCH TO CHANGE COUNTER EACH TIME for ( int i = 0; i < max ; i++ ) { /* do whatever repeatedly until counter(here: var named i) reaches max. */ }

WHILE LOOP 1: COME UP WITH BOOLEAN EXPRESSION 2: STATEMENTS INSIDE WHILE CLAUSE WILL EXECUTE UNTIL BOOLEAN EXPRESSION IS FALSE 3: MAY NOT EVEN EXECUTE ONCE 4: BEWARE OF INFINITE LOOPS while ( boolean expression is true ) { /* do whatever repeatedly until boolean expression is false */ }

DO WHILE LOOP 1: COME UP WITH BOOLEAN EXPRESSION 2: STATEMENTS INSIDE WHILE CLAUSE WILL EXECUTE UNTIL BOOLEAN EXPRESSION IS FALSE 3: WILL EXECUTE AT LEAST ONCE 4: BEWARE OF INFINITE LOOPS do { /* do whatever repeatedly until boolean expression is false */ } while ( boolean expression is true )

ARRAYS A COLLECTION OF VARIABLES (ALL OF THE SAME DATATYPE) THAT ARE ACCESSED WITH AN INDEX NUMBER. int numbers[6]; int mypins[] = {2, 4, 8, 3, 6}; int mysensvals[6] = {2, 4, -8, 3, 2}; char message[6] = hello ; 1; DECLARE AN ARRAY WITHOUT INITIALIZING IT 2: INITIALIZE AN ARRAY WITHOUT SPECIFYING A SIZE 3: SPECIFY SIZE AND INITIALIZE AN ARRAY 4: WHEN DECLARING AN ARRAY OF TYPE CHAR: SIZE == N+1, TO HOLD THE REQUIRED NULL CHARACTER.

ACCESSING ARRAY ELEMENTS THE FIRST ELEMENT OF THE ARRAY IS AT INDEX 0, AND THE LAST ELEMENT IS ACCESSED BY ARRAYSIZE-1: int testarray[ 10 ] = { 9,3,2,4,3,2,7,8,9,11 }; // testarray [ 0 ] contains 9 // testarray [ 9 ] contains 11 // testarray [ 10 ] is invalid and contains random information (other memory address) ASSIGN AND RETRIEVE: testarray [ 0 ] = 10; int test = testarray [ 3 ];

ARRAYS :: SIZEOF() THE SIZEOF OPERATOR RETURNS THE NUMBER OF BYTES IN A VARIABLE TYPE, OR THE NUMBER OF BYTES OCCUPIED BY AN ARRAY. SINGLE VAR USAGE: int test = 10; sizeof ( test ) returns 2. USE TO DETERMINE SIZE OF A GIVEN DATATYPE sizeof ( int ) returns 2.

ARRAYS :: SIZEOF() AND ITERATION TO DETERMINE ARRAY SIZE, IT DEPENDS ON THE DATATYPES OF ELEMENTS STORED IN THE ARRAY: int testints [ ] = { 1,2,3,4,5,6 }; int arraysize = sizeof(testints )/sizeof(int); arraysize == 6 ITERATE THROUGH AN ARRAY: for (int i = 0; i<sizeof(testints)/sizeof(int); i++) { // do something with testint[i] ; }

AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS INPUTS AND OUTPUTS DEMOS

ANALOG AND DIGITAL SIGNALS WE LIVE IN AN ANALOG WORLD: ANALOG SIGNALS HAVE INFINITE POSSIBILITIES DIGITAL SIGNALS AND OBJECTS DEAL IN THE REALM OF THE DISCRETE OR FINITE, MEANING THERE IS A LIMITED SET OF VALUES THEY CAN BE. WORKING WITH ELECTRONICS MEANS DEALING WITH BOTH ANALOG AND DIGITAL SIGNALS, INPUTS AND OUTPUTS. OUR ELECTRONICS PROJECTS HAVE TO INTERACT WITH THE REAL, ANALOG WORLD IN SOME WAY, BUT MOST MICROPROCESSORS, COMPUTERS, AND LOGIC UNITS ARE PURELY DIGITAL COMPONENTS. THESE TWO TYPES OF SIGNALS ARE LIKE DIFFERENT ELECTRONIC LANGUA GES, SOME COMPONENTS UNDERSTAND BOTH, OTHERS JUST ONE.

ANALOG AND DIGITAL SIGNALS AN ELECTRONIC SIGNAL: A VOLTAGE THAT CHANGES OVER A GIVEN TIME PERIOD, & IS PASSED BETWEEN DEVICES IN ORDER TO SEND AND RECEIVE INFORMATION TRANSMISSION MEDIUM: WIRE OR BY AIR THROUGH RADIO FREQUENCY

ANALOG SIGNALS A TIME-VERSUS-VOLTAGE GRAPH OF AN ANALOG SIGNAL SHOULD BE SMOOTH AND CONTINUOUS.

DIGITAL SIGNALS MOST COMMON DIGITAL SIGNALS WILL BE ONE OF TWO VALUES LIKE EITHER 0V OR 5V. TIMING GRAPHS OF THESE SIGNALS LOOK LIKE SQUARE WAVES. DIGITAL WAVES ARE STEPPING, SQUARE, AND DISCRETE.

ANALOG AND DIGITAL SIGNALS MICROCONTROLLERS: ARE CAPABLE OF DETECTING BINARY SIGNALS, WHICH ARE INHERENTLY DIGITAL: FOR EXAMPLE IF MIICROCONTROLLER IS POWERED FROM 5V: 0V = BINARY 0 &5V = BINARY 1 WORLD: MORE COMPLEX: WHAT IF THE SIGNAL IS 2.72V? IS THAT A 0 OR A 1? WHEN READING AN ANALOG SENSOR, WE NEED TO MEASURE SIGNALS THAT VARY: (ANALOG SIGNALS) - HOW? SOLUTION: MOST MICROCONTROLLERS HAVE AN ADC: A DEVICE TO CONVERT THESE VOLTAGES INTO VALUES THAT THE MICROCONTROLLER CAN WORK WITH (DISCRETE VALUES) BY CONVERTING FROM THE ANALOG WORLD TO THE DIGITAL WORLD, WE CAN BEGIN TO USE ELECTRONICS TO INTERFACE TO THE ANALOG WORLD AROUND US.

DIGITAL I/O DIGITAL PINS: 0 TO 13 ON THE ARDUINO UNO READ THE STATE OF BUTTONS, SWITCHES WRITE (CHANGE THE STATE) OF LEDS, TRANSISTORS THE PIN CAN BE IN TWO POSSIBLE STATES : HIGH /LOW. TO CONFIGURE A SPECIFIED PIN TO BEHAVE EITHER AS AN INPUT OR AN OUTPUT: pinmode ( pin, mode ); pin: the number (int) of the pin to set mode: INPUT, OUTPUT, INPUT_PULLUP

DIGITAL I/O: READ digitalread ( pin ); pin: the number (int) of the pin to read returns HIGH or LOW. EXAMPLE: #define BUTTON_PIN 2; void setup() { pinmode(button_pin, OUTPUT); } void loop() { int val = digitalread(button_pin); }

DIGITAL I/O: WRITE digitalwrite ( pin, value ); pin: the number (int) of the pin to read value: HIGH or LOW. EXAMPLE: #define LED_PIN 7; void setup() { pinmode(led_pin, INPUT); } void loop() { digitalwrite(led_pin,high); }

ANALOG I/O: READ ANALOG PINS: A0 TO A5 ON THE ARDUINO UNO 10-BIT ANALOG TO DIGITAL CONVERTER: MAP INPUT VOLTAGES BETWEEN 0-5 VOLTS TO 0-1023 analogread ( pin ); pin: the number (int) of the pin to read returns an int between 0 and 1023. EXAMPLE: void loop() { int val = analogread(a0); }

ANALOG I/O: WRITING USE DIGITAL PINS LABELED WITH ~ analogwrite ( pin, value ); pin: the number (int) of the pin to read value: between 0 (always off) & 255 (always on) EXAMPLE: void loop() { } int val = analogread(a0); //0 to 1023 analogwrite( 3, val/4); //0 to 255

AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS INPUTS AND OUTPUTS DEMOS

DEMO 1: DIGITAL OUT BLINK LED

DEMO 2: DIGITAL IN /OUT BLINK LED ONLY WHEN BUTTON PRESSED 2A: USE BUTTON TO TURN LED ON AND AGAIN OFF

DEMO 3: DIGITAL OUT /ANALOG IN CHANGE DELAY OF BLINKING LED ACCORDING TO POT VALUE

DEMO 4: PWM OUT /ANALOG IN USE A POT TO ALTER VALUE OF AN LED ****PLEASE CHANGE LED TO PIN 11 *****

DEMO 4A & B: DIGITAL IN / PWM OUT 4A: USE A BUTTON AS TRIGGER TO FADE AN LED W/ LOOP 4B: USE A BUTTON AS TRIGGER TO FADE AN LED W/O LOOP

DEMO 5: RGB LED COLOR MIXING INTRO -> MULTIPLE ANALOG OUT

DEMO 6: SOUND TONE EXERCISE - MAPPING VALUES TO A SPEAKER

DEMO 6: SOUND II THE ETUDE