Arduino UNO와 냄새 센서 AE-TGS8100으로 액정 표시 (Arduino) (AQM0802A)

목적
코로나 등을 포함하여 실내의 공기의 흔들림을 냄새를 통해 값수 표시한다.

구성
AE-TGS8100 K-15562
AQM0802A-RN-GBW P-06669

설명
우선 나중에 3.3V계에서 사용하고 싶기 때문에 메뉴얼의 식으로부터
프로그램을 만들었다. 아키즈키의 공식과 값이 올바른지 확인했습니다.
0으로 나누면 오류가 발생했음을 확인했으므로 무엇이든 좋았습니다.
0을 -1로 변환하였다. 현실적으로 마이너스의 큰 숫자가 되기 때문에
구별이 있기 때문에 괜찮습니까?
그대로는 지루하지 않기 때문에 액정을 붙였다.
CO2 센서를 위한 전 단계

main - 초기화
loop - 반복 처리
i2c_led_w - 2바이트 I2C로 보내기







#include <Wire.h> //I2C library

//STM32G031J6M6
#define sdaPin PA12    // ArduinoA4
#define sclPin PA11    // ArduinoA5

// I2C  address. 
#define I2Cadr  0x3e  // 固定

char    data_read[2]={'@','t'}; //i2cバッファー
int     ii;                     //ループカウンター

char INIT_com[]={0x0,0x38,
0x0,0x39,
0x0,0x4,
0x0,0x14,
0x0,0x70,
0x0,0x56,
0x0,0x6C,
0x0,0x38,
0x0,0xC,
0x0,0x1,
0x40,0x41};

char INIT_cls[]={0x0,0x1};

void i2c_led_w(char *buff1){
  Wire.beginTransmission(I2Cadr);
  Wire.write(buff1[0]);
  Wire.write(buff1[1]);
  Wire.endTransmission();
  delay(2);
}//i2c_led_w

int adval = 0;
float sensor_r;

void setup() {

  delay(3000); //not delete

  //i2cの初期化
  Wire.begin(); // initialise the connection //767 UNO
  //Wire.begin(sdaPin,sclPin); //STM32G031J6M6

  //液晶の初期化
  for(ii=0;ii<11;ii++){
    i2c_led_w(&INIT_com[ii*2]);
  } //for

  Serial.begin(9600);
  pinMode(A0, OUTPUT);
}//setup

float v1;
float rs;

void loop() {
  digitalWrite(A0, HIGH);
  delay(1);  
  adval = analogRead(A1);
  delay(1);
  digitalWrite(A0, LOW);

//Serial.println(adval);
//adval = 1024;
//adval = 0;

if(adval == 0) {adval = -1;}

v1 = (    ((float)adval) * 5.0) / 1024.0;

//Serial.println(v1,3);

rs =( (3.0-v1)/v1 ) * 10.0;

Serial.println(rs,3);

/*
  if(adval != 0) {
    sensor_r = 6144.0 / adval - 10;
    Serial.println(sensor_r,3);
  } else {
    Serial.println("0");
  }//end if
*/
  delay(998);

  int s = rs;
  int n0,n10,n100;

  n10  = s / 10;           // 123 -> 12
  n0   = s - (n10 *10);    // 123 - 120 -> 3
  n100 = n10 / 10;         // 12  -> 1
  n10  = n10 - (n100 *10); // 12 - 10 -> 2

  //画面のクリア
  i2c_led_w(INIT_cls);

  //液晶に表示
  data_read[1] = '0' + n100;
  i2c_led_w(data_read);
  data_read[1] = '0' + n10;
  i2c_led_w(data_read);
  data_read[1] = '0' + n0;
  i2c_led_w(data_read);

}//loop



좋은 웹페이지 즐겨찾기