際際滷

際際滷Share a Scribd company logo
Arduino 101 
Fiore Basile 
fiore.basile@gmail.com
Cos竪 Arduino? 
 Una (serie) di schede elettroniche 
 Ambiente di sviluppo 
 Una community
Workshop Arduino by Fiore Basile
La Scheda
Microcontroller - Famiglia AVR
Varianti
Workshop Arduino by Fiore Basile
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 dallambiente 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 lintervallo 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 (20)

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-11
Ionela
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italiano
Riccardo 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 2
Daniele 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
Presentazione
cesario
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
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-11
Ionela
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italiano
Riccardo 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
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
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
Pietro Aiuola
Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2
Daniele Costarella
Presentazione
PresentazionePresentazione
Presentazione
cesario
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

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
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
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
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
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, 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

Similar to Workshop Arduino by Fiore Basile (16)

Arduino 2- 際際滷 descrizione Architettura
Arduino 2- 際際滷 descrizione ArchitetturaArduino 2- 際際滷 descrizione Architettura
Arduino 2- 際際滷 descrizione Architettura
robertodefazio3
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
Arduino
ArduinoArduino
Arduino
Antonio Serra
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
Robot schiva ostacoli
Robot schiva ostacoliRobot schiva ostacoli
Robot schiva ostacoli
Luigi Capasso
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdfSLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
bakikiy278
Internet delle cose
Internet delle coseInternet delle cose
Internet delle cose
Biagio (Gino) Zingales Al狸
EuComm
EuCommEuComm
EuComm
iBLio
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 2- 際際滷 descrizione Architettura
Arduino 2- 際際滷 descrizione ArchitetturaArduino 2- 際際滷 descrizione Architettura
Arduino 2- 際際滷 descrizione Architettura
robertodefazio3
LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
Matteo Tro狸a
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
Robot schiva ostacoli
Robot schiva ostacoliRobot schiva ostacoli
Robot schiva ostacoli
Luigi Capasso
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdfSLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
bakikiy278
EuComm
EuCommEuComm
EuComm
iBLio
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 rendiamolo professionale
Arduino ai raggi x  rendiamolo professionaleArduino ai raggi x  rendiamolo professionale
Arduino ai raggi x rendiamolo professionale
Emanuele Bonanni

More from Commit University (20)

GitHub Copilot:vediamo chi comanda - Commit University.pdf
GitHub Copilot:vediamo chi comanda - Commit University.pdfGitHub Copilot:vediamo chi comanda - Commit University.pdf
GitHub Copilot:vediamo chi comanda - Commit University.pdf
Commit University
Contract Driven Development - Branch 2024.pdf
Contract Driven Development - Branch 2024.pdfContract Driven Development - Branch 2024.pdf
Contract Driven Development - Branch 2024.pdf
Commit University
Cybersecurity & AI: Illusioni e Speranze
Cybersecurity & AI: Illusioni e SperanzeCybersecurity & AI: Illusioni e Speranze
Cybersecurity & AI: Illusioni e Speranze
Commit University
Migliorare la Developer Experience in un mondo Cloud Native
Migliorare la Developer Experience in un mondo Cloud NativeMigliorare la Developer Experience in un mondo Cloud Native
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
Scopri come sfruttare la potenza della Hybrid RAG
Scopri come sfruttare la potenza della Hybrid RAGScopri come sfruttare la potenza della Hybrid RAG
Scopri come sfruttare la potenza della Hybrid RAG
Commit University
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Commit University
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdfOltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
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
Nelliperspazio con Rocket: il Framework Web di Rust!
Nelliperspazio con Rocket: il Framework Web di Rust!Nelliperspazio con Rocket: il Framework Web di Rust!
Nelliperspazio 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-際際滷.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdf
Commit University
際際滷-10years.pdf
際際滷-10years.pdf際際滷-10years.pdf
際際滷-10years.pdf
Commit University
Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...
Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...
Collaborazione, Decisionalita e Gestione della Complessita 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
GitHub Copilot:vediamo chi comanda - Commit University.pdf
GitHub Copilot:vediamo chi comanda - Commit University.pdfGitHub Copilot:vediamo chi comanda - Commit University.pdf
GitHub Copilot:vediamo chi comanda - Commit University.pdf
Commit University
Contract Driven Development - Branch 2024.pdf
Contract Driven Development - Branch 2024.pdfContract Driven Development - Branch 2024.pdf
Contract Driven Development - Branch 2024.pdf
Commit University
Cybersecurity & AI: Illusioni e Speranze
Cybersecurity & AI: Illusioni e SperanzeCybersecurity & AI: Illusioni e Speranze
Cybersecurity & AI: Illusioni e Speranze
Commit University
Migliorare la Developer Experience in un mondo Cloud Native
Migliorare la Developer Experience in un mondo Cloud NativeMigliorare la Developer Experience in un mondo Cloud Native
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
Scopri come sfruttare la potenza della Hybrid RAG
Scopri come sfruttare la potenza della Hybrid RAGScopri come sfruttare la potenza della Hybrid RAG
Scopri come sfruttare la potenza della Hybrid RAG
Commit University
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Commit University
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdfOltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
Oltre l'hype: vulnerabilit e limiti dell'intelligenza artificiale.pdf
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
Nelliperspazio con Rocket: il Framework Web di Rust!
Nelliperspazio con Rocket: il Framework Web di Rust!Nelliperspazio con Rocket: il Framework Web di Rust!
Nelliperspazio 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-際際滷.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-際際滷.pdf
Commit University
Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...
Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...
Collaborazione, Decisionalita e Gestione della Complessita nel Tempo: cosa ...
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

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
  • 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 dallambiente 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
  • 32. PWM Variando lintervallo acceso-spento
  • 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