Advertisement
webtronico

Arduino - Lettura sensore differenziale MS4525DO

May 10th, 2024 (edited)
882
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Wire.h>
  2.  
  3. #define MS4525DO_address 0x28 // Indirizzo I2C del MS4525DO
  4.  
  5. void setup() {
  6.   Wire.begin();
  7.   Serial.begin(9600);
  8. }
  9.  
  10. void loop() {
  11.   Wire.requestFrom(MS4525DO_address, 4); // Richiedi 4 byte dal sensore
  12.   delay(10); // Aspetta che i dati siano pronti
  13.  
  14.   if(Wire.available()) {
  15.     uint8_t buf[4];
  16.     Wire.readBytes(buf, 4); // Leggi i 4 byte
  17.  
  18.     uint16_t pressure_raw = (buf[0] << 8) | buf[1]; // Combina i primi due byte per ottenere la pressione grezza
  19.     pressure_raw = pressure_raw & 0x3FFF; // Rimuovi i primi due bit (status bits)
  20.  
  21.     uint16_t temp_raw = (buf[2] << 8) | buf[3]; // Combina gli ultimi due byte per ottenere la temperatura grezza
  22.     temp_raw = temp_raw >> 5; // Rimuovi gli ultimi 5 bit (status bits)
  23.  
  24.     float pressure_psi = ((pressure_raw - 0.1*16383) * (30-(-30)) / (0.8*16383)) - 30; // Converti la pressione grezza in psi
  25.     float temp_C = ((200.0 * temp_raw) / 2047) - 50; // Converti la temperatura grezza in gradi Celsius
  26.  
  27.     float speed_mps = sqrt((2*abs(pressure_psi))/(1.2041*0.5)); // Calcola la velocità in m/s utilizzando la legge di Bernoulli
  28.     float speed_kmh = speed_mps * 3.6; // Converti la velocità in km/h
  29.  
  30.     Serial.print("Pressione grezza: ");
  31.     Serial.println(pressure_raw);
  32.     Serial.print("Pressione in PSI: ");
  33.     Serial.println(pressure_psi);
  34.     Serial.print("Velocità del vento: ");
  35.     Serial.print(speed_kmh);
  36.     Serial.println(" Km/h");
  37.     Serial.print("Temperatura: ");
  38.     Serial.print(temp_C);
  39.     Serial.println(" C°");
  40.   }
  41.  
  42.   delay(1000); // Aspetta 1 secondo prima del prossimo ciclo
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement