材料介绍:一块arduino,若干杜邦线,一块数码管,一块74HC595芯片,
这是该芯片图片(图片来源于网络)
74HC595 简单说来就是具有8位移位寄存器和一个存储器,通过该芯片可以实现3控8。简单来说就是通过3个数字引脚控制8个其它引脚。比如说用该芯片和三个arduino数字引脚来控制一个8位共阴数码管。
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
符号 | 引脚 | 描述 |
---|---|---|
Q0–Q7 | 第15脚, 第1-7脚 | 8位并行数据输出 |
GND | 第8脚 | 地 |
Q7’ | 第9脚 | 串行数据输出 |
/MR | 第10脚 | 主复位(低电平有效) |
SH_CP | 第11脚 | 数据输入时钟线 |
ST_CP | 第12脚 | 输出存储器锁存时钟线 |
/OE | 第13脚 | 输出有效(低电平有效) |
DS | 第14脚 | 串行数据输入 |
VCC | 第16脚 | 电源 |
引脚图如图(图片来源于百度百科)
我的数码管是共阴的我在做的时候这些数字是试出来的所有复制代码可能会有不同。
中间用到一个shiftOut函数
shiftOut (uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)
名为:位移输出函数
输入value数据后Arduino会自动把数据移动分配到8个并行输出端. 其中dataPin为连接DS的引脚号, clockPin为连接SH_CP的引脚号, bitOrder为设置数据位移顺序, 分别为高位先入MSBFIRST或者低位先入LSBFIRST.
具体实现代码如下
int latchPin =4;
int clockPin = 3;
int dataPin=2;
int arr[10]={126,72,188,182,210,230,238,50,254,242};
void setup() {
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
}
void loop(){
for(int n=0;n<10;n++){
Serial.begin(9600);
digitalWrite(latchPin,LOW);//准备接收数据
shiftOut(dataPin,clockPin,LSBFIRST,arr[n]);
digitalWrite(latchPin,HIGH);//恢复高电平,传递数
delay(1000);
}
//0 126
//1 72
//2 188
//3 182
//4 210
//5 230
//6 238
//7 50
//8 254
//9 242
}
已经实践过 具体显示数字从0-9
其中DS接入数字引脚2
STCP接入数字引脚 3
SHCP接入数字引脚4
来源:https://blog.51cto.com/u_14972704/3018132
二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 。
ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。
在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。
TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速与方向,输入电压在3V~12V,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。
Arduino-ESP32项目提供的Preferences库是一个专为ESP32设计的非易失性存储解决方案,它替代了传统的Arduino EEPROM库,提供了更强大、更可靠的数据存储功能。
74HC595是一个8位串行输入、并行输出的位移缓存器。并行输出为三态输出。
从一秒一秒的跳动齿条,到能“炫技”的飞返计时,再到用乐高拼出的“七段数码管”
在Arduino中,通过串行端口接收数字通常涉及使用Serial.read()、Serial.readString()、Serial.parseInt()等方法。
要生成随机数,可以使用Arduino随机数函数random()。
本文收集整理在Arduino环境下字符串的相关用法,供参考。