0

我已经被这个问题困扰了好几天了,似乎找不到解决办法。问题是,在我向移位寄存器发送命令后,它不再接受更多命令。我正在使用带有 74HC595 移位寄存器的 arduino UNO。问题出现在 manualOverWrite 函数中。

uint8_t RFIDPinValues[] = { B00000101 };
sr.setAll(RFIDPinValues);
delay(4000);
uint8_t RFIDOffPinValues[] = { B00001000 };
sr.setAll(RFIDOffPinValues); 

当我运行这段代码时,它会打开一个继电器(引脚 0)并停止。除了移位寄存器之外,我所有的 arduino 代码都可以正常工作。

#include <SPI.h>
#include <ShiftRegister74HC595.h>

byte readCard[4];
String MasterTag0 = "*******"; 
String MasterTag1 = "********";
String tagID = "";

//declare arduino pins
int overWrite = 0;


// Create instances
const int numberOfShiftRegisters = 1; // number of shift registers attached in series
int serialDataPin = 11; 
int clockPin = 12; 
int latchPin = 8; 
ShiftRegister74HC595<numberOfShiftRegisters> sr(serialDataPin, clockPin, latchPin);

void setup() {
  Serial.begin(115200);
  Serial.println("Startup");

  // Initiating inputs
  pinMode(overWriteButton, INPUT);
   
  // set base state
  sr.setAllLow();
  
  uint8_t startValues[] = { B00001000 };
  sr.setAll(startValues);
}

void loop() {
   
  //ez to use vars
  overWrite = digitalRead(overWriteButton);
  
  manualOverWrite();
}


void manualOverWrite() {
  if(overWrite == HIGH) {
    uint8_t turnOnPinValues[] = { B00000101 };
    sr.setAll(turnOnPinValues);
    delay(5000);
    uint8_t turnOffPinValues[] = { B00001000 };
    sr.setAll(turnOffPinValues);
  }
  else {
    uint8_t turnOn2PinValues[] = { B00001000 };
    sr.setAll(turnOn2PinValues);
  }
}

我为混乱道歉 https://mega.nz/file/NEYFiAAA#Rc4QUpv6cnL-_1NJJrjKe-IaInH_33wGJlHpGlVkySM

4

0 回答 0