質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

2113閲覧

Arduino M0 ProとTiny RTC I2C Modulesのコンパイルエラー ※Arduino Unoでは動作します。

bobby2128

総合スコア42

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2017/02/22 01:13

###前提・実現したいこと
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

RTCというマクロがどこかのヘッダーに定義されているようなので、6行目の

C

1RTC_DS1307 RTC; // RTC Modul

RTCを別の名前に変えてみたらどうでしょうか。

投稿2017/02/22 01:45

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/02/22 02:00 編集

ttyp03様 早速の助言をいただきありがとうございます。 RTCに関する箇所の名前を変更したところ(RTC_DS1307 RTC; →RTC_DS1307 RttC;)、無事にコンパイルすることができました。 ところが、シリアルモニタ上に表示される時間情報が以下に示すように正常ではない状態となっております。事前にTiny RTC I2C Modules(DS1307)とPCとの時間を同期させるプログラムで同期させてはいるので、それが不思議です。また、温度については現在温度センサーを配線していないので、時間のみを適切に表示させたいです。 Temperatur: 0.00 °C Mo, 165.165.2165 165:165:165 Temperatur: 0.00 °C 重ね重ねお手数おかけいたしますが、どうかよろしくお願いいたします。
ttyp03

2017/02/22 02:01

コンパイルエラーが解消できたようでよかったです。 追加の質問の件ですが、質問タイトルとは内容がずれてきていますので、改めて質問を挙げた方がよろしいかと思います。 面倒とは思いますがよろしくお願いします。
bobby2128

2017/02/22 03:34

ttyp03様 おっしゃる通り内容が変わるので改めて質問投稿させていただきます。 承知いたしました。ありがとうございます。
bobby2128

2017/02/22 05:11

ttyp03様 先ほど改めて質問投稿させていただきました。 お手数おかけいたしますが、ご確認をよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問