SlideShare a Scribd company logo
Arduino 101 
Fiore Basile 
fiore.basile@gmail.com
Cos’è Arduino? 
• Una (serie) di schede elettroniche 
• Ambiente di sviluppo 
• Una community
La Scheda
Microcontroller - Famiglia AVR
Varianti
Cloni
Ambiente di sviluppo
Community 
http://playground.arduino.cc
Cosa si può fare?
Output
Input
Kit di sensori
Comunicare 
Seriale Bluetooth 4.0 I2C 
USB Bluetooth 2.0 SPI 
Ethernet GPS TWI 
Wifi RF CAN 
Zigbee Midi
123D Circuits 
http://123d.circuits.io/
Programmare Arduino 
IDE 
AVR GCC AvrDude 
Firmware 
+ 
Bootloader 
+
Sketch: C++ semplificato 
/* Questo e' un commento */ 
// anche questo e’ un commento 
int led = 13; 
void setup()! 
{! 
pinMode(ledPin, OUTPUT);! 
} 
void loop()! 
{! 
pinMode(ledPin, OUTPUT);! 
digitalWrite(ledPin, HIGH);! 
} 
COMMENTO 
VARIABILE 
INIZIALIZZAZIONE 
CICLO INFINITO
Blink 
Accendere e 
spegnere un 
LED a intervalli di 
un secondo 
! 
int led = 13;! 
! 
void setup() { ! 
pinMode(led, OUTPUT); ! 
}! 
! 
void loop() {! 
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)! 
delay(1000); // wait for a second! 
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW! 
delay(1000); // wait for a second! 
}!
Monitor Seriale 
Debug e comunicazione col PC
Porta seriale 
! 
int led = 13;! 
! 
void setup() { ! 
! 
Serial.begin(9600);! 
! 
pinMode(led, OUTPUT); ! 
}! 
! 
void loop() {! 
! 
Serial.println(“Accendo LED”);! 
! 
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)! 
delay(1000); // wait for a second! 
! 
Serial.println(“Spengo LED”);! 
! 
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW! 
delay(1000); // wait for a second! 
}!
Usare i sensori 
Grazie ai sensori possiamo acquisire 
dati dall’ambiente circostante
Sensori 
• Analogici: Il segnale è un voltaggio misurato con un 
valore da 0 a 1024 
• Digitali: Il segnale è sempre un voltaggio (0-5v) ma 
Arduino ci fornisce un valore 0 o 1
Digitale vs Analogico
Sensori Analogici 
Potenziometro Termitstor Photo-resistor Flex 
Sensori a resistenza variabile
LED + Potenziometro 
int sensorPin = A0; // potenziometro 
int ledPin = 13; // LED 
int sensorValue = 0; // VALORE 
! 
void setup() { 
pinMode(ledPin, OUTPUT); 
} 
! 
void loop() { 
sensorValue = analogRead(sensorPin); 
digitalWrite(ledPin, HIGH); 
delay(sensorValue); 
digitalWrite(ledPin, LOW); 
delay(sensorValue); 
}
Sensori Analogici 
Temperatura Accelerazione Distanza 
Sensori integrati
Sensori Digitali 
Pulsanti Temperatura Accelerometri Giroscopio 
La maggior parte dei sensori “evoluti” 
Si leggono tramite vari protocolli 
Two Wire - i2c - SPI - Seriale
Led + Bottone 
int led = 13; 
int button = 2; 
int buttonState = 0; 
! 
void setup() { 
pinMode(led, OUTPUT); 
pinMode(button, INPUT); 
} 
void loop() { 
buttonState = digitalRead(button); 
if (buttonState == HIGH) { 
digitalWrite(led, HIGH); 
} else { 
digitalWrite(led, LOW); 
} 
}
Output con Arduino 
Led Motore DC Motore Stepper 
Display LCD Motore servo Speaker
Output con Arduino
PWM 
Variando l’intervallo acceso-spento
PWM 
• Possiamo controllare la luminosità di un LED 
• Possiamo controllare un Motore Passo-Passo 
• Possiamo controllare un Servo Motore 
• Possiamo pilotare uno speaker
Uscite PWM
LED Dimmer 
int sensorPin = A0; // potenziometro 
int ledPin = 13; // LED 
int sensorValue = 0; // VALORE 
! 
void setup() { 
pinMode(ledPin, OUTPUT); 
} 
! 
void loop() { 
sensorValue = analogRead(sensorPin); 
// input 0-1024 output 0-255 
analogWrite(ledPin, sensorValue/4); 
}
Motore Servo
Motore Servo
Display LCD
Display LCD
Dispositivi Avanzati 
WIFI MOTOR TFT 
ETHERNET GSM 
GPS, 
Midi, 
Relé 
etc
Protocolli di comunicazione 
• One Wire 
• I2C SDA/SCK 
• SPI MISO/MOSI/CLK/SS 
• Seriale TX-RX
DHT11 - Sensore Umidità - One Wire 
#include <dht11.h>! 
! 
dht11 DHT11;! 
#define DHT11PIN 2! 
int chk = DHT11.read(DHT11PIN);! 
! 
Serial.print("Read sensor: ");! 
switch (chk)! 
{! 
case DHTLIB_OK: ! 
! ! Serial.println("OK"); ! 
! ! break;! 
case DHTLIB_ERROR_CHECKSUM: ! 
! ! Serial.println("Checksum error"); ! 
! ! break;! 
case DHTLIB_ERROR_TIMEOUT: ! 
! ! Serial.println("Time out error"); ! 
! ! break;! 
default: ! 
! ! Serial.println("Unknown error"); ! 
! ! break;! 
}! 
http://playground.arduino.cc/main/DHT11Lib
Protocollo Two Wire Interface (TWI)
I2C Master 
#include <Wire.h>! 
! 
#define LED_PIN 13! 
byte x = 0;! 
! 
void setup()! 
{! 
Wire.begin(); // Start I2C Bus as Master! 
pinMode(LED_PIN, OUTPUT);! 
digitalWrite(LED_PIN, LOW);! 
! 
}! 
void loop()! 
{! 
! 
Wire.beginTransmission(9); // transmit to device #9! 
Wire.send(x); // sends x ! 
Wire.endTransmission(); // stop transmitting! 
x++;! 
if (x > 5) x=0;! 
delay(450);! 
}
I2C Slave 
#include <Wire.h>! 
! 
#define LED_PIN 13! 
! 
int x;! 
! 
void setup() {! 
Wire.begin(9); // Start I2C Bus as a Slave (Device Number 9)! 
Wire.onReceive(receiveEvent); // register event! 
x = 0;! 
}! 
! 
void loop() {! 
digitalWrite(LED_PIN, HIGH);! 
delay(x);! 
digitalWrite(LED_PIN, LOW);! 
delay(x);! 
}! 
! 
void receiveEvent(int howMany) {! 
x = Wire.receive(); // receive byte as an integer! 
}
SPI 
1.8" SPI TFT display, 160x128 18-bit color 
https://github.com/adafruit/Adafruit-ST7735-Library
SPI 
#include <Adafruit_GFX.h> // Core graphics library! 
#include <Adafruit_ST7735.h> // Hardware-specific library! 
#include <SPI.h>! 
! 
#define TFT_CS 10! 
#define TFT_RST 9 ! 
#define TFT_DC 8! 
! 
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);! 
!! 
void setup(){! 
tft.initR(); ! 
}! 
! 
void loop(){! 
! 
tft.fillScreen(ST7735_BLACK);! 
! 
tft.fillRoundRect(25, 10, 78, 60, 8, ST7735_WHITE);! 
! 
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_RED);! 
! 
}
Altri esempi 
http://arduino.cc/en/Tutorial/HomePage 
http://github.com/adafruit
Grazie! 
Fiore Basile 
fiore.basile@gmail.com 
http://fibasile.github.io 
http://fablabcascina.org 
http://fabbricalo.it

