我是相當新的編碼,並且我一直在努力,只要按下連接到GPIO引腳上我的RasPi一個按鈕,寫東西寫一個佔位符的文本文檔:與wiringPi
//Write date function//
void record() {
ofstream myFile;
myFile.open("report.txt");
myFile << "Input at SPAM \n";
myFile.close();
}
//myRead function//
void myRead(int i){
if((digitalRead(4) == HIGH) && (i<5)) {
record();
digitalWrite(14, HIGH);
delay(500);
digitalWrite(14, LOW);
++i;
delay(500);
myRead(i);
}
else{
if((digitalRead(4) != HIGH) && (i<5)){
myRead(i);
}
}
}
int main() {
wiringPiSetup();
pinMode(12, OUTPUT);
pinMode(14, OUTPUT);
pinMode(4, INPUT);
digitalWrite(12, HIGH);
digitalWrite(14, LOW);
myRead(1);
digitalWrite(14, HIGH);
delay(5000);
digitalWrite(14, LOW);
return 0;
}
該代碼編譯沒有任何抱怨,但如果我運行在終端沒有sudo
命令,我得到一個「分段錯誤」錯誤。
當我用sudo
命令運行它時,程序啓動並幾乎立即結束。
參考:
- 銷12對試驗板的分壓器提供電力。
- 引腳4應接受來自此分頻器的輸入。
- 引腳14使一個LED光只要存在對銷的輸入4.
每當運行程序和非常快速地壓在分壓器的按鈕時,如果我按住按鈕LED將點亮。
我怎樣才能讓它正常運行,而不是一開始就停止運行?
'myRead'可能遞歸到您需要按下按鈕的時間。通過調試信息(在編譯和鏈接時添加'-g'標誌),然後在調試器中運行以找出崩潰發生的時間和位置,並查看函數調用堆棧是否充滿了調用' myRead'。 –
謝謝,我會嘗試。我的代碼在源文件中縮進,但我不確定這裏的格式。現在編輯縮進,但我一直在教自己C++不到一個月,所以我得到了我的代碼非常混亂,難以閱讀。 – Merk
這似乎是問題所在。我得到的輸出是:「程序接收到的信號SIGSEGV,分段錯誤 0x00010b6c in myRead(i =)in inputReport.cpp:18 18 void myRead(int i){」 。我不確定該怎麼做。關於如何讓系統每隔幾秒檢查一次輸入的建議? –
Merk