标题:
Arduino温度记录仪带SD卡保存 DS1302+18b20在LCD1602上显示
[打印本页]
作者:
pua
时间:
2017-10-7 18:38
标题:
Arduino温度记录仪带SD卡保存 DS1302+18b20在LCD1602上显示
从DS1302读取时间,从18b20读取温度,在LCD1602上显示,每隔十分钟把数据写入SD卡保存。
Arduino源程序如下:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <stdio.h>
#include <DS1302.h>
namespace {
const int kCePin = 5;
const int kIoPin = 6;
const int kSclkPin = 7;
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "";
case Time::kMonday: return "";
case Time::kTuesday: return "";
case Time::kWednesday: return "";
case Time::kThursday: return "";
case Time::kFriday: return "";
case Time::kSaturday: return "";
}
return "(unknown day)";
}
}
#include <SPI.h>
#include <SD.h>
const int chipSelect = 4;
void setup(void)
{
Serial.begin(9600);
sensors.begin();
lcd.init();
lcd.backlight();
rtc.writeProtect(false);
rtc.halt(false);
//Time t(2017, 9,21,13,55, 0, Time::kThursday);//设置时间
//rtc.time(t);//写入时间
while (!Serial) {;}
Serial.print("初始化SD卡...");
if (!SD.begin(chipSelect)) {
Serial.println("SD卡故障或无卡");
return;
}
Serial.println("SD卡初始化完成.");
}
void loop(void)
{
Time t = rtc.time();
const String day = dayAsString(t.day);
char buf[50];
snprintf(buf, sizeof(buf), "%s%04d%02d%02d %02d%02d %02d",
day.c_str(),
t.yr, t.mon, t.date,
t.hr, t.min, t.sec);
Serial.print(buf);
Serial.print(" 温度");
sensors.requestTemperatures();
Serial.print(sensors.getTempCByIndex(0));
Serial.print("℃");
lcd.setCursor(0,0);
lcd.print(buf);
lcd.setCursor(0,1);
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223);
lcd.print("C");
String dataString = "";
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
File dataFile = SD.open("Arduino.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(buf);
dataFile.print(" 温度");
dataFile.print(sensors.getTempCByIndex(0));
dataFile.println("℃");
dataFile.close();
Serial.println(" 数据成功写入SD卡");
}
else {
Serial.println(" 数据写入SD卡失败");
}
delay(1000);
}
复制代码
所有资料51hei提供下载:
Arduino温度记录仪.zip
(1.13 KB, 下载次数: 71)
2017-10-7 18:37 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
dongfang08
时间:
2017-10-16 13:10
谢谢分享
作者:
lemon0210
时间:
2017-10-18 14:19
附件是什么内容呢,黑币不多,要省着点用
作者:
learningone
时间:
2018-11-24 09:22
收藏备用,SD卡上是什么文件格式,txt?csv?
作者:
canxin520
时间:
2018-11-24 16:37
收藏备用,SD卡上是什么文件格式,txt?csv?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1