#include <SevSeg.h>
SevSeg sevseg;
byte numDigits = 4;
byte digitPins[] = { 2,3,12,13 };
byte segmentPins[] = { 7,6,5,10,11,8,9,4 };
byte hardwareConfig = COMMON_CATHODE;
int num;
int delaycount = 0;
bool prime(int n)
{
if (n == 0 || n == 1)return 0;
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
return 0;
}
return 1;
}
void setup() {
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins);
num = -9;
while(1)
{
delaycount++;
if(delaycount==5000)
{
delaycount=0;
num++;
}
sevseg.setNumber(num,-1);
sevseg.refreshDisplay();
if(num==0)break;
}
num=-9;
while(1)
{
delaycount++;
if(delaycount==5000)
{
delaycount=0;
num++;
}
sevseg.setNumber(num,1);
sevseg.refreshDisplay();
if(num==0)break;
}
int leds[8] = { 7,6,5,10,11,8,9,4 };
num = 0;
int flag = 1;
while (1)
{
if (prime(num)) {
if (flag == 1)
{
delaycount++;
if (delaycount == 5000)
{
delaycount = 0;
flag = 2;
}
sevseg.setNumber(num, -1);
sevseg.refreshDisplay();
}
if (flag == 2)
{
digitalWrite(13, LOW);
flag = 3;
for (int i = 0; i < 8; i++)
{
digitalWrite(leds[i], 0);
}
delay(500);
}
if (flag == 3)
{
delaycount++;
if (delaycount == 5000)
{
delaycount = 0;
flag = 4;
}
sevseg.setNumber(num, -1);
sevseg.refreshDisplay();
}
if (flag == 4)
{
digitalWrite(13, LOW);
flag = 5;
for (int i = 0; i < 8; i++)
{
digitalWrite(leds[i], 0);
}
delay(500);
}
if (flag == 5)
{
delaycount++;
if (delaycount == 5000)
{
delaycount = 0;
flag = 6;
}
sevseg.setNumber(num, -1);
sevseg.refreshDisplay();
}
if (flag == 6)
{
digitalWrite(13, LOW);
flag = 7;
for (int i = 0; i < 8; i++)
{
digitalWrite(leds[i], 0);
}
delay(500);
}
if (flag == 7)
{
delaycount++;
if (delaycount == 5000)
{
delaycount = 0;
num++;
flag = 1;
}
sevseg.setNumber(num, -1);
sevseg.refreshDisplay();
}
}
else
{
delaycount++;
if (delaycount == 5000)
{
delaycount = 0;
num++;
}
sevseg.setNumber(num, -1);
sevseg.refreshDisplay();
}
if (num == 21) {
break;
}
}
}
void loop() {}