// 引入必要的库
#include <SevSeg.h>
// 数码管的引脚连接
#define DIGIT_1 2
#define DIGIT_2 3
#define DIGIT_3 4
#define DIGIT_4 5
#define SEGMENT_A 6
#define SEGMENT_B 7
#define SEGMENT_C 8
#define SEGMENT_D 9
#define SEGMENT_E 10
#define SEGMENT_F 11
#define SEGMENT_G 12
#define SEGMENT_DP 13
// 创建数码管对象
SevSeg sevseg;
void setup() {
// 设置数码管引脚
byte numDigits = 4;
byte digitPins[] = {DIGIT_1, DIGIT_2, DIGIT_3, DIGIT_4};
byte segmentPins[] = {SEGMENT_A, SEGMENT_B, SEGMENT_C, SEGMENT_D, SEGMENT_E, SEGMENT_F, SEGMENT_G, SEGMENT_DP};
byte hardwareConfig = COMMON_ANODE; //四位共阴极七段数码管
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins);
}
void loop() {
//显示-9~-1
for(int j=-9;j<=-1;j=j+1){
for (int i=1;i<=500;i++){
sevseg.setNumber(j);
sevseg.refreshDisplay();
delay(1);
sevseg.blank();
}
}
//显示-0.9~-0.1
for(float j=-0.9;j<0;j=j+0.1){
for (int i=1;i<=800;i++){
sevseg.setNumberF(j,1);//一位小数
sevseg.refreshDisplay();
delay(1);
sevseg.blank();
}
}
//显示0~20
for(int j=0;j<=20;j++){
if ( isPrime(j) ){
for (int k=1;k<=3;k++){
for (int i=1;i<=800;i++){
sevseg.setNumber(j);
sevseg.refreshDisplay();
delay(1);
sevseg.blank();
}
delay(500);
}
}
else{
for (int i=1;i<=800;i++){
sevseg.setNumber(j);
sevseg.refreshDisplay();
delay(1);
sevseg.blank();
}
}
}
}
int isPrime(int num) {
// 如果数字小于等于1,则不是质数
if (num <= 1) {
return 0;
}
// 对2进行特殊处理
if (num == 2) {
return 1;
}
// 如果能被2整除,那么不是质数
if (num % 2 == 0) {
return 0;
}
// 循环检查是否能被奇数整除
for (int i = 3; i * i <= num; i += 2) {
if (num % i == 0) {
return 0;
}
}
// 如果都不能整除,则是质数
return 1;
}