現在、私はArduinoからパルスを読み込み、結果がHighかLowかをチェックするプロジェクトに取り組んでいます。arduinoでのパルス生成と読み出し
私はアルドゥイーノからの高/低出力を生成するために、自分自身のコードを書かなければならなかった:
//Pulse Generator Arduino Code
int potPin = 2; // select the input pin for the knob
int outputPin = 13; // select the pin for the output
float val = 0; // variable to store the value coming from the sensor
void setup() {
pinMode(outputPin, OUTPUT); // declare the outputPin as an OUTPUT
Serial.begin(9600);
}
void loop() {
val = analogRead(potPin); // read the value from the k
val = val/1024;
digitalWrite(outputPin, HIGH); // sets the output HIGH
delay(val*1000);
digitalWrite(outputPin, LOW); // sets the output LOW
delay(val*1000);
}
それは、パルス間の遅延時間を変更するには、ノブを使用しています。
現在、2つのケーブルを「outputPin」から数えているポートに接続するだけで、別のArduino(これを「カウントArduino」と呼ぶことができます)で高低データを読み取ろうとしています。 Arduino。
私はdigitalReadを使用して、遅延なしでポートを読み取っています。
//Count Arduino Code
int sensorPin = 22;
int sensorState = 0;
void setup() {
pinMode(sensorPin, INPUT);
Serial.begin(9600);
}
void loop(){
sensorState = digitalRead(sensorPin);
Serial.println(sensorState);
}
最初に1秒ごとにパルスを試しましたが、結果は1トンの高さのスパムでした。常に3ローと3ハイと繰り返し。それは1秒ごとに1に近いものではなく、1ミリ秒ごとに1に似ています。
私が間違っていることを理解できません。タイミングの問題か、これらの変更を検出する良い方法がありますか? 2 ArduinosのGNDが接続されていない場合
最後の文章の質問:「これらの変更を検出するより良い方法はありますか?」はい、あなたが行っているようにレベルを報告するのではなく、変更を検出することによって、あなたは多くの手がかりを与えていません。センサ状態の連続的なシリアル出力は、入力状態の知覚されるタイミングを壊すでしょう。 –
入力がローになったときに「0」を、ハイになったときに「1」を送信すると、9600ボーで約1kHzまでの入力パルスをトラッキングできるはずです。 –
私は毎秒約10パルスを追跡する必要があります。だから、10ヘルツはすでに素晴らしいだろう。割り込みベースのソリューションはArduinoのオプションですか?ピンがハイからローに変化すると割り込みが発生しますか? –