我正在做一个需要 9 个 7 段显示器的项目。我为此使用了 9 个移位寄存器。
我用 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 具有更高的时钟频率。所以我尝试添加延迟。但它没有用。