但丁 发表于 2012-9-13 20:42:43

【菜鸟的Arduino学习之路】个人superclock时钟V0.1版

本帖最后由 但丁 于 2012-9-13 20:54 编辑

    学习Arduino有一个月左右了吧,今天尝试做了个小时钟,效果还不是很好,但是鉴于马上要出国读书了,还是想写一篇帖子,也算是交个作业以及表达一下对极客工坊这么好的学习之地表示感谢吧!
    关于时钟性能的改进等日后有空了再进一步更新~~~话说自己大爱做时钟

    元件清单:1.热敏电阻或LM35温度传感器(自己用的是热敏电阻,便宜点哇)
            2.DS1302时钟模块
            3.红外遥控器及红外一体接收头
            4.1602液晶屏   

         

    好了,废话不多说,上图,上视频~~






http://player.youku.com/player.php/sid/XNDUwMDIzMTY0/v.swf


      接下来是代码,写得有点乱,喜欢的朋友可以尝试一下:
#include <LiquidCrystal.h>
#include <IRremote.h>
#include <stdio.h>                  //DS1302
#include <string.h>
#include <DS1302.h>
uint8_t CE_PIN   = 12;
uint8_t IO_PIN   = 11;
uint8_t SCLK_PIN = 10;
DS1302 rtc(CE_PIN,IO_PIN,SCLK_PIN);
char yearmonthday;
char hourminutesecond;
char day;

int irReceivePin=2;                     //IRremote
IRrecv irrecv(irReceivePin);
decode_results results;


