前提・実現したいこと
圧電ブザーの音を出力したくコードを書きましたが、'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
使用しているボードは?
Arduinoではないボードを利用している、何てことありませんか?
他社のボードの為に、純正(自社)のライブラリを書き換えてくれる、何てことはありませんから。
ESP32-DevKitC ESP-WROOM-32開発ボード
です
ちょっと確認しましたけど、tone関数は存在しません。つまりサポートしていません。
<ユーザ>\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32
※私のボード情報が古い可能性もあります
> 試したこと
> ネットの情報
具体的になにを試したのですか?
nac_tnk様→試しにArduinoIDEのボードをArduinoUNOに変えて検証したところ、コンパイルできました。たしかにESP32はtone関数に対応してなさそうでしたね・・・
他の方法でやってみることにします。ありがとうございました。
thkana様→ネットでの情報収集です。エラーについて調べましたがこれといった解決方法がなかったです
代替機能として、ledcWriteTone();ですることで動作確認できました。ありがとうございあmした
手段が見つかったのは良かったですけれど。
'ESP32 tone'でググると、概要だけでも
トップにヒットしたサイトでは「ESP32用のArduinoにtone()関数がないため」
2番めは「ESP32用のArduinoにtone()関数がないため」
というのが見えます。ちょっと「情報収集」のやり方を考えたほうがよいのでは...
esp自体の問題とは考えておらず、「arduino tone関数」で検索して情報収集しておりました。
もう少しいろいろな幅で探るようにしていきます
回答1件
あなたの回答
tips
プレビュー