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

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

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

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

Q&A

解決済

3回答

5091閲覧

arduino 圧電素子の使い方を教えてください<(_ _)>

mi-yulkuri

総合スコア7

C

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

1グッド

1クリップ

投稿2018/05/12 07:05

編集2018/05/12 07:13

前提・実現したいこと

arduino 圧電素子の使い方を教えてください<(_ _)>

発生している問題

圧電素子近くに、衝撃を加えるとLEDが光る。と言う物を作りたく
下記のURLを参考に色々試してみたのですが、上手く動きません。

http://hackist.jp/?p=4247

arduino・・・c言語ですかね? ### 試したこと 最初に、HP中のコードをコピペしてarduino他、部品を 説明通りに配置してみたのですが、LEDが光らず、シリアル通信もありませんでした。 コード中のしきい値や格納する数字を変えてみたりしたのですが 変化ありません。 試しに抵抗器を取っ払ってみるとLEDが点滅してシリアル通信に knock!knock!と一秒に二回ほど表示されます。 そして、3秒ほど点滅と通信が止まった後、通信,点滅が再開されます。 抵抗器を取り払った場合に、圧電素子を動かしても叩いても上記の 結果に変化ありません。 どこを動かせば、圧電素子にLEDを反応させる 事が出来るか教えてください(T_T) 参考にしたサイトでのコードはこれです↓ const int ledPin = 13; const int knockSensor = A0; const int threshold = 100; int sensorReading = 0; int ledState = LOW; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { sensorReading = analogRead(knockSensor); if (sensorReading >= threshold) { ledState = !ledState; digitalWrite(ledPin, ledState); Serial.println("Knock!"); } delay(100); }
UDON3👍を押しています

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

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

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

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

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

keicha_hrs

2018/05/12 14:02 編集

質問入力フォームで<code>ボタンを押すと「```ここに言語を入力」「コード」「 ```」という3行が出力されますが、この「コード」という部分にソースコードを記述して、「```ここに言語を入力」と「```」の行で上下を挟むようにします。「```ここに言語を入力」は「```C」と書き換えます。そうすることで、この範囲にC言語用のコード修飾がかかり、行頭空白も使えるようになります。
guest

回答3

0

圧電素子といっても、ぶっちゃけマイクと一緒です
振動を与えると電圧が出てきます。が、圧電素子の種類や大きさによって出てくる電圧が変わってきます

オシロがあるなら、圧電素子がつながるCPUのピンの波形を見てみましょう
そこに出る電圧に応じて、thresholdの値を設定する必要があります

んで、圧電素子というのはセラミックコンデンサと一緒で、直流的には絶縁体となります。
抵抗がない場合、CPUのポートは開放しているのと一緒で、電圧が決まりません。
抵抗を必ず入れた状態で動かす必要があります

#まー、この他にも突っ込みどころはたくさんありますが。。

投稿2018/05/12 11:24

y_waiwai

総合スコア87774

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

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

mi-yulkuri

2018/05/12 13:34

回答ありがとうございます! 抵抗は必ず入れないといけないのですね(^_^;) 参考になりましたありがとうございます!
mi-yulkuri

2018/05/12 13:34

回答ありがとうございます! 抵抗は必ず入れないといけないのですね(^_^;) 参考になりましたありがとうございます!
y_waiwai

2018/05/12 22:27

元回路ではちと危険なツッコミを一つ、 圧電素子に振動を与えると、プラスの電圧とともに、マイナスの電圧が出てきます CPUのポートと圧電素子を直接つないでると、このマイナスの電圧で、CPUが壊れる恐れがあります なので、その保護のために、圧電素子に並列に抵抗をつなぐとともに、CPUのポートと圧電素子の間に10KΩ程度の抵抗を入れておいてください
guest

0

ベストアンサー

抵抗を外すとLEDが点滅するってことはおそらく抵抗とaruduino側の回路はちゃんとできてるんでしょう。
抵抗がないと感度が高くなりすぎてそこらの電磁ノイズにも反応してしまいます。

ただ、「抵抗器を取り払った場合に、圧電素子を動かしても叩いても上記の結果に変化ありません。 」というのが気になります。圧電素子は本当にちゃんとつながってますか?テスターでaruduino基板のコネクタのところと圧電素子の銅線に導通があるかどうか確認したほうがいいと思います。

とりあえず下のようにknock出力に続いて読み取り値をシリアル出力すればどのようなアナログ入力値が得られているかわかります。

aruduino

1Serial.println("Knock!"); 2Serial.println(sensorReading);

thresholdを1にしたらどうなりますか?
もしこれで何か出るなら、だんだん増やしていけばどこか適切な値に行きつくでしょう。

投稿2018/06/05 03:10

a_saitoh

総合スコア702

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

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

mi-yulkuri

2019/11/18 07:22

返答が遅くなり申し訳ありません。 解決しましたありがとうございます!
guest

0

A0をanarogReadで計測してシリアル通信か何かでチェックしてみてください、叩いたときにでた一番大きな値よりも少し小さめの値をthresholdに入れてみてはどうですか?

投稿2018/06/02 01:17

UDON3

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問