#define beta 4090                     //remindianzu
LiquidCrystal lcd(3,4,5,6,7,8,9);      //displayModel2
byte one={
B11111,B11111,B00000,B11111,B11111,B00000,B11111,B11111};                                          
byte two={
B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000};
byte three={
B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
byte four={
B11111,B11111,B00000,B00000,B00000,B00000,B11111,B11111};
byte five={
B11111,B11111,B00000,B00000,B00000,B00000,B00000,B11111};
byte six={
B11111,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
byte seven={
B00000,B00000,B00000,B11111,B11111,B00000,B00000,B00000};
byte zero={
B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000};


void setup()
{
lcd.begin(16,2);
lcd.display();
lcd.createChar(1,one);             //displayModel2
lcd.createChar(2,two);
lcd.createChar(3,three);
lcd.createChar(4,four);
lcd.createChar(5,five);
lcd.createChar(6,six);
lcd.createChar(7,seven);
lcd.createChar(8,zero);
irrecv.enableIRIn();            //IRremote
Serial.begin(9600);
}

void loop()
{
int Model;
if(irrecv.decode(&results))
{      
    Serial.println(results.value);
    long remote=results.value;
    if(remote==16580863)
    {
      Model=1;
      lcd.clear();   
    }
    else if(remote==16597183)
    {
      Model=2;
      lcd.clear();   
    }   
    irrecv.resume();
}
else
{
    displayModel1();
}

while(Model==1)
{
    displayModel1();
    if(irrecv.decode(&results))
    {
      Serial.println(results.value);
      long remote=results.value;
      if(remote==16580863)
      {
      Model=1;
      lcd.clear();   
      }
      else if(remote==16597183)
      {
      Model=2;
      lcd.clear();   
      }
      irrecv.resume();
    }
}
while(Model==2)
{
    displayModel2();
    if(irrecv.decode(&results))
    {
      Serial.println(results.value);
      long remote=results.value;
      if(remote==16580863)
      {
      Model=1;
      lcd.clear();   
      }
      else if(remote==16597183)
      {
      Model=2;
      lcd.clear();   
      }
      irrecv.resume();
    }
}
}

void displayModel1()
{
timeandtempDisplay();
}

void timeandtempDisplay()
{
Time t=rtc.time();
memset(day,0, sizeof(day));
switch (t.day)
{
case 1:
    strcpy(day, "Sun");
    break;
case 2:
    strcpy(day, "Mon");
    break;
case 3:
    strcpy(day, "Tue");
    break;
case 4:
    strcpy(day, "Wed");
    break;
case 5:
    strcpy(day, "Thr");
    break;
case 6:
    strcpy(day, "Fri");
    break;
case 7:
    strcpy(day, "Sat");
    break;
}
snprintf(yearmonthday, sizeof(yearmonthday), "%04d/%02d/%02d",t.yr,t.mon,t.date);
snprintf(hourminutesecond,sizeof(hourminutesecond),"%02d:%02d:%02d",t.hr, t.min, t.sec);
lcd.setCursor(0,0);
lcd.print(yearmonthday);
lcd.setCursor(13,0);
lcd.print(day);
lcd.setCursor(0,1);
tempDisplay();   
lcd.setCursor(8,1);
lcd.print(hourminutesecond);
}

void tempDisplay()
{
int t=analogRead(A0);
float temp=beta/(log((1023.0/t)-1.0)+(beta/298.0))-273.0;
int temperature=temp;
lcd.print(temperature);
lcd.write(0xDF);
lcd.print("C");
}


void displayModel2()
{
minuteDisplay();
hourDisplay();   
}

void hourDisplay()
{
Time t=rtc.time();
int hour=t.hr;
if(hour<12&hour>0)
{   
    int houra=hour/10;
    int hourb=hour%10;
    if(hour>0&hour<10)
    {
      numberDisplay(10,-1,0);
      numberDisplay(hour,3,0);      
    }
    else
    {
      numberDisplay(houra,-1,0);
      numberDisplay(hourb,3,0);
    }
    amDisplay();   
}
else if(hour>12&hour<24)
{   
    hour=hour-12;
    int houra=hour/10;
    int hourb=hour%10;
    if(hour>0&hour<10)
    {
      numberDisplay(10,-1,0);
      numberDisplay(hour,3,0);      
    }
    else
    {
      numberDisplay(houra,-1,0);
      numberDisplay(hourb,3,0);
    }
    pmDisplay();
}
else if(hour<1)
{   
    numberDisplay(1,-1,0);
    numberDisplay(2,3,0);
    amDisplay();
}
else if (hour==12)
{
    numberDisplay(0,3,0);
    pmDisplay();
}
}

void minuteDisplay()
{
Time t=rtc.time();
int minute=t.min;
int minutea=minute/10;
int minuteb=minute%10;
if(minute>=10)
{
    numberDisplay(minutea,9,0);
    numberDisplay(minuteb,13,0);
}
else
{
    numberDisplay(0,9,0);
    numberDisplay(minuteb,13,0);
}
}

void numberDisplay(int i,int cols,int rows)
{
switch(i)
{
case 0:
    zeroDisplay(cols,rows);
    break;
case 1:
    oneDisplay(cols,rows);
    break;
case 2:
    twoDisplay(cols,rows);
    break;
case 3:
    threeDisplay(cols,rows);
    break;
case 4:
    fourDisplay(cols,rows);
    break;
case 5:
    fiveDisplay(cols,rows);
    break;
case 6:
    sixDisplay(cols,rows);
    break;
case 7:
    sevenDisplay(cols,rows);
    break;
case 8:
    eightDisplay(cols,rows);
    break;
case 9:
    nineDisplay(cols,rows);
    break;
case 10:
    nullDisplay(cols,rows);
    break;
}
}

void zeroDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void oneDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(8);
lcd.setCursor(col+1,row);
lcd.write(1);
lcd.setCursor(col+2,row);
lcd.write(8);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(1);
lcd.setCursor(col+2,row+1);
lcd.write(8);
}


void twoDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(2);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(4);
lcd.setCursor(col+2,row+1);
lcd.write(4);
}

void threeDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(4);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void fourDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(8);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(2);
lcd.setCursor(col+1,row+1);
lcd.write(2);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void fiveDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(4);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void sixDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(2);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(4);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void sevenDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(2);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(8);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void eightDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(5);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(6);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void nineDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void nullDisplay(int col,int row)
{
lcd.setCursor(col,row);
lcd.write(8);
lcd.setCursor(col+1,row);
lcd.write(8);
lcd.setCursor(col+2,row);
lcd.write(8);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(8);
lcd.setCursor(col+2,row+1);
lcd.write(8);
}


void amDisplay()
{
lcd.setCursor(7,0);
lcd.print('a');
lcd.setCursor(7,1);
lcd.print('m');
delay(500);
lcd.setCursor(7,0);
lcd.write(8);
lcd.setCursor(7,1);
lcd.write(8);
delay(500);
}

