###前提・実現したいこと
Arduino M0 ProとTiny RTC I2C Modulesを配線し、シリアルモニタ上に時間情報を出力させたいのですが、下記のように正常に時間情報をArduino IDE上に出力してくれません。
もともと、Arduino UNOでは実行可能だったのですが、Arduino M0 Proに変更してコンパイルした際に、UNOでは見られなかったコンパイルエラーが発生し質問させていただきました参考(前回の質問:https://teratail.com/questions/66738)。それを解決する方法として
RTC_DS1307 RTC; // RTC Modul を
RTC_DS1307 RttC; // RTC Modul
に書き換え、コンパイルできるようになりましたが、実行するとシリアルモニタ上に出力された時間情報が、適切では無かったので困っています。
(※Arduino UNOを用いた際は、正確に時間情報が出力されます。また、時間は事前にパソコンの時間と同期させるようプログラムを実行し完了しています。)
アイデアやアドバイス等ございましたら、お教えいただきますと幸甚に存じます。
###発生している問題・エラーメッセージ
Temperatur: 0.00 °C Mo, 165.165.2165 165:165:165
###該当のソースコード
c
1// Tiny RTC (DS1307) 2 3#include <Wire.h> // I2C-Bibliothek einbinden 4#include "RTClib.h" // RTC-Bibliothek einbinden 5 6RTC_DS1307 RttC; // RTC Modul 7 8#include <OneWire.h> // OneWire-Bibliothek einbinden 9#include <DallasTemperature.h> // DS18B20-Bibliothek einbinden 10 11 12 13#define DS18B20_PIN 2 // Pin für DS18B20 definieren Arduino D2 14 15OneWire oneWire(DS18B20_PIN); // OneWire Referenz setzen 16DallasTemperature sensors(&oneWire); // DS18B20 initialisieren 17 18void setup(void) { 19 20 // Initialisiere I2C 21 Wire.begin(); 22 23 // Initialisiere RTC 24 RttC.begin(); 25 26 // Serielle Ausgabe starten 27 Serial.begin(9600); 28 29 // Begrüßungstext auf seriellem Monitor ausgeben 30 Serial.println("Starte Datum, Zeit und Temperatur - blog.simtronyx.de"); 31 32 // Prüfen ob RTC läuft 33 if (! RttC.isrunning()) { 34 35 // Aktuelles Datum und Zeit setzen, falls die Uhr noch nicht läuft 36 RttC.adjust(DateTime(__DATE__, __TIME__)); 37 38 Serial.println("Echtzeituhr wurde gestartet und auf Systemzeit gesetzt."); 39 } 40 else Serial.println("Echtzeituhr laeuft bereits."); 41 42 sensors.begin(); // DS18B20 starten 43} 44 45void loop(){ 46 47 DateTime now=RttC.now(); // aktuelle Zeit abrufen 48 show_time_and_date(now); // Datum und Uhrzeit ausgeben 49 50 sensors.requestTemperatures(); // Temperatursensor auslesen 51 show_temperature(sensors.getTempCByIndex(0)); // Temperatur ausgeben 52 53 delay(3000); // 30 Sekunden warten bis zur nächsten Ausgabe 54} 55 56// Wochentag ermitteln 57String get_day_of_week(uint8_t dow){ 58 59 String dows=" "; 60 switch(dow){ 61 case 0: dows="So"; break; 62 case 1: dows="Mo"; break; 63 case 2: dows="Di"; break; 64 case 3: dows="Mi"; break; 65 case 4: dows="Do"; break; 66 case 5: dows="Fr"; break; 67 case 6: dows="Sa"; break; 68 } 69 70 return dows; 71} 72 73// Datum und Uhrzeit ausgeben 74void show_time_and_date(DateTime datetime){ 75 76 // Wochentag, Tag.Monat.Jahr 77 Serial.print(get_day_of_week(datetime.dayOfWeek())); 78 Serial.print(", "); 79 if(datetime.day()<10)Serial.print(0); 80 Serial.print(datetime.day(),DEC); 81 Serial.print("."); 82 if(datetime.month()<10)Serial.print(0); 83 Serial.print(datetime.month(),DEC); 84 Serial.print("."); 85 Serial.println(datetime.year(),DEC); 86 87 // Stunde:Minute:Sekunde 88 if(datetime.hour()<10)Serial.print(0); 89 Serial.print(datetime.hour(),DEC); 90 Serial.print(":"); 91 if(datetime.minute()<10)Serial.print(0); 92 Serial.print(datetime.minute(),DEC); 93 Serial.print(":"); 94 if(datetime.second()<10)Serial.print(0); 95 Serial.println(datetime.second(),DEC); 96} 97 98// Temperatur ausgeben 99void show_temperature(float temp){ 100 101 Serial.print("Temperatur: "); 102 Serial.print(temp); 103 Serial.print(" "); // Hier müssen wir ein wenig tricksen 104 Serial.write(176); // um das °-Zeichen korrekt darzustellen 105 Serial.println("C"); 106}
###試したこと
コンパイルエラーの解決方法
前回の質問:https://teratail.com/questions/66738
###補足情報(言語/FW/ツール等のバージョンなど)
Arduino M0 Pro
Arduino IDE 1.8.0
Tiny RTC I2C Modules
DS1307
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 07:13
2017/02/22 07:36
2017/02/22 07:52
2017/02/22 08:00
2017/02/22 08:04
2017/02/22 23:43
2017/02/23 06:51
2017/02/23 06:52
2017/02/23 06:53
2017/02/23 08:13
2017/02/23 09:26
2017/02/23 23:47