gss:cozir:lp3:인터페이스_유형별_uart_i2c_co2_값_읽기
인터페이스 유형별(UART,I2C) CO2값 읽기
I2C
- i2c.cpp
include <Wire.h> #define Slave_adddress 0x41 #define CO2_READ_command 0x34 #define CO2_READ_and_test_command 0x02 void setup() { Wire.begin(); Serial.begin(9600); } void loop() { int CO2_value = 0; Wire.beginTransmission(Slave_adddress); // transmit to slave address Wire.write(CO2_READ_and_test_command); // transmit to register address Wire.endTransmission(); // stop transmitting Wire.requestFrom(Slave_adddress, 3); //from slave request 2byte while ( Wire.available()) { int CO2_high_value = Wire.read(); int CO2_low_value = Wire.read(); /* CO2_Self_test value = 85(DEC) : Sensor is nominal , CO2_Self_test value = 170(DEC): Sensor error */ int CO2_self_test = Wire.read(); CO2_high_value = CO2_high_value <<8; CO2_value = CO2_high_value + CO2_low_value; Serial.print("CO2_value : "); Serial.print(CO2_value); //reading CO2 value Serial.println(" PPM "); } delay(1000); }
UART
- uart.cpp
#include <SoftwareSerial.h> SoftwareSerial mySerial(12, 13); //Uno Rx Tx (12 13) = SoftwareSerial const char* Polling_mode = "K 2\r\n"; const char* CO2_read = "Z\r\n"; String str; void setup() { Serial.begin(9600); //시리얼 통신 초기화 delay(140); // POWER ON then Control Interface Setup Time mySerial.begin(9600); Serial.println("GSS Gas sensor read"); mySerial.println(""); // dummy data send mySerial.print(Polling_mode); delay(100); mySerial.println("M 4"); // send Mode for Z(filter value) } void loop() { mySerial.print(CO2_read); delay(1000); // co2 값 읽기 if(mySerial.available()>=10) { str = ""; str = mySerial.readStringUntil('\n'); Serial.println(str); } }
시리얼 모니터
- I2C
- UART
gss/cozir/lp3/인터페이스_유형별_uart_i2c_co2_값_읽기.txt · 마지막으로 수정됨: 2023/04/03 04:15 저자 mjbang