完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嘿!我正在尝试使用 74HC165 在我的 esp8266 上获得更多的输入引脚。
我已经根据数据表连接了所有东西,但在提取值时我仍然得到全零。 我使用 10k 电阻将 74HC165 上的所有 8 个“D”引脚连接到 GND。然后将其中一个引脚连接到一个按钮,将其拉至 VCC。按下按钮无效 这是我的代码: 代码:全选#include #include byte shift_1; void setup() { Serial.begin(9600); SPI.setClockDivider(SPI_CLOCK_DIV2); SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); SPI.begin(); pinMode(4, OUTPUT); digitalWrite(4, HIGH); } void loop() { digitalWrite(4, LOW); shift_1 = SPI.transfer(0); digitalWrite(4, HIGH); Serial.print(micros()); Serial.print(" Register 1 = "); Serial.println(shift_1, BIN); delay(1000); } |
|
相关推荐
1个回答
|
|
|
您需要将74HC165的输入引脚连接到按钮和VCC之间的电阻而不是GND。这是因为74HC165是一个带有预置输入的平行输入移位寄存器,其工作原理是将电平从输入引脚读入,并在时钟信号的辅助下将它们串行输入到移位寄存器中。因此,如果您将所有输入引脚连接到GND,它们将始终处于低电平状态,即使在按下按钮时也不会更改状态。
您可以使用以下代码进行测试和读取输入状态: #include byte shift_1; void setup() { Serial.begin(9600); SPI.begin(); pinMode(SS, OUTPUT); digitalWrite(SS, HIGH); } void loop() { digitalWrite(SS, LOW); delayMicroseconds(1); shift_1 = SPI.transfer(0); digitalWrite(SS, HIGH); Serial.println(shift_1, BIN); delay(1000); } 这里,您需要设置片选引脚(通常是D8)为输出模式,并将其设置为高电平(这意味着它不与SPI通信)。然后,您可以通过将其设置为低电平来与74HC165通信并读取其状态。从74HC165返回的字节包含所有8个输入引脚的状态,其中1表示按钮已按下,0表示未按下。请注意,如果您想读取多个74HC165以扩展输入,您需要为每个芯片分别设置片选引脚和相应的SPI接口。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
944 浏览 0 评论
1671 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1330 浏览 1 评论
1233 浏览 1 评论
5015 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1250浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2330浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2526浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1051浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:37 , Processed in 0.410370 second(s), Total 40, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3499
