arduino 调用 1602a

我的 1602a 使用 i2c 接口

不同芯片有不同的 I2C 地址, 从下面的链接查看
I2C LCD与Arduino接口

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3f, 16, 2); //声明I2C地址和点阵的规格为16字符和2行

// 定义字符.1, 指定哪个像素亮,哪个灭
byte Heart[8] = {
    0b00000,
    0b01010,
    0b11111,
    0b11111,
    0b01110,
    0b00100,
    0b00000,
    0b00000};

void setup()
{
  Serial.begin(9600);
  initLcd();
}

void loop()
{
  char timestamp[20];
  getCurrentTime(timestamp);

  lcd.clear();
  lcd.setCursor(0, 0);
  // 定义字符.3 输出
  lcd.write(0);
  lcd.setCursor(2, 0);
  lcd.print(timestamp);

  delay(300);
}

// 初始化 lcd
void initLcd()
{
  lcd.init();
  lcd.backlight();
  lcd.clear();


  // 定义字符.2,第一个参数 0-7, 只支持 8 个字符  
  lcd.createChar(0, Heart);
}

// 返回当前的时间
void getCurrentTime(char* timestamp){

// Division constants
  const unsigned long MSECS_PER_SEC = 1000;
  const unsigned long SECS_PER_MIN = 60;
  const unsigned long SECS_PER_HOUR = 3600;
  const unsigned long SECS_PER_DAY = 86400;

  // Total time
  const unsigned long msecs = millis();
  const unsigned long secs = msecs / MSECS_PER_SEC;

  // Time in components
  const unsigned long MilliSeconds = msecs % MSECS_PER_SEC;
  const unsigned long Seconds = secs % SECS_PER_MIN;
  const unsigned long Minutes = (secs / SECS_PER_MIN) % SECS_PER_MIN;
  const unsigned long Hours = (secs % SECS_PER_DAY) / SECS_PER_HOUR;

  // char timestamp[20]; // Time as string
  sprintf(timestamp, "%02ld:%02ld:%02ld.%03ld ", Hours, Minutes, Seconds, MilliSeconds);

}

上一篇
下一篇