才学ARDUINO参照LZ的程序也做了一个DS3231+bmp085大气压力的显示时钟,感觉还好
请问我想加入电波钟用来自动校准时间,应该怎么写程序?(电波钟程序已搞好)是不是把时间校准程序和电波钟程序,嵌套到主程序里呢?请给点提示,谢谢!!温度是用的bmp085上的。
还有原来这里用IF判断AM,PM我用24小时制。上午在时分,妙前补了0,一直就显示AM
if(PM==0) 不知道這句判断的PM值是哪里来的
我理解是PM测试=于0的话那么就应该显示AM,else否则就应该显示PM,但是不管上午下午一直显示的是AM。
求if(PM==0) PM判断的值是哪里来的,谢谢!!
if(PM==0) //判断变量PM返回值 0就显示AM1就显示PM
{
u8g.setFont(u8g_font_6x12);
u8g.print("AM");
}
else
{
u8g.setFont(u8g_font_6x12);
u8g.print("PM");
}
//-----------------
刚才把這句改为if(PM==1) 就显示PM了。看明天上午会变化不。
幻生幻灭 发表于 2013-10-20 19:54 static/image/common/back.gif
贩子好久没发教程了,呵呵。
布线感觉有些影响可爱的模块啦
//=======调用U8GLIB液晶屏驱动库=====#include "U8glib.h"U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);//=======调用DS3231时钟驱动库======#include <DS3231.h>#include <Wire.h>//========定义时钟需要的各种变量========DS3231 Clock;bool Century=false;bool h12;bool PM;byte ADay, AHour, AMinute, ASecond, ABits;bool ADy, A12h, Apm;int second,minute,hour,date,month,year,temperature; void setup(void) { Clock.setClockMode(true); } void loop(void) { //=======读取时钟的各种中值,存入对应变量======== second=Clock.getSecond(); //秒minute=Clock.getMinute(); //分hour=Clock.getHour(h12, PM); //小时 (分上午和下午模式) date=Clock.getDate(); //日month=Clock.getMonth(Century); //月year=Clock.getYear(); //年(仅2位)temperature=Clock.getTemperature(); //温度(正负2-3摄氏度误差,温度仅供参考)//======开始显示==========u8g.firstPage(); do { draw();} while( u8g.nextPage() );}//======定义的显示模式======void draw(void) {u8g.setPrintPos(0, 45); //定义显示位置 横向起始位置0 纵向45if(PM==0) //判断变量PM返回值 0就显示AM1就显示PM{u8g.print("AM");}else{u8g.print("PM");}u8g.setFont(u8g_font_freedoomr25n); //设定字体(具体请参看 U8GLIB google code页面,大量字体可选)u8g.print(hour); //输出小时的值u8g.print(":"); //显示一个冒号u8g.print(minute,); //显示分钟的值u8g.setFont(u8g_font_freedoomr10r);//调整显示字体u8g.print(":"); //再显示冒号u8g.print(second); //显示秒 } 第60行,在IDE 1.6 中,minute后面多了一个 ,号 。
u8g.print(minute,); //显示分钟的值 请问为什么我把ds3231和DHT11一起使用时时钟就乱码了?我用的是I2C的OLED,哪位好心帮忙看一下,代码如下:
#include <dht11.h>
#include <U8glib.h>
#include <DS3231.h>
#include <Wire.h>
dht11 DHT11;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
#define DHT11PIN 4
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits, DoW;
bool ADy, A12h, Apm;
byte second,minute,hour,date,month,year,temperature;
void draw(void)
{
u8g.drawLine(0,15 , 128, 15);
u8g.drawLine(0,51 , 128, 51);
u8g.setFont(u8g_font_gdr10);//字体设置
u8g.setPrintPos(2, 64);
int chk = DHT11.read(DHT11PIN);
u8g.print((float)DHT11.temperature, 1);
u8g.setPrintPos(30, 64);
u8g.print("c");
u8g.setPrintPos(88, 64);
u8g.print((float)DHT11.humidity, 1);
u8g.setPrintPos(116, 64);
u8g.print("%");
u8g.setPrintPos(0, 10);
u8g.print("20");
u8g.print(year);
u8g.print("/");
u8g.print("month");
u8g.print("/");
u8g.print(date);
u8g.print("dow");
u8g.setPrintPos(0, 45); //定义显示位置 横向起始位置0 纵向45
if(PM==0) //判断变量PM返回值 0就显示AM1就显示PM
{
u8g.print("AM");
}else
{u8g.print("PM");}
u8g.setFont(u8g_font_freedoomr25n); //设定字体(具体请参看 U8GLIB google code页面,大量字体可选)
u8g.print(hour); //输出小时的值
u8g.print(":"); //显示一个冒号
u8g.print("minute"); //显示分钟的值
u8g.setFont(u8g_font_freedoomr10r);//调整显示字体
u8g.print(":"); //再显示冒号
u8g.print(second);
}
void setup(void)
{
Clock.setClockMode(true);
}
void loop(void) {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond(); //秒
minute=Clock.getMinute(); //分
hour=Clock.getHour(h12, PM); //小时 (分上午和下午模式)
date=Clock.getDate(); //日
month=Clock.getMonth(Century); //月
year=Clock.getYear();
u8g.firstPage();
do {
draw();
long x = random(0,127);
long y = random(51,63);
}
while( u8g.nextPage() );
}
那个底板是标准的乐高板吗?那些彩色的有洞的方块是什么,在哪里买的? 怎么显示星期? 期待楼主更新加入温湿度,气压,电子罗盘功能,用按键切换显示 怎么设置显示24小时制呢
页:
1
[2]