從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
|