CSJ2003 发表于 2016-7-11 13:12:22

求助,DS1302模块使用时遇到了问题

现在Arduino IDE已经1.6.9了,但是论坛里的帖子和库全是1.0左右甚至更低时代的产品现在没法用,就像这样:
现在该怎么办?求救

莲子 发表于 2016-7-12 18:56:48

试试这个,,我的都是可以用的~~

CSJ2003 发表于 2016-7-12 21:14:38

莲子 发表于 2016-7-12 18:56 static/image/common/back.gif
试试这个,,我的都是可以用的~~

读取可以,但是时间没法改啊...

莲子 发表于 2016-7-12 23:06:50

CSJ2003 发表于 2016-7-12 21:14 static/image/common/back.gif
读取可以,但是时间没法改啊...

/*
Arduino 连接 DS1302
代码来源:http://quadpoint.org/projects/arduino-ds1302
增加了串口调整时间代码
*/
#include <stdio.h>
#include <string.h>
#include <DS1302.h>

/* 接口定义
CE(RST)(DS1302 pin5) -> Arduino D5
IO(DAT)(DS1302 pin6) -> Arduino D6
SCLK(CLK)(DS1302 pin7) -> Arduino D7
*/
uint8_t CE_PIN   = 5;
uint8_t IO_PIN   = 6;
uint8_t SCLK_PIN = 7;

/* 日期变量缓存 */
char buf;
char day;
/* 串口数据缓存 */
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
/* 创建 DS1302 对象 */
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);


void print_time()
{
    /* 从 DS1302 获取当前时间 */
    Time t = rtc.time();
    /* 将星期从数字转换为名称 */
    memset(day, 0, sizeof(day));
    switch (t.day)
    {
    case 1: strcpy(day, "Sunday"); break;
    case 2: strcpy(day, "Monday"); break;
    case 3: strcpy(day, "Tuesday"); break;
    case 4: strcpy(day, "Wednesday"); break;
    case 5: strcpy(day, "Thursday"); break;
    case 6: strcpy(day, "Friday"); break;
    case 7: strcpy(day, "Saturday"); break;
    }
    /* 将日期代码格式化凑成buf等待输出 */
    snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t.yr, t.mon, t.date, t.hr, t.min, t.sec);
    /* 输出日期到串口 */
    Serial.println(buf);
}


void setup()
{
    Serial.begin(9600);
    rtc.write_protect(false);
    rtc.halt(false);
}

void loop()
{

    /* 当串口有数据的时候,将数据拼接到变量comdata */
    while (Serial.available() > 0)
    {
      comdata += char(Serial.read());
      delay(2);
      mark = 1;
    }
    /* 以逗号分隔分解comdata的字符串,分解结果变成转换成数字到numdata[]数组 */
    if(mark == 1)
    {
      Serial.print("You inputed : ");
      Serial.println(comdata);
      for(int i = 0; i < comdata.length() ; i++)
      {
            if(comdata == ',' || comdata == 0x10 || comdata == 0x13)
            {
                j++;
            }
            else
            {
                numdata = numdata * 10 + (comdata - '0');
            }
      }
      /* 将转换好的numdata凑成时间格式,写入DS1302 */
      Time t(numdata, numdata, numdata, numdata, numdata, numdata, numdata);
      rtc.time(t);
      mark = 0;j=0;
      /* 清空 comdata 变量,以便等待下一次输入 */
      comdata = String("");
      /* 清空 numdata */
      for(int i = 0; i < 7 ; i++) numdata=0;
    }
   
    /* 打印当前时间 */
    print_time();
    delay(1000);
}

CSJ2003 发表于 2016-7-13 13:37:02

莲子 发表于 2016-7-12 23:06 static/image/common/back.gif
/*
Arduino 连接 DS1302
代码来源:http://quadpoint.org/projects/arduino-ds1302


vcc接3.3v?难道是我模块挂了吗..

莲子 发表于 2016-7-13 18:29:09

CSJ2003 发表于 2016-7-13 13:37 static/image/common/back.gif
vcc接3.3v?难道是我模块挂了吗..

接+5V也是可以的,,你看看你修改时间输入的格式,,输入格式错误,,是不能修改的~~

爱上即可 发表于 2016-7-15 15:24:10

用DS1307

CSJ2003 发表于 2016-7-24 13:13:02

爱上即可 发表于 2016-7-15 15:24 static/image/common/back.gif
用DS1307

已经换上3231了,相当好用

wyl_stloy 发表于 2016-8-8 09:44:49

莲子 发表于 2016-7-12 18:56 static/image/common/back.gif
试试这个,,我的都是可以用的~~

你好,我放到目录下之后,编译显示没有stdio.h这个头文件是怎么回事呀?

莲子 发表于 2016-8-8 22:23:39

wyl_stloy 发表于 2016-8-8 09:44 static/image/common/back.gif
你好,我放到目录下之后,编译显示没有stdio.h这个头文件是怎么回事呀?

pls try...
页: [1]
查看完整版本: 求助,DS1302模块使用时遇到了问题