直接使用Arduino编写程序,建议先在vscode中进行进行编写、格式化再放到Arduino中编译、上传。

代码:

#include <Adafruit_PCD8544.h>
// or use library: https://github.com/pbaja/AvrPCD8544/
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>
#define DHTPIN 8
#define DHTTYPE DHT11
// ds 18b20 Temperature sensor
#define ONE_WIRE_BUS 2
 
DHT dht(DHTPIN, DHTTYPE, 6);
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 
// Initialize the Nokia 5110 LCD driver library
// @param sclk_pin SCLK pin  DIN pin  DC pin  CS pin  RST pin
// https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/blob/master/Adafruit_PCD8544.cpp
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
 
void setup() {
  // Start the serial communication
  Serial.begin(9600);
  // lcd bl
  pinMode(9, OUTPUT);
  digitalWrite(9, HIGH);
  delay(1000);
  dht.begin();
  Serial.println("Arduino Digital Temperature will start."); //Print a message
  sensors.begin();
  // Initialize the Nokia 5110 display
  display.begin();
  display.setContrast(60);
  display.clearDisplay();
  display.display();
 
  // Print a message on the display
  display.setCursor(0, 0);
  display.println("Programe Start ...");
  display.display();
  digitalWrite(9, LOW);
  delay(1000);
  digitalWrite(9, HIGH);
}
 
void loop() {
  display.clearDisplay();
  sensors.requestTemperatures(); 
  float temperature = dht.readTemperature();
  delay(5000);
  float humidity = dht.readHumidity();
  display.print("Temp 1: ");
  display.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  display.print("Temp 2: ");
  display.println(temperature);
  display.print("Hum  2: ");
  display.println(humidity);
  display.display();
  delay(5000);
}

最终效果:

PixPin_2024-07-23_13-45-48.png