arduino - tinkercad arduino lcd 不显示
问题描述
我希望它如何工作:这是一个检查温度并显示我想要的温度和温度的东西。您可以使用按钮更改希望温度。一个高一个低。如果温度较高,风扇就会启动。如果当温度高于我想要的温度时扬声器只响一次。
代码中似乎没有错误,但 lcd 没有显示任何内容。扬声器、TMP、MOTOR 似乎运行良好,这很奇怪。请帮我看看有什么问题。
代码:
*
[//LCD_Thermostat
#include <Wire.h>
#define TEMP_ADDR 72
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
byte degree\[8\] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000,
};
byte fan_on\[8\] = {
B00100,
B10101,
B01110,
B11111,
B01110,
B10101,
B00100,
B00000,
};
byte fan_off\[8\] = {
B00100,
B00100,
B00100,
B11111,
B00100,
B00100,
B00100,
B00000,
};
const int SPEAKER=8;
const int DOWN_BUTTON =9;
const int UP_BUTTON=10;
const int FAN =11;
const int T0=0;
boolean lastDownTempButton = LOW;
boolean currentDownTempButton = LOW;
boolean lastUpTempButton = LOW;
boolean currentUpTempButton = LOW;
int set_temp = 23;
boolean one_time = false;
void setup()
{
pinMode(FAN, OUTPUT);
//Create a wire object for the temp sensor
Wire.begin();
//Set up the LCD's number of columns and rows
lcd.begin(16, 2);
//Make custom characters
lcd.createChar(0, degree);
lcd.createChar(1, fan_off);
lcd.createChar(2, fan_on);
//Print a static message to the LCD
lcd.setCursor(0,0);
lcd.print("Current:");
lcd.setCursor(10,0);
lcd.write((byte)0);
lcd.setCursor(11,0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Set:");
lcd.setCursor(10,1);
lcd.write((byte)0);
lcd.setCursor(11,1);
lcd.print("C");
lcd.setCursor(15,1);
lcd.write(1);
}
boolean debounce(boolean last, int pin)
{
boolean current = digitalRead(pin);
if (last != current)
{
delay(5);
current = digitalRead(pin);
}
return current;
}
void loop()
{/*
Wire.beginTransmission(TEMP_ADDR);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(TEMP_ADDR, 1);
while(Wire.available() == 0);
int c = Wire.read();
*/
// for LM35 temperature sensor (Chapter3. 아날로그 신호와 센서값)
int c = analogRead(T0);
c = c*5.0 /1024.0 * 100;
Serial.println(c);
lcd.setCursor(8,0); //Move the cursor
lcd.print(c); //Print this new value
lcd.setCursor(8,0);
lcd.print(c);
currentDownTempButton = debounce(lastDownTempButton, DOWN_BUTTON);
currentUpTempButton = debounce(lastUpTempButton, UP_BUTTON);
if (lastDownTempButton== LOW && currentDownTempButton == HIGH)
{
set_temp--;
}
//Turn up the set temp
else if (lastUpTempButton== LOW && currentUpTempButton == HIGH)
{
set_temp++;
}
//Print the set temp
lcd.setCursor(8,1);
lcd.print(set_temp);
lastDownTempButton = currentDownTempButton;
lastUpTempButton = currentUpTempButton;
if (c >= set_temp)
{
if (!one_time)
{
tone(SPEAKER, 400);
delay(500);
one_time = true;
}
else
{
noTone(SPEAKER);
}
digitalWrite(FAN, HIGH);
lcd.setCursor(15,1);
lcd.write(2);
}
else
{
noTone(SPEAKER);
one_time = false;
digitalWrite(FAN, LOW);
lcd.setCursor(15,1);
lcd.write(1);
}
}][1]
*
解决方案
尝试使用 LiquidCristal 库中描述的 LCD 接线,使用 HelloWorld 等示例。
推荐阅读
- python - 使用python脚本根据XML中其他元素的文本或属性获取元素的文本
- c# - 接口作为泛型类型 - 方法如何返回子接口类型的值?
- reactjs - Reactjs - TypeError:无法读取 null 的属性“值”
- javascript - 在功能组件之前添加异步会导致它返回一个对象?
- cloudsim - Cloudsim-如何计算 VM 的 totalCurrentRequestedRam?
- primefaces - 使用 PrimceFaces 7.0(或更高版本)文本编辑器和 Quill 将 HTML 转换为 PDF
- ios - CATransaction 完成被调用甚至视图控制器消失
- javascript - Javascript函数生成所有排列
- ios - 如何从 AppDelegate.swift 路由到任何视图控制器
- php - 写一个通用行