Arduino库教程-Bridge-Time Check
Time Check(检查时间)
- 这个yun设备例子通过Bridge从Linux processor里获得时间,然后arduino分析时分秒。yun设备必须连接到一个网络来获得准确的时间。如果你用网络型WiFi接口来配置yun设备的网络,确保你选中合适的时间区域。
硬件要求
- yun开发板或者 shield
- 连接到互联网的WiFi 网络
电路
这个例子无额外的连线
图由 Fritzing 软件绘制
样例代码
- 你需要包含Process 头文件:
#include <Process.h>
- 创建一个用来获得日期的Process例子,并创建一个保存当前时分秒数据的变量。也要创建一个保存先前时间的变量。为了开始,放进一个不可能是有效时间的值(如一个负数)。
Process date;
int hours, minutes, seconds;
int lastSecond = -1;
- 在setup()里初始化Bridge和Serial。等到有串口连接(在继续连接到程序和打印状态到串口监视器之前)。
void setup() {
Bridge.begin();
Serial.begin(9600);
while(!Serial);
Serial.println("Time Check");
- 运行一个初始化process,通过在
date
里增加一个参数“T”来获得时间。
if (!date.running()) {
date.begin("date");
date.addParameter("+%T");
date.run();
}
}
- 在loop()里检查是否有秒经过先前的时间。如果有,打印当前时间到串口监视器,并且如果它停止了,重启
date
process。
void loop() {
if(lastSecond != seconds) { // if a second has passed
if (hours <= 9) Serial.print("0"); // adjust for 0-9
Serial.print(hours);
Serial.print(":");
if (minutes <= 9) Serial.print("0"); // adjust for 0-9
Serial.print(minutes);
Serial.print(":");
if (seconds <= 9) Serial.print("0"); // adjust for 0-9
Serial.println(seconds);
if (!date.running()) {
date.begin("date");
date.addParameter("+%T");
date.run();
}
}
- 如果有从
date
process出来的结果,分析这个数据。首先,保存结果(hh:mm:ss)到一个字符串里,然后用indexOf() 和 lastIndexOf()找到冒号的本地。
while (date.available()>0) {
String timeString = date.readString();
int firstColon = timeString.indexOf(":");
int secondColon= timeString.lastIndexOf(":");
- 知道冒号的索引数字后,你可以作为子字符串分割时分秒:
String hourString = timeString.substring(0, firstColon);
String minString = timeString.substring(firstColon+1, secondColon);
String secString = timeString.substring(secondColon+1);
- 最后,转化字符串为整数,并且保存先前的秒作为下一个loop()的时间对比。
hours = hourString.toInt();
minutes = minString.toInt();
lastSecond = seconds;
seconds = secString.toInt();
}
}
- 完整代码如下:
/*
Time Check
Gets the time from Linux via Bridge then parses out hours,
minutes and seconds using a Yún101/YunShield/Yún.
created 27 May 2013
modified 21 June 2013
By Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/TimeCheck
*/
#include <Process.h>
Process date; // process used to get the date
int hours, minutes, seconds; // for the results
int lastSecond = -1; // need an impossible value for comparison
void setup() {
Bridge.begin(); // initialize Bridge
SerialUSB.begin(9600); // initialize serial
while (!Serial); // wait for Serial Monitor to open
SerialUSB.println("Time Check"); // Title of sketch
// run an initial date process. Should return:
// hh:mm:ss :
if (!date.running()) {
date.begin("date");
date.addParameter("+%T");
date.run();
}
}
void loop() {
if (lastSecond != seconds) { // if a second has passed
// print the time:
if (hours <= 9) {
SerialUSB.print("0"); // adjust for 0-9
}
SerialUSB.print(hours);
SerialUSB.print(":");
if (minutes <= 9) {
SerialUSB.print("0"); // adjust for 0-9
}
SerialUSB.print(minutes);
SerialUSB.print(":");
if (seconds <= 9) {
SerialUSB.print("0"); // adjust for 0-9
}
SerialUSB.println(seconds);
// restart the date process:
if (!date.running()) {
date.begin("date");
date.addParameter("+%T");
date.run();
}
}
//if there's a result from the date process, parse it:
while (date.available() > 0) {
// get the result of the date process (should be hh:mm:ss):
String timeString = date.readString();
// find the colons:
int firstColon = timeString.indexOf(":");
int secondColon = timeString.lastIndexOf(":");
// get the substrings for hour, minute second:
String hourString = timeString.substring(0, firstColon);
String minString = timeString.substring(firstColon + 1, secondColon);
String secString = timeString.substring(secondColon + 1);
// convert to ints,saving the previous second:
hours = hourString.toInt();
minutes = minString.toInt();
lastSecond = seconds; // save to do a time comparison
seconds = secString.toInt();
}
}
[Get Code]
更多
- Bridge: 从网页浏览器进入开发板的引脚。
- Console ASCII Table: 示范了怎样打印多种格式到控制台。
- Console Pixel: 通过控制台控制一个LED灯。
- Console Read: 从控制台那里分析信息,然后重复发送返回。
- Datalogger: 在SD卡上保存传感器信息。
- File Write Script: 示范怎样在Process上写入和执行外壳脚本。
- HTTP Client: 建造一个简单的客户端,可以下载网页并且打印到串口监视器。
- HTTP Client Console: 建造一个简单的客户端,可以下载网页并且用控制台通过WIFI打印到串口监视器。
- Mailbox Read Messages: 用REST API通过一个网页发送文本信息到。
- Process: 示范怎么用Process运行 Linux 命令。
- Remote Due Blink: 示范怎么远程上传程序到DUE开发板上。
- Shell Commands: 用Process 来运行 shell 命令。
- SpacebrewYun: 在Arduino IDE软件的例子上看更多关于 Spacebrew 文档信息。
- Temboo: 在Arduino IDE软件的例子上看更多关于 Temboo 文档信息。
- Temperature Web Panel: 当浏览者要求时,粘贴传感数据到网页上。
- Time Check: 从网络的时间服务器获得时间,并且打印到串口监视器。
- WiFi Status: 运行一个预配置的脚本,报告返回当前wifi网络的强度。
- Yun First Config: 用串口监视器不费力地连接你的云产品到wifi网络,并且在上面回答一些简单的问题。
- Yun Serial Terminal: 通过串口监视器进入Linux终端。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号