Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #define MS4525DO_address 0x28 // Indirizzo I2C del MS4525DO
- void setup() {
- Wire.begin();
- Serial.begin(9600);
- }
- void loop() {
- Wire.requestFrom(MS4525DO_address, 4); // Richiedi 4 byte dal sensore
- delay(10); // Aspetta che i dati siano pronti
- if(Wire.available()) {
- uint8_t buf[4];
- Wire.readBytes(buf, 4); // Leggi i 4 byte
- uint16_t pressure_raw = (buf[0] << 8) | buf[1]; // Combina i primi due byte per ottenere la pressione grezza
- pressure_raw = pressure_raw & 0x3FFF; // Rimuovi i primi due bit (status bits)
- uint16_t temp_raw = (buf[2] << 8) | buf[3]; // Combina gli ultimi due byte per ottenere la temperatura grezza
- temp_raw = temp_raw >> 5; // Rimuovi gli ultimi 5 bit (status bits)
- float pressure_psi = ((pressure_raw - 0.1*16383) * (30-(-30)) / (0.8*16383)) - 30; // Converti la pressione grezza in psi
- float temp_C = ((200.0 * temp_raw) / 2047) - 50; // Converti la temperatura grezza in gradi Celsius
- float speed_mps = sqrt((2*abs(pressure_psi))/(1.2041*0.5)); // Calcola la velocità in m/s utilizzando la legge di Bernoulli
- float speed_kmh = speed_mps * 3.6; // Converti la velocità in km/h
- Serial.print("Pressione grezza: ");
- Serial.println(pressure_raw);
- Serial.print("Pressione in PSI: ");
- Serial.println(pressure_psi);
- Serial.print("Velocità del vento: ");
- Serial.print(speed_kmh);
- Serial.println(" Km/h");
- Serial.print("Temperatura: ");
- Serial.print(temp_C);
- Serial.println(" C°");
- }
- delay(1000); // Aspetta 1 secondo prima del prossimo ciclo
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement