teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

サンプルコード再修正

2016/05/11 01:31

投稿

tkanda
tkanda

スコア2425

answer CHANGED
@@ -25,14 +25,14 @@
25
25
  }
26
26
  }
27
27
  if (button_is_high) {
28
- if (millis() - time_zero > MILLISECONDS_TO_WAWIT) {
28
+ if (millis() - time_zero > MILLISECONDS_TO_WAIT) {
29
29
  button_is_high = false;
30
30
  }
31
31
  }
32
32
  }
33
33
  ```
34
34
 
35
- delay() は一般的に、外部デバイスへの出力ピンにシグナルした後で入力ピンからシグナルを検出する時に、デバイス側の制約によって数ミリ秒経過後でないとシグナルが安定しない、というような場合に使用されます。delay() の使い方については公式ドキュメントにも以下の注意書きがあります。
35
+ delay() は一般的に、外部デバイスへの出力ピンにシグナルした後で入力ピンからシグナルを検出する時に、デバイス側の制約によって数ミリ秒経過後でないと入力シグナルが安定しないのでほんの少し WAIT させる、というような場合に使用されます。delay() の使い方については公式ドキュメントにも以下の注意書きがあります。
36
36
 
37
37
  > delay()を使えば簡単にLEDをチカチカさせることができます。また、スイッチのバウンス対策のためにdelay()を使っているスケッチもよく見られます。ただし、こうしたdelay()の使い方には不利な点があります。delay()の実行中は、計算やピン操作といった他の処理が実質的に止まってしまうのです。delay()の代わりにmillis()を使って時間を測り、タイミングをコントロールするほうがいいでしょう。熟練したプログラマーは、よほどスケッチが簡単になる場合を除き、10ms以上のイベントのコントロールにdelay()を使うことは避けるでしょう。
38
38
 

1

サンプルコード修正

2016/05/11 01:31

投稿

tkanda
tkanda

スコア2425

answer CHANGED
@@ -14,14 +14,14 @@
14
14
  void loop() {
15
15
  if (!button_is_high) {
16
16
  if (digitalRead(BUTTON) == HIGH) {
17
+ button_is_high = true;
18
+ time_zero = millis();
17
19
  indata = analogRead(0);
18
20
  stress = indata * 5;
19
21
  sno++; //データ数を確認しやすくするため,各データにシリアル番号を付ける
20
22
  Serial.print(sno);
21
23
  Serial.print(",");
22
24
  Serial.println(indata);
23
- button_is_high = true;
24
- time_zero = millis();
25
25
  }
26
26
  }
27
27
  if (button_is_high) {