ESP32引脚 LED
21 | SMG_245_A |
19 | SMG_245_B |
18 | SMG_245_C |
5 | SMG_245_D |
13 | SMG_245_E |
16 | SMG_245_F |
4 | SMG_245_G |
2 | SMG_245_DP |
27 | SMG_138_A |
14 | SMG_138_B |
12 | SMG_138_C |
其中27,14,12引脚控制要显示的数码管
21~2引脚是要控制显示的数字(1~9)
#include <Arduino.h>
#define BITS 10
#define PWM_PIN 4
//要先控制显示的数码管
int LSA = 14;
int LSB = 27;
int LSC = 26;
byte shumaguanPins[8] = {21, 19, 18, 5, 13, 4, 2, 12};//数字引脚
//数字字典
unsigned char smgduan[10][8] =
{
{1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 0, 0, 0, 0, 0}, //0 1
{1, 1, 0, 1, 1, 0, 1, 0}, {1, 1, 1, 1, 0, 0, 1, 0}, //2 3
{0, 1, 1, 0, 0, 1, 1, 0}, {1, 0, 1, 1, 0, 1, 1, 0}, //4 5
{1, 0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 0, 0, 0, 0, 0}, //6 7
{1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 0, 1, 1, 1} //8 9
};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LSA, OUTPUT);
pinMode(LSB, OUTPUT);
pinMode(LSC, OUTPUT);
ledcSetup(0, 5000, BITS);// 给14引脚设置通道,分辨率,占空比
ledcSetup(1, 5000, BITS);// 给27引脚设置通道,分辨率,占空比
ledcSetup(2, 5000, BITS);// 给26引脚设置通道,分辨率,占空比
ledcAttachPin(LSA, 0);// 给14添加通道
ledcAttachPin(LSB, 1);// 给27添加通道
ledcAttachPin(LSC, 2);// 给26添加通道
for(int i = 0; i< 8; i++)
{
pinMode(shumaguanPins[i], OUTPUT);
}
}
void loop() {
unsigned char i, j;
for(i = 0; i < 8; i++)
{
switch(i)
{
case(0):
digitalWrite(LSA, 0); digitalWrite(LSB, 0); digitalWrite(LSC, 0); break; //显示第0位
case(1):
digitalWrite(LSA, 1); digitalWrite(LSB, 0); digitalWrite(LSC, 0); break; //显示第1位
case(2):
digitalWrite(LSA, 0); digitalWrite(LSB, 1); digitalWrite(LSC, 0); break; //显示第2位
case(3):
digitalWrite(LSA, 1); digitalWrite(LSB, 1); digitalWrite(LSC, 0); break; //显示第3位
case(4):
digitalWrite(LSA, 0); digitalWrite(LSB, 0); digitalWrite(LSC, 1); break; //显示第4位
case(5):
digitalWrite(LSA, 1); digitalWrite(LSB, 0); digitalWrite(LSC, 1); break; //显示第5位
case(6):
digitalWrite(LSA, 0); digitalWrite(LSB, 1); digitalWrite(LSC, 1); break; //显示第6位
case(7):
digitalWrite(LSA, 1); digitalWrite(LSB, 1); digitalWrite(LSC, 1); break; break; //显示第7位
}
for(j = 0; j< 8; j++)
{
digitalWrite(shumaguanPins[j], smgduan[i][j]);
}
delay(1000); //间隔一段时间扫描
for(j = 0; j< 8; j++) //消隐
{
digitalWrite(shumaguanPins[j], 0);
}
}
}