#include <SevSeg.h>
SevSeg sevseg;
void setup()
{
byte numDigits = 4; // 数码管位数
byte digitPins[] = {2, 3, 4, 5}; //数码管公共极连接Arduino的引脚
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};// 数码管a,b,c,d,e,f,g,dp对应引脚
byte hardwareConfig = COMMON_ANODE; // 使用的是共阳极数码管
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins);//添加参数
}
void loop() {
for(int i=-9;i<0;i++){ //显示-9到-1
sevseg.setNumber(i);
for(int j=0;j<32000;j++){
sevseg.refreshDisplay(); // 重新运行刷新数码管显示
}
}
for(int i=-9;i<0;i++){ //显示-0.9到-0.1
sevseg.setNumber(i,1);
for(int j=0;j<32000;j++){
sevseg.refreshDisplay();
}
}
for(int i=0;i<=20;i++){
if(isprime(i)){ //闪烁显示质数
for(int k=0;k<3;k++){ //让他循环三次,两暗亮
sevseg.setNumber(i);
for(int j=0;j<32000;j++){
sevseg.refreshDisplay();
}
sevseg.blank(); //让他暗掉一下
for(int j=0;j<32000;j++){
sevseg.refreshDisplay();
}
}
}
else{ //若不是质数正常显示
sevseg.setNumber(i);
for(int j=0;j<32000;j++){
sevseg.refreshDisplay();
}
}
}
sevseg.refreshDisplay();
}
bool isprime(int n){ //判断n是否为质数
int prime[]={2,3,5,7,11,13,17,19};
bool a = false; //设置a的初始值为false
for(int i=0;i<8;i++){ //看n是不是和数组里的任意一个数相等,如果相等a变成true
if(prime[i]==n){
a = true;
break;
}
}
return a;
}