2019-2-24 17:09:04 [显示全部楼层]
3079浏览
查看: 3079|回复: 2

[求助] arduino设计数字钟,求大佬指导

[复制链接]
有没有大佬来帮我看看到底哪错了???
编译没问题,可是屏幕什么都出不来
arduino设计数字钟,求大佬指导图2arduino设计数字钟,求大佬指导图1
[mw_shl_code=c,true]#include "U8glib.h"
//U8GLIB_MINI12864 u8g(10, 9, 8);
///////////////////
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);  // I2C / TWI
// draw函数用于包含实现显示内容的语句
//变量定义
int xingqi=0;
struct t{
  int shi=0;
  int fen=0;
  int miao=0;
  int year=2019;
  int month=1;
  int day=1;
  char a[10];
  }now_time,clock1,clock2;
//////////////////////////////////////////////////////////////
void draw()
{
  // 设置字体
u8g.setFont(u8g_font_unifont);
  // 设置文字及其显示位置
  u8g.drawStr( 0, 10, "time:");
//显示界面
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(30, 10);
  u8g.print(now_time.shi);
   u8g.setPrintPos(50, 10);
  u8g.print(now_time.fen);
   u8g.setPrintPos(80, 10);
  u8g.print(now_time.miao);
  u8g.setFont(u8g_font_unifont);
   u8g.drawStr( 0, 30, "date:");
  u8g.setPrintPos(25,30);
  u8g.print(now_time.year);
  u8g.setPrintPos(50, 30);
  u8g.print(now_time.month);
   u8g.setPrintPos(80, 30);
  u8g.print(now_time.day);
u8g.setFont(u8g_font_unifont);

    //闹钟显示                                                  
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(30, 65);
  u8g.print(clock1.shi);
   u8g.setPrintPos(50, 65);
  u8g.print(clock1.fen);
   u8g.setPrintPos(80, 65);
  u8g.print(clock1.miao);
  
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(30, 75);
  u8g.print(clock2.shi);
   u8g.setPrintPos(50, 75);
  u8g.print(clock2.fen);
   u8g.setPrintPos(80, 75);
  u8g.print(clock2.miao);
}
/*//#define REMOTE
#if defined(REMOTE)
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#endif*/
////////////////////////////////////////////////////
//按键定义
#define CHOOSE 9
#define ADD 7
#define REDUCE 8
#define ledPin1 4
#define ledPin2 5
#define ledPin3 6
#define A 2
#define B 3
///////////////////////////////////////////////////////////

//初始化函数
void setup(void) {
  //////////////////
    // flip screen, if required
  // u8g.setRot180();
  
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value  指定默认颜色值
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
  /////////////////////
  // put your setup code here, to run once:
  Serial.begin(9600);
    pinMode(CHOOSE, INPUT);
    pinMode(ADD, INPUT);
    pinMode(REDUCE, INPUT);
    pinMode(A, INPUT);
    pinMode(B, INPUT);
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    pinMode(ledPin3, OUTPUT);
#if defined(REMOTE)
  irrecv.enableIRIn(); // Start the receiver
#endif
  draw();//显示界面
  delay(1500);
}

/////////////////////////////////////////////////////////////
//时钟正常运行时
void zhengchang()
{
  while (1)
  {
    delay(1000);
    now_time.miao++;
      if (now_time.miao==60)
      {
        now_time.miao=0;
        now_time.fen++;
        if (now_time.fen==60)
        {
          now_time.fen=0;
          now_time.shi++;
          if (now_time.shi==24)
          {
            now_time.shi=0;
            now_time.day++;
            if (now_time.month==4||now_time.month==6||now_time.month==9||now_time.month==11)
            {
                if (now_time.day==31)
                {
                  now_time.day=1;
                  now_time.month++;
                  if (now_time.month==13)
                    {
                      now_time.month=1;
                      now_time.year++;  
                    }            
                  }
              }
            else if (now_time.month==1||now_time.month==3||now_time.month==5||now_time.month==7||now_time.month==8||now_time.month==10||now_time.month==12)
            {
            
                if (now_time.day==32)
                {
                  now_time.day=1;
                  now_time.month++;
                  if (now_time.month==13)
                  {
                    now_time.month=1;
                    now_time.year++;
                  }  
                }           
            }
            else if (now_time.month==2)
            {
                if ((now_time.year%4==0&&now_time.year%100!=0)||now_time.year%400==0)//计算该年为闰年还是平年
                {
                  if (now_time.day==30)
                  {
                    now_time.day=1;
                    now_time.month++;
                   }
                 }
                else
                {
                  if (now_time.day==29)
                  {
                    now_time.day=1;
                    now_time.month++;
                  }               
                }            
            }
        }
      }
    }   
  }
}
/////////////////////////////////////////////////////////////////
//调整界面
void tiaozheng()
{
  int number1=0;
  int flag=1;
  while(flag)
  {
    switch(read_key())
    {
      case CHOOSE:number1++;break;
      default:flag=0;
      }
    }
   while(!flag)
   {
      switch(number1)
    {
      case 1:
        switch(read_key())
              {
                case ADD:now_time.shi++;break;
                case REDUCE:now_time.shi--;break;
                case CHOOSE:number1++;break;
                }break;
      case 2:
       switch(read_key())
              {
                case ADD:now_time.fen++;break;
                case REDUCE:now_time.fen--;break;
                case CHOOSE:number1++;break;
                }break;
       case 3:
        switch(read_key())
              {
                case ADD:now_time.miao++;break;
                case REDUCE:now_time.miao--;break;
                case CHOOSE:number1++;break;
                }break;
        case 4:
         switch(read_key())
              {
                case ADD:now_time.year++;break;
                case REDUCE:now_time.year--;break;
                case CHOOSE:number1++;break;
                }break;
        case 5:
         switch(read_key())
              {
                case ADD:now_time.month++;break;
                case REDUCE:now_time.month--;break;
                case CHOOSE:number1++;break;
                }break;
         case 6:
          switch(read_key())
              {
                case ADD:now_time.day++;break;
                case REDUCE:now_time.day--;break;
                case CHOOSE:number1++;break;
                }break;
         case 7:
          switch(read_key())
              {
                case ADD:clock1.shi++;break;
                case REDUCE:clock1.shi--;break;
                case CHOOSE:number1++;break;
                }break;
        case 8:
          switch(read_key())
              {
                case ADD:clock1.fen++;break;
                case REDUCE:clock1.fen--;break;
                case CHOOSE:number1++;break;
                }break;
       case 9:
          switch(read_key())
              {
                case ADD:clock1.miao++;break;
                case REDUCE:clock1.miao--;break;
                case CHOOSE:number1++;break;
                }break;
       case 10:
          switch(read_key())
              {
                case ADD:clock2.shi++;break;
                case REDUCE:clock2.shi--;break;
                case CHOOSE:number1++;break;
                }break;
        case 11:
          switch(read_key())
              {
                case ADD:clock2.fen++;break;
                case REDUCE:clock2.fen--;break;
                case CHOOSE:number1++;break;
                }break;
         case 12:
          switch(read_key())
              {
                case ADD:clock2.miao++;break;
                case REDUCE:clock2.miao--;break;
                case CHOOSE:number1++;break;
                }break;
           case 13:flag=1;break;
      }
    }
  }
