授業でCを使って電子おもちゃを作っているのですが、コードの意味が全く分からず困っています。
以下のコードは湿度温度センサーを動かす際に利用したコードです。詳しい解説をよろしくお願いいたします。
C
1#include "BME280_MOD-1022.h" 2#include <Wire.h> 3 4void printFormattedFloat(float x, uint8_t precision) { 5char buffer[10]; 6 dtostrf(x, 7, precision, buffer); 7 Serial.print(buffer); 8} 9 10// print out the measurements 11void printCompensatedMeasurements(void) { 12float temp, humidity, pressure, pressureMoreAccurate; 13double tempMostAccurate, humidityMostAccurate, pressureMostAccurate; 14char buffer[80]; 15 temp = BME280.getTemperature(); 16 humidity = BME280.getHumidity(); 17 pressure = BME280.getPressure(); 18 pressureMoreAccurate = BME280.getPressureMoreAccurate(); 19 tempMostAccurate = BME280.getTemperatureMostAccurate(); 20 humidityMostAccurate = BME280.getHumidityMostAccurate(); 21 pressureMostAccurate = BME280.getPressureMostAccurate(); 22 printFormattedFloat(tempMostAccurate, 2); 23 Serial.print(" "); 24 printFormattedFloat(humidityMostAccurate, 2); 25 Serial.print(" "); 26 printFormattedFloat(pressureMostAccurate, 2); 27 Serial.println(); 28} 29 30 31// setup wire and serial 32 33void setup() 34{ 35 Wire.begin(); 36 Serial.begin(9600); 37 pinMode(16,INPUT); 38 pinMode(17,OUTPUT); 39 digitalWrite(17,0); 40} 41 42// main loop 43void loop() 44{ 45 uint8_t chipID; 46 chipID = BME280.readChipId(); 47 Serial.print("ChipID = 0x"); 48 Serial.print(chipID, HEX); 49 50 // need to read the NVM compensation parameters 51 BME280.readCompensationParams(); 52 53 BME280.writeOversamplingPressure(os1x); 54 BME280.writeOversamplingTemperature(os1x); 55 BME280.writeOversamplingHumidity(os1x); 56 57 BME280.writeMode(smForced); 58 while (BME280.isMeasuring()) { 59 Serial.println("Measuring..."); 60 delay(50); 61 } 62 Serial.println("Done!"); 63 // read out the data - must do this before calling the getxxxxx routines 64 BME280.readMeasurements(); 65 Serial.print("Temp="); 66 Serial.println(BME280.getTemperature()); // must get temp first 67 Serial.print("Humidity="); 68 Serial.println(BME280.getHumidity()); 69 Serial.print("Pressure="); 70 Serial.println(BME280.getPressure()); 71 Serial.print("PressureMoreAccurate="); 72 Serial.println(BME280.getPressureMoreAccurate()); // use int64 calculcations 73 Serial.print("TempMostAccurate="); 74 Serial.println(BME280.getTemperatureMostAccurate()); // use double calculations 75 Serial.print("HumidityMostAccurate="); 76 Serial.println(BME280.getHumidityMostAccurate()); // use double calculations 77 Serial.print("PressureMostAccurate="); 78 Serial.println(BME280.getPressureMostAccurate()); // use double calculations 79 80 // Example for "indoor navigation" 81 // We'll switch into normal mode for regular automatic samples 82 83 BME280.writeStandbyTime(tsb_0p5ms); // tsb = 0.5ms 84 BME280.writeFilterCoefficient(fc_16); // IIR Filter coefficient 16 85 BME280.writeOversamplingPressure(os16x); // pressure x16 86 BME280.writeOversamplingTemperature(os2x); // temperature x2 87 BME280.writeOversamplingHumidity(os1x); // humidity x1 88 BME280.writeMode(smNormal); 89 90 while (1) { 91 while (BME280.isMeasuring()) { 92 } 93 94 // read out the data - must do this before calling the getxxxxx routines 95 BME280.readMeasurements(); 96 printCompensatedMeasurements(); 97 delay(1000); // do this every 5 seconds 98 } 99}
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。