More Related Content

What's hot

Lezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 oreLezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 ore
Mirko Mancin
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshop
Daniele Iori
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Mauro Alfieri
 
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11Ionela
 
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoRiccardo Lemmi
 
Workshop arduino e sensori
Workshop arduino e sensoriWorkshop arduino e sensori
Workshop arduino e sensori
Paolo Aliverti
 
Roberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
Roberto Gallea: Workshop Arduino, giorno #1 Concetti FondamentaliRoberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
Roberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
Demetrio Siragusa
 
Arduino - il mio primo sketch
Arduino - il mio primo sketchArduino - il mio primo sketch
Arduino - il mio primo sketch
eugenio pombi
 
Arduino ICT2016 [IT]
Arduino ICT2016 [IT]Arduino ICT2016 [IT]
Arduino ICT2016 [IT]
Francesco Pascale
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
Mirko Mancin
 
OPDE Drives
OPDE DrivesOPDE Drives
OPDE Drives
TDE MACNO SPA
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
Pietro Aiuola
 
Workshop arduino
Workshop arduinoWorkshop arduino
Workshop arduino
Flaviano Fior
 
Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Daniele Costarella
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
Biagio (Gino) Zingales Alì
 
Presentazione
PresentazionePresentazione
Presentazionecesario
 
Progettare con Arduino come un Ingegnere
Progettare con Arduino come un IngegnereProgettare con Arduino come un Ingegnere
Progettare con Arduino come un Ingegnere
Emanuele Bonanni
 
Inseguitore solare
Inseguitore solareInseguitore solare
Inseguitore solare
aaa bbbb
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
OPS Italia
 
Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
Antonio Serra
 

What's hot (20)

Lezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 oreLezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 ore
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshop
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
 
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
 
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italiano
 
Workshop arduino e sensori
Workshop arduino e sensoriWorkshop arduino e sensori
Workshop arduino e sensori
 
Roberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
Roberto Gallea: Workshop Arduino, giorno #1 Concetti FondamentaliRoberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
Roberto Gallea: Workshop Arduino, giorno #1 Concetti Fondamentali
 
Arduino - il mio primo sketch
Arduino - il mio primo sketchArduino - il mio primo sketch
Arduino - il mio primo sketch
 
Arduino ICT2016 [IT]
Arduino ICT2016 [IT]Arduino ICT2016 [IT]
Arduino ICT2016 [IT]
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
 
OPDE Drives
OPDE DrivesOPDE Drives
OPDE Drives
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
 
Workshop arduino
Workshop arduinoWorkshop arduino
Workshop arduino
 
Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
 
Presentazione
PresentazionePresentazione
Presentazione
 
Progettare con Arduino come un Ingegnere
Progettare con Arduino come un IngegnereProgettare con Arduino come un Ingegnere
Progettare con Arduino come un Ingegnere
 
Inseguitore solare
Inseguitore solareInseguitore solare
Inseguitore solare
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
 
Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
 

Viewers also liked

Speed up your Django apps with Jython and SPDY
Speed up your Django apps with Jython and SPDYSpeed up your Django apps with Jython and SPDY
Speed up your Django apps with Jython and SPDY
Emanuele Palazzetti
 
Heavy Arduino
Heavy ArduinoHeavy Arduino
Heavy Arduino
Paolo Aliverti
 
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
Marco Livraghi
 
Arduino: domotica OpenSource
Arduino: domotica OpenSourceArduino: domotica OpenSource
Arduino: domotica OpenSource
Emanuele Palazzetti
 
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Elisa Rubino
 
Arduino 3
Arduino 3Arduino 3
Arduino 3
Elisa Rubino
 
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab VareseArduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
FaberLab
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2
Michele Maffucci
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 

Viewers also liked (10)

Speed up your Django apps with Jython and SPDY
Speed up your Django apps with Jython and SPDYSpeed up your Django apps with Jython and SPDY
Speed up your Django apps with Jython and SPDY
 
Heavy Arduino
Heavy ArduinoHeavy Arduino
Heavy Arduino
 
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
Mobiledevcamp 2012 Martina studiograficofm 19 Maggio 2012
 
Arduino: domotica OpenSource
Arduino: domotica OpenSourceArduino: domotica OpenSource
Arduino: domotica OpenSource
 
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
 
Arduino 3
Arduino 3Arduino 3
Arduino 3
 
Flyer 2014 v2
Flyer 2014 v2Flyer 2014 v2
Flyer 2014 v2
 
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab VareseArduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
Arduino, i makers e i Fablab - Mirco Piccin - Faberlab Varese
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 

Similar to Workshop Arduino by Fiore Basile

LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
Matteo Troìa
 
Arduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoTArduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoT
Biagio (Gino) Zingales Alì
 
Arduino - Cosa sono e come funzionano i display
Arduino - Cosa sono e come funzionano i displayArduino - Cosa sono e come funzionano i display
Arduino - Cosa sono e come funzionano i display
Biagio (Gino) Zingales Alì
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad Arduino
Simone Lusenti
 
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con ArduinoItalian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
Paolo Aliverti
 
Grix.it wood board usb
Grix.it    wood board usbGrix.it    wood board usb
Grix.it wood board usb
Davide Mercanti
 
Introduzione ad Arduino Antonio Serra Napoli
Introduzione ad Arduino Antonio Serra NapoliIntroduzione ad Arduino Antonio Serra Napoli
Introduzione ad Arduino Antonio Serra Napoli
Antonio Serra
 
Arduino
ArduinoArduino
Arduino
Antonio Serra
 
Robot schiva ostacoli
Robot schiva ostacoliRobot schiva ostacoli
Robot schiva ostacoli
Luigi Capasso
 
Internet delle cose
Internet delle coseInternet delle cose
Internet delle cose
Biagio (Gino) Zingales Alì
 
EuComm
EuCommEuComm
EuCommiBLio
 
An IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotionAn IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotion
Jennifer De Filicaia
 
Arduino ai raggi x
Arduino ai raggi xArduino ai raggi x
Arduino ai raggi x
Emanuele Bonanni
 
Arduino ai raggi x rendiamolo professionale
Arduino ai raggi x  rendiamolo professionaleArduino ai raggi x  rendiamolo professionale
Arduino ai raggi x rendiamolo professionale
Emanuele Bonanni
 
Arduino base
Arduino baseArduino base
Arduino base
Amedeo Lepore
 
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
SANTIAGO PABLO ALBERTO
 

Similar to Workshop Arduino by Fiore Basile (16)

LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
 
Arduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoTArduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoT
 
Arduino - Cosa sono e come funzionano i display
Arduino - Cosa sono e come funzionano i displayArduino - Cosa sono e come funzionano i display
Arduino - Cosa sono e come funzionano i display
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad Arduino
 
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con ArduinoItalian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
Italian Agile Day 2011 - Corso di cucina fusion elettro-agile con Arduino
 
Grix.it wood board usb
Grix.it    wood board usbGrix.it    wood board usb
Grix.it wood board usb
 
Introduzione ad Arduino Antonio Serra Napoli
Introduzione ad Arduino Antonio Serra NapoliIntroduzione ad Arduino Antonio Serra Napoli
Introduzione ad Arduino Antonio Serra Napoli
 
Arduino
ArduinoArduino
Arduino
 
Robot schiva ostacoli
Robot schiva ostacoliRobot schiva ostacoli
Robot schiva ostacoli
 
Internet delle cose
Internet delle coseInternet delle cose
Internet delle cose
 
EuComm
EuCommEuComm
EuComm
 
An IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotionAn IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotion
 
Arduino ai raggi x
Arduino ai raggi xArduino ai raggi x
Arduino ai raggi x
 
Arduino ai raggi x rendiamolo professionale
Arduino ai raggi x  rendiamolo professionaleArduino ai raggi x  rendiamolo professionale
Arduino ai raggi x rendiamolo professionale
 
Arduino base
Arduino baseArduino base
Arduino base
 
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
 

More from Commit University

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
Commit University
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Commit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Commit University
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
Commit University
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Commit University
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
Commit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
Commit University
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
Commit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Commit University
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
Commit University
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
Commit University
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Commit University
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
Commit University
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
Commit University
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
Commit University
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
Commit University
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
Commit University
 

More from Commit University (20)

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 

