用ARDUINO 框架ESP32控制 74LVC595APW 输出

用ARDUINO框架(Arduino core for the ESP32),esp32芯片, 控制74LVC595APW的Q5脚输出高电平,用了shiftOut(DS_PIN, SH_CP_PIN, MSBFIRST, data);来传送数据byte data,传送不了; 用SPI来传送,SPI.transfer(data); 74LVC595APW输出电平不稳定,有时 输出高电平,有时输出低电平。 请问解决的方案

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,确保你已正确连接了ESP32和74LVC595APW芯片,并且使用正确的引脚。

    然后,我们可以尝试使用SPI库和位操作来控制74LVC595APW芯片的输出。

    以下是一个示例代码,用于控制Q5引脚输出高电平:

    #include <SPI.h>
    
    // 定义引脚
    #define LATCH_PIN     5  // 74LVC595APW的RCK引脚连接到ESP32的引脚5
    #define DATA_PIN      4  // 74LVC595APW的SER引脚连接到ESP32的引脚4
    #define CLOCK_PIN     7  // 74LVC595APW的SRCLK引脚连接到ESP32的引脚7
    
    // 定义74LVC595APW的数据寄存器
    byte data = 0b00100000;  // 控制Q5引脚输出高电平
    
    void setup() {
      // 初始化SPI总线
      SPI.begin();
    
      // 设置引脚模式
      pinMode(LATCH_PIN, OUTPUT);
      pinMode(DATA_PIN, OUTPUT);
      pinMode(CLOCK_PIN, OUTPUT);
    }
    
    void loop() {
      // 开始传输数据
      digitalWrite(LATCH_PIN, LOW);
    
      // 通过SPI传输数据
      SPI.transfer(data);
    
      // 结束传输
      digitalWrite(LATCH_PIN, HIGH);
    
      delay(1000);  // 延迟一秒钟,保持高电平输出
    }
    

    在上述代码中,我们使用了SPI库来控制74LVC595APW芯片。首先,我们通过SPI.begin()函数初始化SPI总线。然后,我们设置了引脚模式,将连接到74LVC595APW芯片的引脚设置为输出模式。在主循环中,我们通过SPI.transfer()函数将数据传输到74LVC595APW芯片。最后,我们使用数字引脚设置74LVC595APW芯片的片选引脚(RCK)为高电平以保存数据。

    请注意,具体的引脚连接可能会因你的硬件设置而异,请根据你的实际连接情况进行修改。

    希望这个解决方案对你有所帮助。如果你有任何其他问题,请随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^