pengy110
发表于 2015-2-9 14:33:08
支持楼主啊
flying03
发表于 2015-3-3 17:08:15
分与秒的显示是乱的,是芯片问题还是初始化问题
flying03
发表于 2015-3-3 17:15:19
我用的这个芯片的模块,太诡异了,起初VCC接板子5V,显示乱跳,接收输入也偶尔不正解,换接板子上3.3V电源就正常了,资源上说宽电压2.5V-5.5V是骗人的?
HuaShine2015
发表于 2015-3-26 10:37:11
为什么要阉割掉github上原作者源代码里对32byte RAM读写功能呢?
32字节空间再加上Arduino本身的EEPROM可算是锦上添花效果了
darkscope
发表于 2015-4-9 15:04:20
时间正常在走,但是通过串口设置时间没效果啊,有人和我遇到一样的问题吗?
yhy630
发表于 2015-4-10 08:48:03
flashria 发表于 2013-7-30 21:57 static/image/common/back.gif
您好我测试ds1302也是这个问题 Saturday 2165-25-45 27:165:85一直显示这个时间请问您怎么解决的 ...
你的第一个问题解决:DS1302没有接上拉电阻,接好就可以了,第二个问题,是电源没的接好。
woaigeek
发表于 2015-4-16 17:02:43
henhao ,very good
燃烧
发表于 2015-4-21 11:12:56
时钟模块显示的不是现在的时间是为什么啊
五哥U五哥
发表于 2015-4-23 11:57:18
为什么我的会出现这样的情况。。。3.3V就正常,VCC1和VCC2不管哪个节电池,另一个接5V都是这样
mostblack
发表于 2015-4-23 16:04:47
肿么编译不过去呢
Arduino:1.5.5-r2 (Windows 7), 板:"Arduino Uno"
In file included from DS1302_Example.pde:8:
D:\Arduino\arduino_1.5.5\arduino-1.5.5-r2\libraries\DS1302/DS1302.h:31:22: error: WProgram.h: No such file or directory
cccheng
发表于 2015-5-17 10:23:20
哈哈......我做了个LCD时钟{:soso_e100:}带温度显示、星期显示。晒下代码:#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
int Mode=0;
int h = 0;
int m = 0;
int s = 0;
int d = 12;
int mo = 5;
int y = 15;
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
float c = 0.00;
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
char day;
byte one = {
B00000,
B00000,
B00000,
B11111,
B00000,
B00000,
B00000,
B00000,
};
byte two = {
B00000,
B01110,
B00000,
B00000,
B00000,
B11111,
B00000,
B00000,
};
byte three = {
B00000,
B01110,
B00000,
B01110,
B00000,
B11111,
B00000,
B00000,
};
byte four = {
B00000,
B11111,
B10001,
B10101,
B11101,
B00001,
B01110,
B00000,
};
byte five = {
B00000,
B11110,
B01000,
B11110,
B01010,
B01010,
B11111,
B00000,
};
byte six = {
B00000,
B00100,
B00000,
B11111,
B00000,
B01010,
B10001,
B00000,
};
byte seven = {
B11111,
B10001,
B10001,
B11111,
B10001,
B10001,
B11111,
B00000,
};
LiquidCrystal_I2C lcd(0x27, 16, 2);
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
sensors.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, one);
lcd.createChar(1, two);
lcd.createChar(2, three);
lcd.createChar(3, four);
lcd.createChar(4, five);
lcd.createChar(5, six);
lcd.createChar(6, seven);
lcd.home();
lcd.print("Welcome to use!");
delay(1000);
lcd.clear();
Serial.begin(9600);
Serial.println("Wait for set time");
rtc.write_protect(false);
rtc.halt(false);
}
void Display(){
Time t = rtc.time();
memset(day, 0, sizeof(day));
switch (t.day)
{
case 1: lcd.setCursor(12,1); lcd.write((byte)0); break;
case 2: lcd.setCursor(12,1); lcd.write(1); break;
case 3: lcd.setCursor(12,1); lcd.write(2); break;
case 4: lcd.setCursor(12,1); lcd.write(3); break;
case 5: lcd.setCursor(12,1); lcd.write(4); break;
case 6: lcd.setCursor(12,1); lcd.write(5); break;
case 7: lcd.setCursor(12,1); lcd.write(6); break;
}
lcd.setCursor(0,0);
if(t.hr < 10)lcd.print("0");
lcd.print(t.hr);
lcd.print(":");
if(t.min < 10)lcd.print("0");
lcd.print(t.min);
lcd.print(":");
if(t.sec < 10)lcd.print("0");
lcd.print(t.sec);
lcd.setCursor(0,1);
lcd.print(t.yr);
lcd.print("/");
if(t.mon < 10)lcd.print("0");
lcd.print(t.mon);
lcd.print("/");
if(t.date < 10)lcd.print("0");
lcd.print(t.date);
lcd.setCursor(9,0);
lcd.print(c);
lcd.write((char)223);
lcd.print("C");
lcd.print(" ");
}
void loop() {
sensors.requestTemperatures();
c = sensors.getTempCByIndex(12);
Display();
/* 当串口有数据的时候,将数据拼接到变量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;
}
}注意,设置法有点不一样。如:2015年10月17日10时18分0秒星期天,
输入:2015,10,17,10,18,0,7即可。
用LCD1602不带I2C模块的,代码如下:#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
int Mode=0;
int h = 0;
int m = 0;
int s = 0;
int d = 12;
int mo = 5;
int y = 15;
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
float c = 0.00;
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
char day;
byte one = {
B00000,
B00000,
B00000,
B11111,
B00000,
B00000,
B00000,
B00000,
};
byte two = {
B00000,
B01110,
B00000,
B00000,
B00000,
B11111,
B00000,
B00000,
};
byte three = {
B00000,
B01110,
B00000,
B01110,
B00000,
B11111,
B00000,
B00000,
};
byte four = {
B00000,
B11111,
B10001,
B10101,
B11101,
B00001,
B01110,
B00000,
};
byte five = {
B00000,
B11110,
B01000,
B11110,
B01010,
B01010,
B11111,
B00000,
};
byte six = {
B00000,
B00100,
B00000,
B11111,
B00000,
B01010,
B10001,
B00000,
};
byte seven = {
B11111,
B10001,
B10001,
B11111,
B10001,
B10001,
B11111,
B00000,
};
LiquidCrystal_I2C lcd(3,4,5,6,7,8);
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
sensors.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, one);
lcd.createChar(1, two);
lcd.createChar(2, three);
lcd.createChar(3, four);
lcd.createChar(4, five);
lcd.createChar(5, six);
lcd.createChar(6, seven);
lcd.home();
lcd.print("Welcome to use!");
delay(1000);
lcd.clear();
Serial.begin(9600);
Serial.println("Wait for set time");
rtc.write_protect(false);
rtc.halt(false);
}
void Display(){
Time t = rtc.time();
memset(day, 0, sizeof(day));
switch (t.day)
{
case 1: lcd.setCursor(12,1); lcd.write((byte)0); break;
case 2: lcd.setCursor(12,1); lcd.write(1); break;
case 3: lcd.setCursor(12,1); lcd.write(2); break;
case 4: lcd.setCursor(12,1); lcd.write(3); break;
case 5: lcd.setCursor(12,1); lcd.write(4); break;
case 6: lcd.setCursor(12,1); lcd.write(5); break;
case 7: lcd.setCursor(12,1); lcd.write(6); break;
}
lcd.setCursor(0,0);
if(t.hr < 10)lcd.print("0");
lcd.print(t.hr);
lcd.print(":");
if(t.min < 10)lcd.print("0");
lcd.print(t.min);
lcd.print(":");
if(t.sec < 10)lcd.print("0");
lcd.print(t.sec);
lcd.setCursor(0,1);
lcd.print(t.yr);
lcd.print("/");
if(t.mon < 10)lcd.print("0");
lcd.print(t.mon);
lcd.print("/");
if(t.date < 10)lcd.print("0");
lcd.print(t.date);
lcd.setCursor(9,0);
lcd.print(c);
lcd.write((char)223);
lcd.print("C");
lcd.print(" ");
}
void loop() {
sensors.requestTemperatures();
c = sensors.getTempCByIndex(12);
Display();
/* 当串口有数据的时候,将数据拼接到变量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;
}
}
cccheng
发表于 2015-5-17 10:37:54
哈哈......我做了个LCD时钟带温度显示、星期显示......
注意,三个库忘记贴上去了,补一下:
toopoo
发表于 2015-5-18 14:08:34
我今天尝试了一下,什么都正常,不过最后需要加个逗号,日期始终不对,输入18号,显示是10号
toopoo
发表于 2015-5-18 14:13:45
我去
接到3.3V一切正常了,这种小电流直接接板子的3.3V就OK了
wangku001wei
发表于 2015-6-7 15:26:04
非常感谢!!
页:
1
2
3
4
5
6
7
[8]
9
10
11