Workshop Arduino by Fiore Basile

  • 1. Arduino 101 Fiore Basile fiore.basile@gmail.com
  • 2. Cos’è Arduino? • Una (serie) di schede elettroniche • Ambiente di sviluppo • Una community
  • 3.
  • 7.
  • 11. Cosa si può fare?
  • 13. Input
  • 15. Comunicare Seriale Bluetooth 4.0 I2C USB Bluetooth 2.0 SPI Ethernet GPS TWI Wifi RF CAN Zigbee Midi
  • 17. Programmare Arduino IDE AVR GCC AvrDude Firmware + Bootloader +
  • 18. Sketch: C++ semplificato /* Questo e' un commento */ // anche questo e’ un commento int led = 13; void setup()! {! pinMode(ledPin, OUTPUT);! } void loop()! {! pinMode(ledPin, OUTPUT);! digitalWrite(ledPin, HIGH);! } COMMENTO VARIABILE INIZIALIZZAZIONE CICLO INFINITO
  • 19. Blink Accendere e spegnere un LED a intervalli di un secondo ! int led = 13;! ! void setup() { ! pinMode(led, OUTPUT); ! }! ! void loop() {! digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)! delay(1000); // wait for a second! digitalWrite(led, LOW); // turn the LED off by making the voltage LOW! delay(1000); // wait for a second! }!
  • 20. Monitor Seriale Debug e comunicazione col PC
  • 21. Porta seriale ! int led = 13;! ! void setup() { ! ! Serial.begin(9600);! ! pinMode(led, OUTPUT); ! }! ! void loop() {! ! Serial.println(“Accendo LED”);! ! digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)! delay(1000); // wait for a second! ! Serial.println(“Spengo LED”);! ! digitalWrite(led, LOW); // turn the LED off by making the voltage LOW! delay(1000); // wait for a second! }!
  • 22. Usare i sensori Grazie ai sensori possiamo acquisire dati dall’ambiente circostante
  • 23. Sensori • Analogici: Il segnale è un voltaggio misurato con un valore da 0 a 1024 • Digitali: Il segnale è sempre un voltaggio (0-5v) ma Arduino ci fornisce un valore 0 o 1
  • 25. Sensori Analogici Potenziometro Termitstor Photo-resistor Flex Sensori a resistenza variabile
  • 26. LED + Potenziometro int sensorPin = A0; // potenziometro int ledPin = 13; // LED int sensorValue = 0; // VALORE ! void setup() { pinMode(ledPin, OUTPUT); } ! void loop() { sensorValue = analogRead(sensorPin); digitalWrite(ledPin, HIGH); delay(sensorValue); digitalWrite(ledPin, LOW); delay(sensorValue); }
  • 27. Sensori Analogici Temperatura Accelerazione Distanza Sensori integrati
  • 28. Sensori Digitali Pulsanti Temperatura Accelerometri Giroscopio La maggior parte dei sensori “evoluti” Si leggono tramite vari protocolli Two Wire - i2c - SPI - Seriale
  • 29. Led + Bottone int led = 13; int button = 2; int buttonState = 0; ! void setup() { pinMode(led, OUTPUT); pinMode(button, INPUT); } void loop() { buttonState = digitalRead(button); if (buttonState == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }
  • 30. Output con Arduino Led Motore DC Motore Stepper Display LCD Motore servo Speaker
  • 33. PWM • Possiamo controllare la luminosità di un LED • Possiamo controllare un Motore Passo-Passo • Possiamo controllare un Servo Motore • Possiamo pilotare uno speaker
  • 35. LED Dimmer int sensorPin = A0; // potenziometro int ledPin = 13; // LED int sensorValue = 0; // VALORE ! void setup() { pinMode(ledPin, OUTPUT); } ! void loop() { sensorValue = analogRead(sensorPin); // input 0-1024 output 0-255 analogWrite(ledPin, sensorValue/4); }
  • 40. Dispositivi Avanzati WIFI MOTOR TFT ETHERNET GSM GPS, Midi, Relé etc
  • 41. Protocolli di comunicazione • One Wire • I2C SDA/SCK • SPI MISO/MOSI/CLK/SS • Seriale TX-RX
  • 42. DHT11 - Sensore Umidità - One Wire #include <dht11.h>! ! dht11 DHT11;! #define DHT11PIN 2! int chk = DHT11.read(DHT11PIN);! ! Serial.print("Read sensor: ");! switch (chk)! {! case DHTLIB_OK: ! ! ! Serial.println("OK"); ! ! ! break;! case DHTLIB_ERROR_CHECKSUM: ! ! ! Serial.println("Checksum error"); ! ! ! break;! case DHTLIB_ERROR_TIMEOUT: ! ! ! Serial.println("Time out error"); ! ! ! break;! default: ! ! ! Serial.println("Unknown error"); ! ! ! break;! }! http://playground.arduino.cc/main/DHT11Lib
  • 43. Protocollo Two Wire Interface (TWI)
  • 44. I2C Master #include <Wire.h>! ! #define LED_PIN 13! byte x = 0;! ! void setup()! {! Wire.begin(); // Start I2C Bus as Master! pinMode(LED_PIN, OUTPUT);! digitalWrite(LED_PIN, LOW);! ! }! void loop()! {! ! Wire.beginTransmission(9); // transmit to device #9! Wire.send(x); // sends x ! Wire.endTransmission(); // stop transmitting! x++;! if (x > 5) x=0;! delay(450);! }
  • 45. I2C Slave #include <Wire.h>! ! #define LED_PIN 13! ! int x;! ! void setup() {! Wire.begin(9); // Start I2C Bus as a Slave (Device Number 9)! Wire.onReceive(receiveEvent); // register event! x = 0;! }! ! void loop() {! digitalWrite(LED_PIN, HIGH);! delay(x);! digitalWrite(LED_PIN, LOW);! delay(x);! }! ! void receiveEvent(int howMany) {! x = Wire.receive(); // receive byte as an integer! }
  • 46. SPI 1.8" SPI TFT display, 160x128 18-bit color https://github.com/adafruit/Adafruit-ST7735-Library
  • 47. SPI #include <Adafruit_GFX.h> // Core graphics library! #include <Adafruit_ST7735.h> // Hardware-specific library! #include <SPI.h>! ! #define TFT_CS 10! #define TFT_RST 9 ! #define TFT_DC 8! ! Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);! !! void setup(){! tft.initR(); ! }! ! void loop(){! ! tft.fillScreen(ST7735_BLACK);! ! tft.fillRoundRect(25, 10, 78, 60, 8, ST7735_WHITE);! ! tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_RED);! ! }
  • 49. Grazie! Fiore Basile fiore.basile@gmail.com http://fibasile.github.io http://fablabcascina.org http://fabbricalo.it