2017-08-26 42 views
1

我正在一個項目中,我需要9個7段顯示器。我爲此使用了9個移位寄存器。無法更新與NodeMCU的移位寄存器

我用Arduino Nano測試了移位寄存器,並且一切正常。然後,我複製/編輯了代碼,用於NodeMCU(ESP8266 wifi板),出於某種原因,寫入移位寄存器的功能似乎被破壞。

這是現在的代碼:

void writeBytes(uint8_t bytesToWrite[]){ 
    Serial.println("test!!!"); 
    //Run through the 9 bytes in bytes to write. 
    for(int q = 0; q < 9; q++) { 
    //Loop through the 8 bits. 
    for(int i =0; i < 8; i++) { 
     //Check if the msb = 1 
     if(0x80 & bytesToWrite[q]) { 
     digitalWrite(dataPin, HIGH); 
     delay(delayTime); 
     digitalWrite(clockPin, HIGH); 
     delay(delayTime); 
     digitalWrite(clockPin, LOW); 
     delay(delayTime); 
     digitalWrite(dataPin, LOW); 
     delay(delayTime); 
     } else { 
     digitalWrite(clockPin, HIGH); 
     delay(delayTime); 
     digitalWrite(clockPin, LOW); 
     delay(delayTime); 
     } 
     //Shift all the bits one up. 
     bytesToWrite[q] = bytesToWrite[q] << 1; 
    } 
    } 
    //Turn on the out pin, so it will output. 
    digitalWrite(outPin, HIGH); 
    delay(delayTime);; 
    digitalWrite(outPin, LOW); 
    delay(delayTime); 
} 

如果我用正確的引腳和檢查,如果如果這些引腳實際上變成我已經確認。我也檢查了函數是否會被執行,並且會傳遞正確的變量,並且它會被執行。

這個功能同樣適用於Arduino Nano。但它不適用於NodeMCU。 NodeMCU具有更高的時鐘頻率。所以我試圖加入延遲。但它沒有奏效。

+0

當您運行代碼時,您在節點mcu上收到的輸出是什麼? – Billa

+0

只是:測試!!!!!該程序編譯並運行良好。 – oedze

+0

接受和upvote答案,如果你認爲它應該有一個在將來有類似的疑問 – Billa

回答

0

NodeMCU上的引腳號與數據表中的引腳號不匹配。 正確的引腳編號可以在這裏找到: https://github.com/esp8266/Arduino/issues/584

+0

請編輯你的答案,這聽起來像一個正確的答案。如果它解決了最初的問題,也將其標記爲答案。 –

0

錯誤可能是因爲:

  1. 要麼有一個錯誤,當你複製的代碼。
  2. 或者您沒有正確粘貼。
  3. 某些編輯也可能導致相同的效果。
  4. 這可能是因爲與硬件,接觸不良等故障

(你應該避免使用延遲如果可能的,因爲開發商使用它們會給開銷說,我覺得你應該好好照顧它)。

+0

謝謝你的反應。 1和2:我比較了每一行,它們是相同的。但是,如果是這樣的話,我應該能夠將代碼複製回來。它應該在arduino上工作。 3:我沒有做任何修改。 4:不,情況並非如此,硬件在將它連接到arduino nano時正常工作。 – oedze

+0

可能是接口問題,通常在gsm模塊中可以看到,特別是當我們使用低成本硬件時。 – Billa