使用ARDUINO UNO与MLX90614以及RGB-LED模块,实现由开关控制测温,不同温度下灯光显示,并在OLED上显示温度
时间: 2024-05-08 15:15:56 浏览: 148
MLX90614_with_OLED_SSD1351_Thermometer_Thermometer_arduino_MLX90
5星 · 资源好评率100%
以下是使用ARDUINO UNO与MLX90614以及RGB-LED模块,实现由开关控制测温,不同温度下灯光显示,并在OLED上显示温度的代码:
```
#include <Adafruit_MLX90614.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
int switchPin = 2;
int redPin = 9;
int greenPin = 10;
int bluePin = 11;
int temp;
void setup() {
mlx.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
pinMode(switchPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
}
void loop() {
temp = mlx.readObjectTempC();
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Temp: ");
display.print(temp);
display.print(" C");
display.display();
if(digitalRead(switchPin) == HIGH) {
if(temp < 20) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
} else if(temp >= 20 && temp < 30) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
} else {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
}
} else {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
}
}
```
在此代码中,我们使用了Adafruit_MLX90614库来读取MLX90614传感器的温度值。我们还使用了Adafruit_SSD1306库来控制OLED显示屏。我们使用了数字引脚2作为开关引脚,并使用数字引脚9,10和11作为RGB LED模块的引脚。在设置函数中,我们初始化了MLX90614和OLED显示屏,并将RGB LED模块的引脚设置为输出,并将它们全部关闭。在循环函数中,我们首先读取温度值,并将其显示在OLED上。然后,我们检查开关引脚的状态。如果开关引脚为高电平,则根据温度值设置RGB LED模块的颜色。如果开关引脚为低电平,则关闭RGB LED模块。
阅读全文