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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Arduino

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

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

Q&A

1回答

918閲覧

Arduino EPS32 wroomでエアコン操作

kyo0000

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Arduino

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

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

0グッド

1クリップ

投稿2020/02/01 21:16

編集2020/02/02 00:31

前提・実現したいこと

LINEからMQTTcloudを経由して、Arduinoにメッセージを送り、家のエアコンを操作するプログラムを作成しています。
Arduino側のプログラムで、IRremoteライブラリを使って、赤外線信号の送信を実装中に以下のエラーメッセージが発生しました。
色々と試しているものの行き詰ってしまい、解決策やアドバイスいただけますでしょうか。
何卒よろしくお願いいたします。

発生している問題・エラーメッセージ

error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(heatonData, sizeof(heatonData)/sizeof(int), khz);
^
aircon-app:92:12: error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(heatoffData, sizeof(heatoffData)/sizeof(int), khz);
^
aircon-app:94:12: error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(defonData, sizeof(defonData)/sizeof(int), khz);
^
aircon-app:96:12: error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(defoffData, sizeof(defoffData)/sizeof(int), khz);
^
aircon-app:98:12: error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(aironData, sizeof(aironData)/sizeof(int), khz);
^
aircon-app💯12: error: request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'
irsend.sendRaw(airoffData, sizeof(airoffData)/sizeof(int), khz);

省略

exit status 1
request for member 'sendRaw' in 'irsend', which is of non-class type 'IRsend(int)'

該当のソースコード

C#

1#include <LiquidCrystal.h> 2#include <WiFiClientSecure.h> 3#include <PubSubClient.h> 4#include <IRremote.h> 5#include "config.h" 6#include "certificate.h" 7WiFiClientSecure wifiClient; 8PubSubClient client(wifiClient); 9 10 11IRsend irsend(const int sendPin = 26); 12 13 14int khz = 38; 15const unsigned int heatonData[100] = {3300,1700, 400,1250, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,1300, 400,400, 400,1250, 400,1250, 400,1250, 400,1300, 400,1250, 400,1250, 400,400, 400,1300, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,450}; 16const unsigned int heatoffData[100] = {3350,1650, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,1250, 400,450, 400,450, 350,450, 400,450, 400,400, 400,450, 400,450, 350,450, 400,400, 400,450, 400,400, 450,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,1250, 400,400, 450,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,450, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 450,1250, 400,1250, 400,400}; 17const unsigned int defonData[100] = {3350,1650, 400,1250, 400,400, 450,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 450,400, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,1250, 400,400, 400,1250, 400,1300, 400,1250, 400,1250, 400,1250, 400,1250, 400,450, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1300, 400,400}; 18const unsigned int defoffData[100] = {3300,1650, 450,1250, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 450,1250, 400,400, 400,1250, 400,1250, 400,1250, 450,1250, 400,1250, 400,1250, 400,400, 400,1300, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,450}; 19const unsigned int aironData[100] = {3300,1700, 400,1250, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,1300, 400,400, 400,1250, 400,1250, 400,1250, 400,1300, 400,1250, 400,1250, 400,400, 400,1250, 450,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,450}; 20const unsigned int airoffData[100] = {3350,1650, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,1250, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,400, 400,450, 400,450, 400,400, 400,450, 400,1250, 400,400, 400,1250, 400,1300, 400,1250, 400,1250, 400,1250, 400,1250, 400,450, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 400,1250, 450,1250, 400,400}; 21 22void setup() { 23 Serial.begin(115200); 24 Serial.println(); 25 WiFi.mode(WIFI_STA); 26 client.setCallback(callback); 27 client.setServer(host, port); 28} 29 30void loop() { 31 //Wifi接続 32 if (WiFi.status() != WL_CONNECTED) { 33 Serial.print("connecting to "); 34 Serial.print(ssid); 35 Serial.println("..."); 36 WiFi.begin(ssid, password); 37 38 if (WiFi.waitForConnectResult() != WL_CONNECTED) { 39 //アクセスポイントへの接続に失敗したら5秒間待ってリトライ 40 Serial.println("failed to connect"); 41 delay(5000); 42 return; 43 } else { 44 Serial.print("WiFi connected: "); 45 Serial.println(WiFi.localIP()); 46 } 47 48 wifiClient.setCACert(ca_cert); 49 } 50 51 //CloudMQTTに接続 52 if (!client.connected()) { 53 client.connect(clientID, CloudMQTT_user, CloudMQTT_pass); 54 55 if (client.connected()) { 56 Serial.println("MQTT connected"); 57 58 // トピック名を指定してsubscribe 59 client.subscribe(topic); 60 } else { 61 Serial.print("MQTT connection failed: "); 62 Serial.println(client.state()); 63 delay(5000); 64 } 65 } else { 66 // 既にサーバに接続されていれば通常処理を行う 67 client.loop(); 68 } 69} 70 71// メッセージを受け取ったらシリアルにプリント 72void callback(char* topic, byte* payload, unsigned int length) { 73 74 Serial.print("Message arrived in topic: "); 75 Serial.println(topic); 76 77 Serial.print("Message:"); 78 79 String message; 80 81 for (int i = 0; i < length; i++) { 82 message += (char)payload[i]; 83 } 84 85 Serial.println(message); 86 87 if (message == "heatOn") { 88 irsend.sendRaw(heatonData, sizeof(heatonData)/sizeof(int), khz); 89 } else if (message == "heatOff") { 90 irsend.sendRaw(heatoffData, sizeof(heatoffData)/sizeof(int), khz); 91 }else if (message == "defOn") { 92 irsend.sendRaw(defonData, sizeof(defonData)/sizeof(int), khz); 93 }else if (message == "defOff") { 94 irsend.sendRaw(defoffData, sizeof(defoffData)/sizeof(int), khz); 95 }else if (message == "airOn") { 96 irsend.sendRaw(aironData, sizeof(aironData)/sizeof(int), khz); 97 }else if (message == "airOff") { 98 irsend.sendRaw(airoffData, sizeof(airoffData)/sizeof(int), khz); 99 } 100 Serial.println(); 101 Serial.println("-----------------------"); 102}