void pmDisplay()
{
lcd.setCursor(7,0);
lcd.print('p');
lcd.setCursor(7,1);
lcd.print('m');
delay(500);
lcd.setCursor(7,0);
lcd.write(8);
lcd.setCursor(7,1);
lcd.write(8);
delay(500);
}



       基本上我的superclock的V0.1版本就是这个样子了,当然还存在很多问题,等日后有空了果断再更新一下,只因我个人大爱时钟,希望能做出更加个性化而且功能完善的时钟吧,先mark下日后需要改进的地方:
    1.遥控设定时间
    2.闹钟设定


    PS:视频中也提到了Remote的库和Arduino本身的tone函数存在冲突,暂时功力还不够深厚,等日后好好研究一下再改进!
    鄙人不才,还望各位大神指点!另真心感谢极客工坊提供这么好的学习平台!

Randy 发表于 2012-9-13 23:17:46

你的时钟模块是在信德电子买的吧?哈哈

太行摄狼 发表于 2012-9-14 11:07:17

还不错啊,学习了

但丁 发表于 2012-9-14 11:20:21

Randy 发表于 2012-9-13 23:17 static/image/common/back.gif
你的时钟模块是在信德电子买的吧?哈哈

老大,这你也看得出来?.....佩服

Randy 发表于 2012-9-14 12:33:08

但丁 发表于 2012-9-14 11:20 static/image/common/back.gif
老大,这你也看得出来?.....佩服

:lol呵呵,逛多了就觉得熟悉了!

id9502 发表于 2012-9-14 13:07:20

找个时间试试,不错。

jack3150 发表于 2012-9-16 21:02:55

还不错了~!~

acdc0616 发表于 2012-9-17 16:22:17

求一下原理图或接线图,程序里我不会看啊,谢谢

maybachwang 发表于 2012-12-7 16:07:17

有点晕,留爪慢慢学习

穿山甲 发表于 2012-12-31 10:19:48

秒有点快啊

wqian 发表于 2013-1-16 13:00:17

一个月就能搞定啊

迷你强 发表于 2013-1-16 19:46:27

逆天的超长无注释代码啊。。。。。

ttyp 发表于 2013-1-16 19:56:12

本帖最后由 ttyp 于 2013-1-16 19:58 编辑

原来有人做了啊,我还做了一个呢不过我用的是1307+DHT11,有时间设置和温度和湿度

龙腾东山 发表于 2013-2-1 20:16:42

有空模仿一个,谢谢了!

ogre_c 发表于 2013-2-2 15:04:04

谢谢楼主,学习了,因现有的苹果遥控器闲置,所以模仿了楼主的代码,用它遥控小表,兼职遥控个电视啥的。
主要硬件:arduino uno,一样的液晶屏和时间模块,红外收发头,蜂鸣器,sht10温湿度传感器。

