###前提・実現したいこと
Arduino M0 ProとTiny RTC I2C Modulesを配線しプログラムを書き込みたいのですが、以下のようなコンパイルエラーが出てきます。
Arduino Unoでは以下のようなエラーは発生せず、無事にコンパイルでき、また動作も正常です。
Arduino M0 Proとの組み合わせの際、コンパイル時にエラーが出てくるのですが特別な措置が必要なのでしょうか。
アイデアやアドバイス等ございましたらお教えいただけますと幸甚に存じます。
###発生している問題・エラーメッセージ
In file included from C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.0.0/CMSIS/Device/ATMEL/samd21/include/samd21.h:69:0, from C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.0.0/CMSIS/Device/ATMEL/samd.h:105, from C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.0.0/CMSIS/Device/ATMEL/sam.h:424, from C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.11\cores\arduino/Arduino.h:48, from sketch\Tiny_RTC_DS1307_DS18B20.ino.cpp:1: C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.0.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:487:38: error: expected ')' before '*' token #define RTC ((Rtc *)0x40001400UL) /**< \brief (RTC) APB Base Address */ ^ C:\Users\y.y\Documents\Arduino\Tiny_RTC_DS1307_DS18B20\Tiny_RTC_DS1307_DS18B20.ino:6:12: note: in expansion of macro 'RTC' RTC_DS1307 RTC; // RTC Modul ^ C:\Users\y.y\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.0.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:487:38: error: expected ')' before '*' token #define RTC ((Rtc *)0x40001400UL) /**< \brief (RTC) APB Base Address */ ^ C:\Users\y.y\Documents\Arduino\Tiny_RTC_DS1307_DS18B20\Tiny_RTC_DS1307_DS18B20.ino:6:12: note: in expansion of macro 'RTC' RTC_DS1307 RTC; // RTC Modul ^ C:\Users\y.y\Documents\Arduino\Tiny_RTC_DS1307_DS18B20\Tiny_RTC_DS1307_DS18B20.ino: In function 'void setup()': Tiny_RTC_DS1307_DS18B20:24: error: request for member 'begin' in '1073746944u', which is of pointer type 'Rtc*' (maybe you meant to use '->' ?) RTC.begin(); ^ Tiny_RTC_DS1307_DS18B20:33: error: request for member 'isrunning' in '1073746944u', which is of pointer type 'Rtc*' (maybe you meant to use '->' ?) if (! RTC.isrunning()) { ^ Tiny_RTC_DS1307_DS18B20:36: error: request for member 'adjust' in '1073746944u', which is of pointer type 'Rtc*' (maybe you meant to use '->' ?) RTC.adjust(DateTime(__DATE__, __TIME__)); ^ C:\Users\y.y\Documents\Arduino\Tiny_RTC_DS1307_DS18B20\Tiny_RTC_DS1307_DS18B20.ino: In function 'void loop()': Tiny_RTC_DS1307_DS18B20:47: error: request for member 'now' in '1073746944u', which is of pointer type 'Rtc*' (maybe you meant to use '->' ?) DateTime now=RTC.now(); // aktuelle Zeit abrufen ^ exit status 1 request for member 'begin' in '1073746944u', which is of pointer type 'Rtc*' (maybe you meant to use '->' ?)
###該当のソースコード
c
1// Tiny RTC (DS1307) 2 3#include <Wire.h> // I2C-Bibliothek einbinden 4#include "RTClib.h" // RTC-Bibliothek einbinden 5 6RTC_DS1307 RTC; // 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 RTC.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 (! RTC.isrunning()) { 34 35 // Aktuelles Datum und Zeit setzen, falls die Uhr noch nicht läuft 36 RTC.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=RTC.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}
###補足情報(言語/FW/ツール等のバージョンなど)
Arduino M0 Pro
Arduino IDE 1.8.0
Tiny RTC I2C Modules
DS1307
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 02:00 編集
2017/02/22 02:01
2017/02/22 03:34
2017/02/22 05:11