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

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

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

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

Q&A

解決済

2回答

816閲覧

Arduino mills関数

yyybbbyy

総合スコア13

Arduino

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

0グッド

0クリップ

投稿2022/02/01 05:17

Arduino初心者です。

Arduinoにて圧力センサとブザーを用いて、圧力が10秒以上感じられなかったら10秒後からはずっとブザーを鳴らし続けるというものを作りたいです。10秒以内に圧力が感じられたら再び秒数は0からカウントしなおす、ブザーが鳴った後に圧力が感じられたらブザーを止め、再びカウントするというものです。

以下自分なりに作成したコードです。
unsigned long time;
void setup()
{
}

void loop()
{
while (analogRead(0) == 0 && millis()-time>10000){
delay(1000);
tone(8, 1000);
delay(100);
noTone(8);
delay(100);
tone(8, 1000);
delay(100);
noTone(8);
delay(100);
break;
}
}

恐らくwhile文でのmills関数の使い方がよくないと思うのですが、圧力=0が10秒間続いたら、の表現方法がよくわかりません。
ご教授いただけると幸いです。

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

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

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

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

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

guest

回答2

0

time になにも代入されてませんね。
まあ、初期値として0が入ってるので、これでいいっちゃーいいんですが

投稿2022/02/01 07:34

y_waiwai

総合スコア88163

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

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

0

ベストアンサー

  • 「圧力が10秒以上感じられなかった」 → 「現在時刻が最後に圧力を感じた時刻から10秒以上経過している」
  • while文は不要です。
void loop(){ if(圧力を感じた){ 最後に圧力を感じた時刻 = 現在時刻 } if(現在時刻が最後に圧力を感じた時刻から10秒以上経過している){ 音を鳴らす } }

投稿2022/02/01 05:54

ozwk

総合スコア13553

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

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

yyybbbyy

2022/02/01 08:41

ご回答ありがとうございました。いただいた形とは少し違う方法ですが解決することができました。誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問