#define menu   0x77E1406A
#define up   0x77E1D06A
#define down   0x77E1B06A
#define left   0x77E1106A
#define right0x77E1E06A
#define center 0x77E1BA6A
#define play   0x77E17A6A
#include <IRremote.h>
int RECV_PIN = 5;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
int Model;

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SHT1x.h>
#include <DS1302.h>
uint8_t CE_PIN   = 12;
uint8_t IO_PIN   = 11;
uint8_t SCLK_PIN = 10;
DS1302 rtc(CE_PIN,IO_PIN,SCLK_PIN);
char yearmonthday;
char hourminutesecond;
char day;
byte one={
B11111,B11111,B00000,B11111,B11111,B00000,B11111,B11111};                                          
byte two={
B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000};
byte three={
B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
byte four={
B11111,B11111,B00000,B00000,B00000,B00000,B11111,B11111};
byte five={
B11111,B11111,B00000,B00000,B00000,B00000,B00000,B11111};
byte six={
B11111,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
byte seven={
B00000,B00000,B00000,B11111,B11111,B00000,B00000,B00000};
byte zero={
B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000};

// Specify data and clock connections and instantiate SHT1x object
#define dataPin8
#define clockPin 9
int BeepPin = 7;      // 指定有源蜂鸣器输出端口
int buttonPin = 6;

SHT1x sht1x(dataPin, clockPin);
LiquidCrystal_I2C lcd(0x27,16,2);//set the LCD address to 0x27 for a 16 chars and 2 line display

int ledPin = 13;
int menu_status = 0;
int center_status= 0;

void setup()
{
lcd.init();
delay(2000);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.createChar(1,one);             //displayModel2
lcd.createChar(2,two);
lcd.createChar(3,three);
lcd.createChar(4,four);
lcd.createChar(5,five);
lcd.createChar(6,six);
lcd.createChar(7,seven);
lcd.createChar(8,zero);

Serial.begin(9600);

pinMode(buttonPin, INPUT);   
pinMode(BeepPin, OUTPUT);
beep_long();                      //蛐蛐开叫,证明系统运行。
delay(1000);
beep_short();

irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
receiver();
if(Model==1)
{
    displayModel1();
}
else
{
    displayModel2();
}
//*******************************************      
       // delay(1000);
}

void timeandtempDisplay()
{
Time t=rtc.time();
memset(day,0, sizeof(day));
switch (t.day)
{
case 1:
    strcpy(day, "Sun");
    break;
case 2:
    strcpy(day, "Mon");
    break;
case 3:
    strcpy(day, "Tue");
    break;
case 4:
    strcpy(day, "Wed");
    break;
case 5:
    strcpy(day, "Thr");
    break;
case 6:
    strcpy(day, "Fri");
    break;
case 7:
    strcpy(day, "Sat");
    break;
}
snprintf(yearmonthday, sizeof(yearmonthday), "%04d/%02d/%02d",t.yr,t.mon,t.date);
snprintf(hourminutesecond,sizeof(hourminutesecond),"%02d:%02d:%02d",t.hr, t.min, t.sec);
lcd.setCursor(0,0);
lcd.print(yearmonthday);
lcd.setCursor(13,0);
lcd.print(day);
lcd.setCursor(0,1);
tempDisplay();
lcd.setCursor(8,1);
lcd.print(hourminutesecond);
}

void tempDisplay()
{
floattemp = sht1x.readTemperatureC();
int temperature=temp;
lcd.print(temperature);
lcd.write(0xDF);
//lcd.print("c");
//**********************
floathum = sht1x.readHumidity();
int humidity=hum;
lcd.print(humidity);
}

void beep_long(){                  //蛐蛐叫声,表示错误。
for(int j=0;j<3;j++){
    for(int i=0;i<5;i++){
      digitalWrite(BeepPin, HIGH);   
      delay(20);         
      digitalWrite(BeepPin, LOW);   
      delay(20);            
    }
    delay(800);            
}
}

void beep_short(){                  //蛐蛐叫声,表示成功。
for(int j=0;j<2;j++){
    for(int i=0;i<2;i++){
      digitalWrite(BeepPin, HIGH);
      delay(20);            
      digitalWrite(BeepPin, LOW);   
      delay(20);            
    }
    delay(500);   
}
}

void receiver(){
   if (irrecv.decode(&results))
{
   Serial.println(results.value, HEX);
   switch (results.value)
   {
//*****************************0media
       case menu:
       if(menu_status==0)
      {
      Model=1;
      lcd.clear();
      menu_status=1;
      //****************
   for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa50, 12);
      delay(50);
    }
   
    delay(500);
      }
      else if(menu_status==1)
      {
       Model=2;
       lcd.clear();
       menu_status=0;
       //****************
      for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa50, 12);
      delay(50);}
      }   
         
      irrecv.enableIRIn();
      break;
      //*****************************play
       case play:
          delay(200);
   
   for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12);
      delay(50);
    }
   
      delay(500);      
      irrecv.enableIRIn();
      break;   
      //*****************************center
       case center:
      if(center_status==0)
      {
      lcd.noBacklight();
      center_status=1;
      }
      else if(center_status==1)
      {
       lcd.backlight();
       center_status=0;
      }
      irrecv.enableIRIn();
      break;
   //*****************************left
    case left:
   delay(100);
      irsend.sendNEC(0x801FE817, 32);
   
    delay(500);
    irrecv.enableIRIn();
    break;
   //*****************************right
    case right:
   delay(100);
   irsend.sendNEC(0x801F58A7, 32);
   
    delay(500);
    irrecv.enableIRIn();
    break;
    //*****************************
      case up:
   delay(50);
   
   for (int i = 0; i < 3; i++) {
      irsend.sendSony(0x490, 12); // Sony TV power code
      delay(50);
    }
   
    delay(500);
    irrecv.enableIRIn();
    break;
//*****************************3down
    case down:
   delay(50);
   
   for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xc90, 12); // Sony TV power code
      delay(50);
    }
   
    delay(500);
    irrecv.enableIRIn();
    break;
   //*********************************
    }
   irrecv.resume(); // Receive the next value
}
}
void displayModel1()
{
timeandtempDisplay();
}
void displayModel2()
{
minuteDisplay();
hourDisplay();   
}

