Workshop arduino e sensori

Post on 18-Dec-2014

453 views 4 download

description

Sono le dispense del corso/workshop su arduino e l'impiego dei sensori. Nel corso spiego come utilizzare i sensori analogici e digitali.

transcript

Arduino e sensori

http://www.zeppelinmaker.it

Analogici / Digitali(Complessi)

Sensori

PulsanteTermistore

FotoresistenzaRilevatore di pressione

Push Button

Pulsanti

+ -

LED

al pin 13 al pin GND

Resistenza

Resistenza

non ha un verso

Collegamento

Collegamento

Collegamento

Sketchvoid setup() {

pinMode(13, OUTPUT);pinMode(7, INPUT);

}

void loop() {If (digitalRead(7) == HIGH) {

digitalWrite(13, HIGH);} else {

digitalWrite(13, LOW);}

}

Termistore

Termistore - PTCCome funziona?

temperatura

resi

sten

za

Termistore - NTCCome funziona?

temperatura

resi

sten

za

Lab - termistore

Collegamento

Collegamento

Sketch

void setup() {Serial.begin(9600);

}

void loop() {Serial.println(analogRead(A0));

}

analogRead(A0);

0 – 1023

A0 A1 A2 A3 A4 A5

5v / 1024 = 0.0049v

1 step = 4.9mV

Lab - termostato caldaia

Termostato

Sketchvoid setup() {

pinMode(13, OUTPUT);}

void loop() {If ( analogRead(A0) > 500 ) {

digitalWrite(13, HIGH);} else {

digitalWrite(13, LOW);}

}

Altri sensori di temperatura

LM36

LM36

LM36n : 1024 = Vs : 5v

n:1024 = Vs:5000

Ora devo convertire la tensione in una lettura di temperatura: Ts. C'è un coeff. di conversione che vale 10mV/°C

Ts=Vs10

=(5000⋅n)

1024⋅(

110

)=(500⋅n)

1024

Vs=(n⋅5000)

1024

LM36

Termocoppia

Termocoppia

Completare il termostato rendendolo regolabile

Trimmer

trimmer

Sketch

void loop() {

dur = analogRead(A0); ...}

Fotoresistenza

FotoresistenzaCome funziona?

luce

resi

sten

za

Collegamento

Collegamento

Sketch

void setup() {Serial.begin(9600);

}

void loop() {Serial.println(analogRead(A0));

}

Lab - led foto sensibile

Sketchvoid setup() {

pinMode(9, OUTPUT);}

void loop() {int val = analogRead(A0);delay(500);val = map(val, 0, 1023, 255, 0);

AnalogWrite(9, val);

}

PWM - Pulse Width Modulation

analogWrite(9, numero);

digitalWrite(9, HIGH/LOW);

0 : 255

map()

map ( value, fromLow, fromHigh, toLow, toHigh)

val = map(val, 0, 1023, 255, 0);

AnalogWrite()

Non produce valori continui, ma solo PWM

Fotodiodi / fototransistor

Rilevatore di pressione

collegamento

collegamento

Sketch

void setup() {Serial.begin(9600);

}

void loop() {Serial.write(analogRead(A0));

}

Microfono

RFPower

Sunil Vallu

Sensori “complessi”

Accelerometro, Giroscopio, Bussola,Gps, Internet...

Accelerometro

Bussola

Orologio

Internet?

http://www.zeppelinmaker.it

paolo.aliverti@gmail.com