目前我正在開發一個項目,我必須從Arduino中讀出脈衝並檢查結果是高還是低。arduino上的脈衝生成和讀出
我不得不寫我自己的代碼來生成從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秒嘗試一次脈衝,但結果是一噸的低點和高點的垃圾郵件。總是3低和3高並重復。它甚至不是每1秒接近一個,而是更接近1毫秒。
我不知道我做錯了什麼。它是計時問題還是有更好的方法來檢測這些變化?
最後一句話中的問題:「有沒有更好的方法來檢測這些變化?」是的,儘管你沒有提供很多線索,但是通過檢測變化,不報告你所做的水平。傳感器狀態的連續串行輸出將破壞感知輸入狀態的時間。 –
如果您在輸入變爲低電平時發送「0」,並在發送爲高電平時發送「1」,在9600波特時,您應該能夠跟蹤最高約1 kHz的輸入脈衝。 –
我必須每秒追蹤10個脈衝。所以10赫茲已經很棒了。基於中斷的解決方案是Arduino的一個選項。如果引腳由高變低,我能得到中斷嗎? –