Kód: Vybrať všetko
/*
* Interfacing Arduino with common anode 7-segment display.
* Print ADC values on 4-digit 7-segment display.
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*/
// potentiometer output pin definition
#define POT A0
#define av A1
// segment pin definitions
#define SegA 12
#define SegB 11
#define SegC 10
#define SegD 9
#define SegE 8
#define SegF 7
#define SegG 6
// common pins of the four digits definitions
#define Dig1 5
#define Dig2 4
#define Dig3 3
#define Dig4 2
#define Dig5 0
#define Dig6 A2
#define Dig7 A3
#define Dig8 A4
#define Dig9 A5
// variable declarations
byte current_digit;
int adc_value;
int t;
int v=100;
void setup()
{
pinMode(SegA, OUTPUT);
pinMode(SegB, OUTPUT);
pinMode(SegC, OUTPUT);
pinMode(SegD, OUTPUT);
pinMode(SegE, OUTPUT);
pinMode(SegF, OUTPUT);
pinMode(SegG, OUTPUT);
pinMode(Dig1, OUTPUT);
pinMode(Dig2, OUTPUT);
pinMode(Dig3, OUTPUT);
pinMode(Dig4, OUTPUT);
pinMode(Dig5, OUTPUT);
pinMode(POT, INPUT);
pinMode(av, INPUT_PULLUP);
pinMode(Dig6, OUTPUT);
pinMode(Dig7, OUTPUT);
pinMode(Dig8, OUTPUT);
pinMode(Dig9, OUTPUT);
disp_off(); // turn off the display
// Timer1 module overflow interrupt configuration
TCCR1A = 1;
TCCR1B = 11; // enable Timer1 with prescaler = 1 ( 16 ticks each 1 µs)
TCNT1 = 0; // set Timer1 preload value to 0 (reset)
TIMSK1 = 1; // enable Timer1 overflow interrupt
}
ISR(TIMER1_OVF_vect) // Timer1 interrupt service routine (ISR)
{
disp_off(); // turn off the display
switch (current_digit)
{
case 1:
if (adc_value >= 100)
{
disp(adc_value / 100); // prepare to display digit 1 (most left)
digitalWrite(Dig2, HIGH); // turn on digit 1
}
break;
case 2:
{
disp( (adc_value / 10) % 10); // prepare to display digit 2
digitalWrite(Dig3, HIGH); // turn on digit 2
digitalWrite(Dig5, LOW);
}
break;
case 3:
disp( (adc_value / 1) % 10); // prepare to display digit 3
digitalWrite(Dig4, HIGH);
break;
case 4:
if(t>v)
{
disp(10);
}
else
if(t<v)
{
disp(11);
}
digitalWrite(Dig1, HIGH); // turn on digit 4
break;
case 6:
disp(12);
digitalWrite(Dig6, HIGH);
break;
case 7:
disp(13);
digitalWrite(Dig7, HIGH);
break;
case 8:
disp(14);
digitalWrite(Dig8, HIGH);
break;
case 9:
disp(15);
digitalWrite(Dig9, HIGH);
break;
}
current_digit = (current_digit % 9)+1 ;
}
// main loop
void loop()
{
t = analogRead(av);
adc_value = analogRead(POT)*200.00/1023.00;
delay(200);
}
void disp(byte number)
{
switch (number)
{
case 0: // print 0
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, HIGH);
break;
case 1: // print 1
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
break;
case 2: // print 2
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
break;
case 3: // print 3
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
break;
case 4: // print 4
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 5: // print 5
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 6: // print 6
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 7: // print 7
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
break;
case 8: // print 8
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 9: // print 9
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 10 : //print V
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, HIGH);
break;
case 11 : // print A
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 12 : // print V
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, HIGH);
break;
case 13 : // print _
digitalWrite(SegA, HIGH);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
break;
case 14 : // print S
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 15 : // print //t
digitalWrite(SegA, HIGH);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
}
}
void disp_off()
{
digitalWrite(Dig1, LOW);
digitalWrite(Dig2, LOW);
digitalWrite(Dig3, LOW);
digitalWrite(Dig4, LOW);
digitalWrite(Dig5, HIGH);
digitalWrite(Dig6, LOW);
digitalWrite(Dig7, LOW);
digitalWrite(Dig8, LOW);
digitalWrite(Dig9, LOW);
}
// end of code.
Takže k môjmu kodu- doplnil som ho takto
Kód: Vybrať všetko
for (i=0 ; i<5; i++)
{
mask (OneDigit, a, b, c, d, e, f, g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, HIGH);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (TenDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, HIGH);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (HundredDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, LOW);
if (HundredDigit >= 1)
digitalWrite(gnd2, HIGH);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (FigureDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, HIGH);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (FiveDigit, a, b, c, d, e, f, g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, HIGH);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (SixDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, HIGH);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (SevenDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, HIGH);
digitalWrite(gnd9, LOW);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
mask (EightDigit, a, b, c, d, e, f ,g);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, HIGH);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, HIGH);
delay(1);
digitalWrite(gnd3, LOW);
digitalWrite(gnd2, LOW);
digitalWrite(gnd1, LOW);
digitalWrite(gnd4, LOW);
digitalWrite(gnd5, LOW);
digitalWrite(gnd6, LOW);
digitalWrite(gnd7, LOW);
digitalWrite(gnd8, LOW);
digitalWrite(gnd9, LOW);
delay (1);
Ďakujem za nápady, prakticky ma naviedli na túto cestu. Želám vám veľa šťastia v ďalšej činnosti.