tinkercad arduino lcd没有显示

时间:2018-05-23 16:09:28

标签: arduino display 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]

*

1 个答案:

答案 0 :(得分:1)

尝试使用LiquidWristal库示例中描述的LCD线圈,例如HelloWorld。

Here you find an example