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

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

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

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

Q&A

解決済

1回答

6111閲覧

'tone' was not declared in this scopeのコンパイルエラー

mijinnnko111

総合スコア1

Arduino

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

0グッド

0クリップ

投稿2020/08/24 07:17

前提・実現したいこと

圧電ブザーの音を出力したくコードを書きましたが、'tone' was not declared in this scope
のエラーが出ておりできない状況です。試しにarduinoIDEのサンプルスケッチ例からもコンパイルしましたが
同様なエラーとなり、自身のコードが問題ではないと思います。結局解決策がわからないのでわかる方おられますでしょうか?
以下サンプルスケッチのコードとエラーです

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

C:\Program Files (x86)\Arduino\examples\02.Digital\toneMelody\toneMelody.ino: In function 'void setup()': toneMelody:37:43: error: 'tone' was not declared in this scope tone(8, melody[thisNote], noteDuration); ^ toneMelody:44:13: error: 'noTone' was not declared in this scope noTone(8); ^ exit status 1 'tone' was not declared in this scope

toneMelody

1/* 2 Melody 3 4 Plays a melody 5 6 circuit: 7 - 8 ohm speaker on digital pin 8 8 9 created 21 Jan 2010 10 modified 30 Aug 2011 11 by Tom Igoe 12 13 This example code is in the public domain. 14 15 http://www.arduino.cc/en/Tutorial/Tone 16*/ 17 18#include "pitches.h" 19 20// notes in the melody: 21int melody[] = { 22 NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 23}; 24 25// note durations: 4 = quarter note, 8 = eighth note, etc.: 26int noteDurations[] = { 27 4, 8, 8, 4, 4, 4, 4, 4 28}; 29 30void setup() { 31 // iterate over the notes of the melody: 32 for (int thisNote = 0; thisNote < 8; thisNote++) { 33 34 // to calculate the note duration, take one second divided by the note type. 35 //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. 36 int noteDuration = 1000 / noteDurations[thisNote]; 37 tone(8, melody[thisNote], noteDuration); 38 39 // to distinguish the notes, set a minimum time between them. 40 // the note's duration + 30% seems to work well: 41 int pauseBetweenNotes = noteDuration * 1.30; 42 delay(pauseBetweenNotes); 43 // stop the tone playing: 44 noTone(8); 45 } 46} 47 48void loop() { 49 // no need to repeat the melody. 50}

pitches

1/************************************************* 2 * Public Constants 3 *************************************************/ 4 5#define NOTE_B0 31 6#define NOTE_C1 33 7#define NOTE_CS1 35 8#define NOTE_D1 37 9#define NOTE_DS1 39 10#define NOTE_E1 41 11#define NOTE_F1 44 12#define NOTE_FS1 46 13#define NOTE_G1 49 14#define NOTE_GS1 52 15#define NOTE_A1 55 16#define NOTE_AS1 58 17#define NOTE_B1 62 18#define NOTE_C2 65 19#define NOTE_CS2 69 20#define NOTE_D2 73 21#define NOTE_DS2 78 22#define NOTE_E2 82 23#define NOTE_F2 87 24#define NOTE_FS2 93 25#define NOTE_G2 98 26#define NOTE_GS2 104 27#define NOTE_A2 110 28#define NOTE_AS2 117 29#define NOTE_B2 123 30#define NOTE_C3 131 31#define NOTE_CS3 139 32#define NOTE_D3 147 33#define NOTE_DS3 156 34#define NOTE_E3 165 35#define NOTE_F3 175 36#define NOTE_FS3 185 37#define NOTE_G3 196 38#define NOTE_GS3 208 39#define NOTE_A3 220 40#define NOTE_AS3 233 41#define NOTE_B3 247 42#define NOTE_C4 262 43#define NOTE_CS4 277 44#define NOTE_D4 294 45#define NOTE_DS4 311 46#define NOTE_E4 330 47#define NOTE_F4 349 48#define NOTE_FS4 370 49#define NOTE_G4 392 50#define NOTE_GS4 415 51#define NOTE_A4 440 52#define NOTE_AS4 466 53#define NOTE_B4 494 54#define NOTE_C5 523 55#define NOTE_CS5 554 56#define NOTE_D5 587 57#define NOTE_DS5 622 58#define NOTE_E5 659 59#define NOTE_F5 698 60#define NOTE_FS5 740 61#define NOTE_G5 784 62#define NOTE_GS5 831 63#define NOTE_A5 880 64#define NOTE_AS5 932 65#define NOTE_B5 988 66#define NOTE_C6 1047 67#define NOTE_CS6 1109 68#define NOTE_D6 1175 69#define NOTE_DS6 1245 70#define NOTE_E6 1319 71#define NOTE_F6 1397 72#define NOTE_FS6 1480 73#define NOTE_G6 1568 74#define NOTE_GS6 1661 75#define NOTE_A6 1760 76#define NOTE_AS6 1865 77#define NOTE_B6 1976 78#define NOTE_C7 2093 79#define NOTE_CS7 2217 80#define NOTE_D7 2349 81#define NOTE_DS7 2489 82#define NOTE_E7 2637 83#define NOTE_F7 2794 84#define NOTE_FS7 2960 85#define NOTE_G7 3136 86#define NOTE_GS7 3322 87#define NOTE_A7 3520 88#define NOTE_AS7 3729 89#define NOTE_B7 3951 90#define NOTE_C8 4186 91#define NOTE_CS8 4435 92#define NOTE_D8 4699 93#define NOTE_DS8 4978

試したこと

ネットの情報

補足情報(FW/ツールのバージョンなど)

Arduino IDE 1.8.13

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

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

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

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

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

nac_tnk

2020/08/24 09:56

使用しているボードは? Arduinoではないボードを利用している、何てことありませんか? 他社のボードの為に、純正(自社)のライブラリを書き換えてくれる、何てことはありませんから。
mijinnnko111

2020/08/24 10:13

ESP32-DevKitC ESP-WROOM-32開発ボード です
nac_tnk

2020/08/24 11:37

ちょっと確認しましたけど、tone関数は存在しません。つまりサポートしていません。 <ユーザ>\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32 ※私のボード情報が古い可能性もあります
thkana

2020/08/24 11:42

> 試したこと > ネットの情報 具体的になにを試したのですか?
mijinnnko111

2020/08/24 23:54

nac_tnk様→試しにArduinoIDEのボードをArduinoUNOに変えて検証したところ、コンパイルできました。たしかにESP32はtone関数に対応してなさそうでしたね・・・ 他の方法でやってみることにします。ありがとうございました。 thkana様→ネットでの情報収集です。エラーについて調べましたがこれといった解決方法がなかったです
mijinnnko111

2020/08/25 01:29

代替機能として、ledcWriteTone();ですることで動作確認できました。ありがとうございあmした
thkana

2020/08/25 03:30

手段が見つかったのは良かったですけれど。 'ESP32 tone'でググると、概要だけでも トップにヒットしたサイトでは「ESP32用のArduinoにtone()関数がないため」 2番めは「ESP32用のArduinoにtone()関数がないため」 というのが見えます。ちょっと「情報収集」のやり方を考えたほうがよいのでは...
mijinnnko111

2020/08/25 04:05 編集

esp自体の問題とは考えておらず、「arduino tone関数」で検索して情報収集しておりました。 もう少しいろいろな幅で探るようにしていきます
guest

回答1

0

自己解決

代替機能として、ledcWriteTone();とすることで動作できました

投稿2020/08/25 01:30

mijinnnko111

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問