我正在开展一个项目,我需要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具有更高的时钟频率。所以我尝试添加延迟。但它没有工作。
答案 0 :(得分:0)
错误可能是因为:
(如果可能的话,你应该避免使用延迟,因为开发人员说使用它们会产生开销,我认为你应该照顾它。)
答案 1 :(得分:0)
NodeMCU上的引脚编号与数据表中的引脚编号不匹配。 可在此处找到正确的引脚编号: https://github.com/esp8266/Arduino/issues/584