Idee per nuovi progetti Arduino

Il corso “Costruiamo la casa del futuro” si è concluso. Ma non finisce qui. E’ in fase di progettazione un nuovo workshop ‘avanzato’, sempre destinato ai ragazzi e dedicato alla tecnologia creativa, previsto agli inizi di ottobre.

Concedeteci una parentesi autocelebrativa… Siamo orgogliosi di aver avviato – primi a Barcellona Pozzo di Pozzo – un corso junior STEM con l’utilizzo del kit Arduino. E con una partecipazione entusiasta da parte degli aspiranti ingegneri elettronici!

Come già pubblicato nel precedente post, di seguito troverete i progetti messi a punto dal nostro docente, l’ingegnere Fabio Genovese, per utilizzare il kit Arduino in modo creativo e personale. Grazie ancora, Fabio!

Lezione 2. “Giochi di luce”

Il progetto è incentrato sull’utilizzo di un componente chiave che permette a qualsiasi circuito elettronico di rilevare l’intensità luminosa dell’ambiente circostante: la fotoresistenza.
Il circuito e il codice permettono ad Arduino di comprendere tre livelli d’intensità luminosa: basso (luce rossa) – ottimale (luce verde) e alto (luce gialla).
Puntando una sorgente luminosa sulla fotoresistenza si ottiene un cambio di colore del Led.

Per i più audaci, è possibile anche collegare un “buzzer” (cicalino) che consente di trasformare la luce percepita dalla fotoresistenza in un suono.

Visto che siamo ancora in clima pasquale, nel codice è nascosto un “easter egg”, una funzionalità segreta che fa un simpatico gioco di luce colorata scollegando un componente. Chi indovina qual è il componente da scollegare?

Buon divertimento!

/* Costruiamo la casa del futuro

SpazioLab 8 – Barcellona Pozzo di Gotto (ME)

Licenza Open Source GPLv3

Credits: Fabio Genovese

ing.fabiogenovese@gmail.com
*/

define fotoResistenza A0

define ledBlu 9

define ledRosso 11

define ledVerde 10

define buzzer 3

int luce;
int suono;
void setup(){
pinMode(ledBlu, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRosso, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(fotoResistenza, INPUT);
Serial.begin(9600);
}

void setColourRgb(unsigned int red, unsigned int green, unsigned int blue) {
analogWrite(ledRosso, red);
analogWrite(ledVerde, green);
analogWrite(ledBlu, blue);
}

void loop(){
luce = analogRead(fotoResistenza);
Serial.println(luce);
//You can change value “25”
suono = map(luce, 0, 1000, 0, 5000);
tone(buzzer,luce);

if (luce > 3 && luce < 200) { digitalWrite (ledRosso, HIGH); digitalWrite (ledVerde, LOW); digitalWrite (ledBlu, LOW); } if (luce >= 200 && luce < 700) { digitalWrite (ledRosso, LOW); digitalWrite (ledVerde, HIGH); digitalWrite (ledBlu, LOW); } if (luce >= 700)
{
digitalWrite (ledRosso, HIGH);
digitalWrite (ledVerde, HIGH);
digitalWrite (ledBlu, LOW);
}
// Easter egg!

if (luce <= 3)
{
noTone(buzzer);
unsigned int rgbColour[3];

// Start off with red.
rgbColour[0] = 255;
rgbColour[1] = 0;
rgbColour[2] = 0;

// Choose the colours to increment and decrement.
for (int decColour = 0; decColour < 3; decColour += 1) {
int incColour = decColour == 2 ? 0 : decColour + 1;

// cross-fade the two colours.
for(int i = 0; i < 255; i += 1) {
  rgbColour[decColour] -= 1;
  rgbColour[incColour] += 1;

  setColourRgb(rgbColour[0], rgbColour[1], rgbColour[2]);
  delay(5);
}

}
}

}

Lezione 3. “Fa caldo o fa freddo?”

In quest’ultima lezione impariamo ad usare il fantastico sensore DHT11, una piccolissima meraviglia dal costo estremamente contenuto (meno di 1€) che consente ad Arduino di conoscere temperatura ed umidità dell’ambiente che lo circonda. Perfetto per tenere sotto controllo i consumi di riscaldamento e raffrescamento, nonché per capire se è il caso di aprire le finestre (umidità troppo alta).
Verrà acceso il led blu se fa troppo freddo (temperatura < 20°C), il led verde se la temperatura è ottimale (tra 20 e 27°C) e il led rosso se fa troppo caldo.
Inoltre, verranno prodotti due suoni distinti con il buzzer per indicare una temperatura troppo calda o troppo fredda.

E ora costruisci la tua casa! In fondo al post troverai il file col tracciato da stampare su cartoncino, colorare e ritagliare per creare la tua casa. Puoi montare i sensori all’interno e giocare con il movimento, la luce e la temperatura con i progetti che abbiamo visto durante le tre lezioni di “Costruiamo la casa del futuro!”.

A presto!

/* Costruiamo la casa del futuro – SpazioLab 8 Barcellona P.G. ME

Lez.3 Temperatura

Licenza Open Source GPLv3

Fabio Genovese ing.fabiogenovese@gmail.com
*/

include

include

define BUZZER 3

define DHTPIN 7

define DHTTYPE DHT11

define LED_FA_FREDDO 9

define LED_SI_STA_BENE 10

define LED_FA_CALDO 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println(“DHT11 test!”);
pinMode(BUZZER, OUTPUT);
pinMode (LED_FA_FREDDO , OUTPUT);
pinMode (LED_SI_STA_BENE , OUTPUT);
pinMode (LED_FA_CALDO , OUTPUT);
dht.begin();
}

void loop() {

delay(2000);

float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);

if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(“Non riesco a leggere il sensore DHT!”);
return;
}

Serial.print(“Umidità: “);
Serial.print(h);
Serial.print(” %\t”);
Serial.print(“Temperatura: “);
Serial.print(t);
Serial.println(” *C “);
if (t <= 20) { Serial.println(“Troppo freddo!”); digitalWrite(LED_FA_FREDDO, HIGH); tone(BUZZER, 440); delay (1000); noTone(BUZZER); digitalWrite(LED_FA_FREDDO, LOW); } if (20 < t < 27) { Serial.println(“Temperatura perfetta!”); digitalWrite(LED_SI_STA_BENE, HIGH); delay (1000); digitalWrite(LED_SI_STA_BENE, LOW); } if (t >= 29) {
Serial.println(“Troppo caldo!”);
digitalWrite(LED_FA_CALDO, HIGH);
tone(BUZZER, 1000);
delay (1000);
noTone(BUZZER);
digitalWrite(LED_FA_CALDO, LOW);
}

}

Librerie necessarie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *