Arduino - il mio primo sketch
-
Upload
eugenio-pombi -
Category
Technology
-
view
683 -
download
3
description
Transcript of Arduino - il mio primo sketch
Il mio primo sketch
Il mio primo sketch
Eugenio Pombifreelance web developer
@euxpom
Jacopo Diamantistudente, astrofisico
@jacdiam
Cos'è arduino?
"framework open source per la prototipazione rapida e l'apprendimento veloce"
Wikipedia
Panoramica
Installazione IDE sviluppohttp://arduino.cc
scaricate gli sketch
http://nerd2business.net/arduino.zip
La breadboard
Primo circuito: il diodo LED
Occorrente:
4 Cavetti1 diodo LED1 resistenza da 220 Ohm (rosso-rosso-marrone)
Primo circuito: il diodo LED-Il piedino più lungo del LED è il polo positivo;
-La resistenza è chiamata resistenza di pull-up.
-La resistenza di pull-up serve a limitare la corrente che scorre nel LED. Si può calcolare con la legge di Ohm...
-Per adesso montiamo il circuito, e poi facciamo un pò di teoria!
Come scelgo la resistenza?ROSSO: 1.8 Volt GIALLO: 1.9 Vol ARANCIO: 2.0 VoltVERDE: 2.0 Volt BLU: 3.5 Volt AZZURRO: 3.0 Volt
(grazie a elettronicaincorso.it/ per i valori)
Un LED può sopportare al massimo una corrente che va dai 10 ai 30 mA circa.Per non fornire troppa corrente al LED, e quindi per non bruciarlo, scegliamo una resistenza opportuna usando la Legge di Ohm.
R (Ohm) = V (Volt) / I (Ampère)
Esempio con un LED rosso:1- Per trovare V, sottraggo alla tensione di alimentazione (5v) quella di funzionamento del LED V = 5v - 1,8v = 3,2v
2- Divido il valore trovato per la corrente che può sopportare il LED (per sicurezza 15 mA, ovvero 0,015A)
R = 3,2v / 0,015A = 213 Ohm
Il codice
I commenti
//commento su una sola riga
/* commento
che occupa
più righe */
Blocchi di codicevoid setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
void passamiIlSale() {
allungaBraccio("destro");
afferra("sale");
passa("sale", "eugenio");
}
blocchi minimi
setup () {
[...]
}
loop () {
[...]
}
variabili
int led = 13;
tipo nomeVariabile = valore;
pinMode
pinMode(led, OUTPUT);
nomeFunzione(argomento1, argomento2...);
pinMode(qualePin, Modalità);
digitalWrite
digitalWrite(led, HIGH);
digitalWrite(qualePin, Modalità);
delay
delay(1000);
delay(milliseconds);
loop
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
Esercizio 1
Fate in modo che il led rimanga acceso per un secondo e mezzo e poi si spenga per mezzo secondo
Esercizio 2
Fate in modo che il led sia attaccato al pin 12 di arduino anziché il 13
Secondo circuito: due diodi LED
Occorrente:
6 Cavetti;2 diodi LED;2 resistenze da 220 Ohm (rosso-rosso-marrone)
Secondo circuito: 2 diodi LED-Il piedino più lungo del LED è il polo positivo;-La resistenza è chiamata resistenza di pull-up.
DoubleLed.inoint led1 = 13;
int led2 = 5;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
[...]
prima parte
DoubleLed.ino[...]
void loop() {
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
}
seconda parte
Terzo circuito: diodo LED e pulsante
Occorrente:
7 Cavetti;1 diodo LED;1 pulsante;1 resistenza da 220 Ohm (rosso-rosso-marrone); 1 resistenza da 10 KOhm (marrone-nero-arancio).
Terzo circuito: diodo LED e pulsante-Il piedino più lungo del LED è il polo positivo;
-Quando il pulsante non è premuto, il pin digitale sarà collegato a terra tramite la resistenza di pull-down, quindi rivelerà un segnale di tipo LOW (0v).
-Se premo il pulsante, il pin verrà collegato direttamente alla tensione di alimentazione e rivelerà un segnale di tipo HIGH (5v).
-In base al tipo di segnale rivelato, Arduino può essere programmato per fare delle azioni, come ad esempio accendere il nostro LED.
LedButton.inoint led = 13;
int button = 2;
int val;
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT);
}
[...]
prima parte
LedButton.ino[...]
void loop() {
val = digitalRead(button);
if (val == HIGH) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
seconda parte
Quarto circuito: diodo LED e fotoresistenza.
Occorrente:
7 Cavetti;1 diodo LED;1 fotoresistenza;1 resistenza da 220 Ohm (rosso-rosso-marrone); 1 resistenza da 10 KOhm (marrone-nero-arancio).
Quarto circuito: diodo LED e fotoresistenza.
-Ai capi della fotoresistenza troveremo una tensione variabile, che ci può dire quanta luce c'è nella stanza.
-Come si fa a misurare una tensione che non dà un segnale di tipo HIGH (5v) o LOW (0v)......ma 2,3v o 3,56v oppure 4,12v?
UTILIZZIAMO I PIN ANALOGICI!
I pin analogici restituiscono un valore che va da 0 a 1023.
tensione = valore x 0,005v
LedPhoto1.ino
int luce = 0;
int val;
void setup() {
Serial.begin(9600);
}
[...]
prima parte
LedPhoto1.inoint luce = 0;
int val;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(luce);
Serial.println(val);
delay(500);
} Tools -> Serial Monitor
seconda parte
LedPhoto2.inoint luce = 0;
int val;
int led = 13;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
prima parte
LedPhoto2.inovoid loop() {
val = analogRead(luce); //da 0 a 1023
Serial.println(val);
if(val < 200){
digitalWrite(led, HIGH);
Serial.println("poca luce: accendo il led!");
} else {
digitalWrite(led, LOW);
Serial.println("molta luce: spengo il led!");
}
Serial.println("");
delay(500);
}
seconda parte
Quinto circuito: sensore di temperatura LM35.
Occorrente:
5 Cavetti;1 LM35
Quinto circuito: sensore di temperatura LM35.
Il nostro primo vero sensore!
-LM35 è un sensore di temperatura LINEARE.
-LM35 ci dà in output una tensione proporzionale alla temperatura secondo questa formuletta:
temperatura = tensione x 100
-Questo vuol dire che per usare la formuletta dobbiamo prima convertire il valore analogico in una tensione usando la relazione di prima:
tensione = valore x 0,005v
LM35.ino
int temp;
int val;
int sensor = 0;
void setup() {
Serial.begin(9600);
}
[...]
prima parte
LM35.inovoid loop() {
//Leggo il sensore e applico la formuletta
val = analogRead(sensor);
temp = (5./1024.) * val * 100.;
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.println(" gradi.");
Serial.println("");
delay(500);
}
seconda parte
Aiuto!
Arduino User Group Roma
su
Google Groups