
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /* Prof. Maffucci Michele 02.10.2025 LPS22HB del Sensor Kit Stampa valori su Serial Monitor*/#include <Arduino_SensorKit.h> // include unico per tutti i sensorivoid 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 hPafloat 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):
1 2 | 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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | /* 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 sensorivoid setup() { Serial.begin(9600); Pressure.begin(); // inizializza il barometroOled.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 hPafloat 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 capoOled.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 decimaliOled.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 🙂












