私は自分の遅延機能を作ろうとしています。簡単にmydelay
関数はsecs
秒ごとにtoggled
関数を呼び出しています。コードはうまく書かれていない、私は知っている(これは最初のバージョンです)。しかし、私はそれが正しく動作するようにしようとしています。それから私はそれをリファクタリングします。しかし、予期せぬバグがあります。初めてx
のループが正常に機能しています。 「私は中にいる」という文字を1秒間印字してから、自分が望む動作である「Im ending mydelay」を印刷します。しかし、ループを終了した後にx
。 2回目にループします。それはmydelay
関数に入ります(これは正常です)。しかし、それはまったく「私は中にいる」という印をつけていません。それはちょうど良くない "Im ending mydelay"を印刷します。Arduino作成遅延機能
#include <Arduino.h>
int led = 7;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
x();
Serial.println("Im ending main loop");
}
void x() {
for (int i = 0; i <= 10; i++) {
mydelay(led, 0, 1);
mydelay(led, 1, 1);
}
}
void mydelay(int pin, int hol, int secs) {
int starttime = millis();
while ((millis() - starttime) <= (secs * 1000)) Serial.println("I am in while");
toggled(pin, hol);
Serial.println("Im ending mydelay");
}
void toggled(int pin, int hol) {
digitalWrite(led, hol);
}
が、私は問題はArduinoのプログラムを開始しますので、ミリ秒を返し続けます**ミリ秒**、とあるかもしれないと思い、私は最終的にミリ秒-STARTTIMEは秒×1000 – Josh