void hourDisplay()
{
Time t=rtc.time();
int hour=t.hr;
if(hour<12&hour>0)
{   
    int houra=hour/10;
    int hourb=hour%10;
    if(hour>0&hour<10)
    {
      numberDisplay(10,-1,0);
      numberDisplay(hour,3,0);      
    }
    else
    {
      numberDisplay(houra,-1,0);
      numberDisplay(hourb,3,0);
    }
    amDisplay();   
}
else if(hour>12&hour<24)
{   
    hour=hour-12;
    int houra=hour/10;
    int hourb=hour%10;
    if(hour>0&hour<10)
    {
      numberDisplay(10,-1,0);
      numberDisplay(hour,3,0);      
    }
    else
    {
      numberDisplay(houra,-1,0);
      numberDisplay(hourb,3,0);
    }
    pmDisplay();
}
else if(hour<1)
{   
    numberDisplay(1,-1,0);
    numberDisplay(2,3,0);
    amDisplay();
}
else if (hour==12)
{
    numberDisplay(0,3,0);
    pmDisplay();
}
}

void minuteDisplay()
{
Time t=rtc.time();
int minute=t.min;
int minutea=minute/10;
int minuteb=minute%10;
if(minute>=10)
{
    numberDisplay(minutea,9,0);
    numberDisplay(minuteb,13,0);
}
else
{
    numberDisplay(0,9,0);
    numberDisplay(minuteb,13,0);
}
}

void numberDisplay(int i,int cols,int rows)
{
switch(i)
{
case 0:
    zeroDisplay(cols,rows);
    break;
case 1:
    oneDisplay(cols,rows);
    break;
case 2:
    twoDisplay(cols,rows);
    break;
case 3:
    threeDisplay(cols,rows);
    break;
case 4:
    fourDisplay(cols,rows);
    break;
case 5:
    fiveDisplay(cols,rows);
    break;
case 6:
    sixDisplay(cols,rows);
    break;
case 7:
    sevenDisplay(cols,rows);
    break;
case 8:
    eightDisplay(cols,rows);
    break;
case 9:
    nineDisplay(cols,rows);
    break;
case 10:
    nullDisplay(cols,rows);
    break;
}
}

void zeroDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void oneDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(8);
lcd.setCursor(col+1,row);
lcd.write(1);
lcd.setCursor(col+2,row);
lcd.write(8);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(1);
lcd.setCursor(col+2,row+1);
lcd.write(8);
}


void twoDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(2);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(4);
lcd.setCursor(col+2,row+1);
lcd.write(4);
}

void threeDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(4);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void fourDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(8);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(2);
lcd.setCursor(col+1,row+1);
lcd.write(2);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void fiveDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(4);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void sixDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(2);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(4);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void sevenDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(2);
lcd.setCursor(col+1,row);
lcd.write(2);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(8);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void eightDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(5);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(1);
lcd.setCursor(col+1,row+1);
lcd.write(6);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void nineDisplay(int col, int row)
{
lcd.setCursor(col,row);
lcd.write(1);
lcd.setCursor(col+1,row);
lcd.write(4);
lcd.setCursor(col+2,row);
lcd.write(1);
lcd.setCursor(col,row+1);
lcd.write(3);
lcd.setCursor(col+1,row+1);
lcd.write(3);
lcd.setCursor(col+2,row+1);
lcd.write(1);
}

void nullDisplay(int col,int row)
{
lcd.setCursor(col,row);
lcd.write(8);
lcd.setCursor(col+1,row);
lcd.write(8);
lcd.setCursor(col+2,row);
lcd.write(8);
lcd.setCursor(col,row+1);
lcd.write(8);
lcd.setCursor(col+1,row+1);
lcd.write(8);
lcd.setCursor(col+2,row+1);
lcd.write(8);
}


void amDisplay()
{
lcd.setCursor(7,0);
lcd.print('a');
lcd.setCursor(7,1);
lcd.print('m');
delay(500);
lcd.setCursor(7,0);
lcd.write(8);
lcd.setCursor(7,1);
lcd.write(8);
delay(500);
}

void pmDisplay()
{
lcd.setCursor(7,0);
lcd.print('p');
lcd.setCursor(7,1);
lcd.print('m');
delay(500);
lcd.setCursor(7,0);
lcd.write(8);
lcd.setCursor(7,1);
lcd.write(8);
delay(500);
}
页: [1] 2
查看完整版本: 【菜鸟的Arduino学习之路】个人superclock时钟V0.1版