環境

IRremoteライブラリのバージョンは2.2.3です。
https://github.com/z3t0/Arduino-IRremote

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

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

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

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

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

guest

回答1

0

IRsend irsend(const int sendPin = 26);

IRsend irsend(26);

なんでは


IRsend irsend;

ですね。

投稿2020/02/01 23:40

編集2020/02/02 00:38
y_waiwai

総合スコア87774

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

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

kyo0000

2020/02/02 00:18 編集

回答いただきありがとうございます。 ご指摘いただいたとおり試して見ましたが、以下のようなエラーが出てしまいます。 error: no matching function for call to 'IRsend::IRsend(int)' お気づきの点などありましたらご教示頂けますと幸いです。
y_waiwai

2020/02/02 00:40

回答に追記しました。
kyo0000

2020/02/02 06:19

回答いただきましてありがとうございます。修正して見ましたが、エラーになってしました。 ライブラリも整理してみようと思います...引き続何かありましたらアドバイスのほどよろしくお願いします。 undefined reference to `IRsend::sendRaw(unsigned int const*, unsigned int, unsigned int)' function `callback(char*, unsigned char*, unsigned int)': : undefined reference to `IRsend::sendRaw(unsigned int const*, unsigned int, unsigned int)' collect2: error: ld returned 1 exit status 「PubSubClient.h」に対して複数のライブラリが見つかりました 「IRremote.h」に対して複数のライブラリが見つかりました 「LiquidCrystal.h」に対して複数のライブラリが見つかりました 「WiFiClientSecure.h」に対して複数のライブラリが見つかりました 「WiFi.h」に対して複数のライブラリが見つかりました exit status 1 ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。
y_waiwai

2020/02/02 07:10

ArduinoIDEのボード設定やライブラリ設定が間違ってるような気がしますが、そこらへん見直してみてはどうでしょう。 ESP32はいろいろ追加する必要があったと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問