我希望它如何工作: 这是一个检查温度并显示我想要的温度和温度的东西。您可以使用按钮更改希望温度。一个是高,另一个是低。如果温度更高,风扇就会开启。如果温度高于我想要的温度,那么只有一个温泉只能响一次。
代码中似乎没有错误但是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]
*