////////////////////////////////////////////////////////////////
//闹钟界面
void naozhong()
{
if(now_time.shi==clock1.shi&&now_time.fen==clock1.fen&&now_time.miao==clock1.miao)
//灯亮,怎么亮来着?
digitalWrite(ledPin1,HIGH);
delay(3000);
digitalWrite(ledPin1,LOW);
if(now_time.shi==clock2.shi&&now_time.fen==clock2.fen&&now_time.miao==clock2.miao)
  digitalWrite(ledPin2,HIGH);
  delay(3000);
  digitalWrite(ledPin2,LOW);
//整点报时
if(now_time.fen==0&&now_time.miao==0)
     digitalWrite(ledPin3,HIGH);
     delay(4000);
     digitalWrite(ledPin3,LOW);
}
/////////////////////////////////////////////////////////////////
#if defined(REMOTE)
int read_key()
{
  int key_temp;
  if (irrecv.decode(&results)) {
    switch (results.value) {
      case 0xFD807F: Serial.println("CHOOSE"); irrecv.resume(); return CHOOSE; break;
      case 0xFD906F: Serial.println("ADD"); irrecv.resume(); return ADD; break;
      case 0xFD20DF: Serial.println("REDUCE"); irrecv.resume(); return REDUCE; break;
      case 0xFD08F7: Serial.println("A"); irrecv.resume(); return A; break;
      case 0xFD8877: Serial.println("B"); irrecv.resume(); return B; break;
      default: irrecv.resume(); return 0; break;
    } // Receive the next value
  }
  else {
    return 0;
  }
}
#else
/////////////////////////////////////////////////////////////////////
//计算星期
void week()
{
  int t=now_time.month+2;
  int y=now_time.year%100;
  int w;
  if(now_time.month==1||now_time.month==2)
       {
        t=now_time.month+12;
        y++;
       }
    w=y+y/4+now_time.year/100/4-2*(now_time.year/100)+26*(t+1)/10+now_time.day-1;
    xingqi=w%7;
  }
//////////////////////////////////////////////////////////////////////
//读取按键值
int read_key()
{
  int key_temp;
  if (digitalRead(CHOOSE) == LOW) {
    key_temp = CHOOSE;
    return key_temp;
  }
  if (digitalRead(ADD) == LOW) {
    key_temp = ADD;
    return key_temp;
  }
  if (digitalRead(REDUCE) == LOW) {
    key_temp = REDUCE;
    return key_temp;
  }
  if (digitalRead(A) == LOW) {
    key_temp = A;
    return key_temp;
  }
  if (digitalRead(B) == LOW) {
    key_temp = B;
    return key_temp;
  }
  return 0;
}
#endif
///////////////////////////////////////////////////////
//主函数
int main()
{
  zhengchang();
  draw();
  naozhong();
  tiaozheng();
  return 0;
  }
void loop() {
  // put your main code here, to run repeatedly:

  // u8glib图片循环结构:
  u8g.firstPage();  
  do {
    draw();
  }
while( u8g.nextPage() );
  // 等待一定时间后重绘
  delay(50);
}[/mw_shl_code]


gada888  版主

发表于 2019-2-26 08:39:47

换个显屏试试
回复

使用道具 举报

qiuge  学徒
 楼主|

发表于 2019-3-16 20:44:15


显示屏没问题啊,测试过了(贪吃蛇都能运行)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail