
Cenni teorici
Cos’è la pressione atmosferica?
La pressione atmosferica è la forza esercitata dall’aria su ogni unità di superficie. Viene misurata in pascal (Pa) o, più comunemente, in hectopascal (hPa) dove 1 hPa = 100 Pa.
Il sensore BMP280
Il BMP280 è un sensore barometrico assoluto prodotto da Bosch Sensortec. Le sue caratteristiche principali:
- Campo di misura: 300 – 1100 hPa (≈ -500 m / +9000 m s.l.m.)
- Accuratezza assoluta tip. ±1 hPa; accuratezza relativa ±0.12 hPa (≈ ±1 m)
- Interfacce: I²C (fino a 3.4 MHz) e SPI
- Consumo: 2.7 µA @ 1 Hz in modalità normale
- Range termico: –40 … +85 °C
Collegamenti
Collegate il cavo Grove tra il connettore del sensore e la porta I²C (qualsiasi) sullo shield.

Installazione libreria
Sicuramente è un’operazione che avete già eseguito, in ogni caso lo ricordo:
- Arduino IDE > Gestione librerie > cerca “Arduino_SensorKit”.
- Installate la libreria (include automaticamente LPS22HB, HTS221, OLED, ecc.)
Esempio 01: Sketch base – Lettura e stampa dati su Serial Monitor
/*
Prof. Maffucci Michele
02.10.2025
LPS22HB del Sensor Kit
Stampa valori su Serial Monitor
*/
#include <Arduino_SensorKit.h> // include unico per tutti i sensori
void setup() {
Serial.begin(9600);
Pressure.begin(); // inizializza il barometro
}
void loop() {
// La libreria restituisce:
// - pressione in pascal
// - temperatura in gradi Celsius
// - altitudine in metri rispetto a 1013,25 hPa
float pressionePa = Pressure.readPressure();
float temperaturaC = Pressure.readTemperature();
float altitudineM = Pressure.readAltitude();
// conversione pa → hPa per leggibilità
float pressioneHpa = pressionePa / 100.0;
Serial.print(F("Pressione: "));
Serial.print(pressioneHpa, 2);
Serial.print(F(" hPa\tTemperatura: "));
Serial.print(temperaturaC, 2);
Serial.print(F(" °C\tAltitudine: "));
Serial.print(altitudineM, 1);
Serial.println(F(" m"));
delay(1000);
}

Ricordo che, come già indicato nelle precedenti lezioni, la F(…) (maiuscola), inserita all’interno delle Serial.print(), è una macro di Arduino che serve a mettere una stringa letterale in memoria flash (PROGMEM) invece che copiarla nella SRAM al momento della stampa.
Perché è utile utilizzare F
- Le board come Arduino UNO (AVR) hanno poca SRAM (2 KB).
- Senza
(), ogni stringa tra virgolette ("Pressione: ") viene copiata in SRAM prima di stamparla > spreco di RAM. - Con
F("Pressione: "), la stringa resta in flash eSerial.print()la legge direttamente da lì > RAM risparmiata.
Come si usa
Funziona con tutte le funzioni che derivano da Print (es. Serial.print, Serial.println, spesso anche display che usano print in stile Arduino):
Serial.print(F("Pressione: "));
Serial.println(F(" hPa"));
Quando usarla
- Frasi/titoli/menu costanti e ripetute (log su Serial, messaggi di errore, etichette).
- Con progetti in cui si ha scarsa disponibilità di RAM (UNO/Nano classici) può fare la differenza.
Limiti
- Non puoi concatenare direttamente elementi come F(“A”) + F(“B”).
- Evitare di mescolarla con String in modo implicito (meglio stampare pezzi separati).
- Funzioni come sprintf non leggono da flash; su AVR esistono versioni “_P” (es. sprintf_P) per farlo.
La struttura delle funzioni (Pressure.begin(), Pressure.readPressure(), ecc.) è la stessa mostrata negli esempi ufficiali di Arduino.
Esempio 02: Lettura e stampa dati su Serial Monitor e display OLED
Abbiamo già visto l’uso del display OLED nella lezione: Lezione 9 – Corso di Elettronica Creativa con Arduino Sensor Kit vediamo ora come mostrare i valori di: pressione, temperatura e altitudine anche sul display OLED.

/*
Prof. Maffucci Michele
02.10.2025
BMP280 - Arduino Sensor Kit
Stampa valori su Serial Monitor e OLED
*/
#include <Arduino_SensorKit.h> // include unico per tutti i sensori
void setup() {
Serial.begin(9600);
Pressure.begin(); // inizializza il barometro
Oled.begin();
// Inizializza il display OLED.
// Fa partire la comunicazione I2C e manda al display la sequenza di avvio.
// Senza questa riga lo schermo non mostra nulla.
Oled.setFlipMode(true);
// Ruota il contenuto di 180° (utile se lo vedi capovolto).
// Se nel tuo caso appare già dritto, puoi mettere false: Oled.setFlipMode(false);
Oled.setFont(u8x8_font_chroma48medium8_r);
// Sceglie il font (carattere) 8x8.
// Con un font 8x8 il display 128x64 si comporta come una griglia 16 colonne × 8 righe.
// Significa che setCursor(colonna, riga) userà numeri tra 0..15 (colonne) e 0..7 (righe).
Oled.clear();
// Pulisce lo schermo (cancella tutto quello che c’era prima).
}
void loop() {
// La libreria restituisce:
// - pressione in pascal
// - temperatura in gradi Celsius
// - altitudine in metri rispetto a 1013,25 hPa
float pressionePa = Pressure.readPressure();
float temperaturaC = Pressure.readTemperature();
float altitudineM = Pressure.readAltitude();
// conversione pa → hPa per leggibilità
float pressioneHpa = pressionePa / 100.0;
// --- Intestazione ---
Oled.setCursor(0, 0); // colonna 0, riga 0
Oled.println("STAZIONE METEO"); // stampa la stringa e va a capo
Oled.println("P - Pressione"); // stampa la stringa e va a capo
Oled.println("T - Temperatura"); // stampa la stringa e va a capo
Oled.println("A - Altitudine"); // stampa la stringa e va a capo
Oled.setCursor(0, 5); // colonna 0, riga 2
Oled.print("P: "); // stampa la stringa P:
Oled.print(pressioneHpa, 2); // stampa valore della pressione con 2 numeri decimali
Oled.setCursor(0, 6); // colonna 0, riga 3
Oled.print("T: "); // stampa la stringa T:
Oled.print(temperaturaC, 2); // stampa valore della temperatura con 2 numeri decimali
Oled.refreshDisplay();
Oled.setCursor(0, 7); // colonna 0, riga 4
Oled.print("A: "); // stampa la stringa A:
Oled.print(altitudineM, 2); // stampa valore dell'altitudine con 2 numeri decimali
Oled.refreshDisplay();
// Aggiorna fisicamente il display (altrimenti potresti non vedere le modifiche).
delay(60);
Serial.print(F("Pressione: "));
Serial.print(pressioneHpa, 2);
Serial.print(F(" hPa\tTemperatura: "));
Serial.print(temperaturaC, 2);
Serial.print(F(" °C\tAltitudine: "));
Serial.print(altitudineM, 1);
Serial.println(F(" m"));
delay(1000);
}

Buon Coding a tutti 🙂

























