Arduino开发板搭配GY906、OLED0.96、IC模块实现测温系统
GY906作为测温元件(I2C协议)
OLED实时显示温度(I2C协议)
IC模块(将电压信号转为4-20mA标准量)
//GY906、OLED0.96、arduino、IC模块//SCL SCL(OLED、GY906)//SCL SDA(OLED、GY906)//GND(OLED、GY906)//3.3V(OLED、GY906)//pin 3 VIN(IC模块)
//GND GND(IC模块)
//VCC 5V(IC模块)//20230228#include <Wire.h>#include <Adafruit_GFX.h>#include <Adafruit_SSD1306.h>#include <Adafruit_MLX90614.h>#define SCREEN_WIDTH 128 // OLED display width, in pixels#define SCREEN_HEIGHT 64 // OLED display height, in pixels// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);Adafruit_MLX90614 mlx = Adafruit_MLX90614();int ledPin = 5; // LED connected to digital pin 5//int analogPin = 3; // potentiometer connected to analog pin 3int outpin = 3;int val = 0; // variable to store the read valueint vall = 0;void setup(){Serial.begin(9600);Serial.println("Adafruit MLX90614 test"); mlx.begin(); pinMode(ledPin, OUTPUT); // sets the pin as outputif(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {// Address 0x3D for 128x64Serial.println(F("SSD1306 allocation failed"));for(;;);}delay(2000);display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 10);// Display static textdisplay.println("Hello, world!");display.display(); }void loop()
{// Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); //Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");//Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); //Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");display.clearDisplay();display.setTextSize(2); //Size 2 means each pixel is 12 width and 16 highdisplay.setCursor(25, 10);display.print(mlx.readAmbientTempC());display.setCursor(95, 10);display.print("C");display.setTextSize(2);display.setCursor(25, 36);display.print(mlx.readObjectTempC());display.setCursor(95, 36);display.print("C");display.display();vall = 3.2 * mlx.readObjectTempC();// val = analogRead(Serial.print(vall)); // read the input pinanalogWrite(ledPin, vall); // analogRead values go from 0 to 1023, analogWrite(outpin, vall); //Serial.print(val); Serial.print("---");Serial.println(mlx.readAmbientTempC());Serial.print(vall); Serial.print("---");Serial.println(mlx.readObjectTempC()); // analogWrite values from 0 to 255delay(3000);}