Arduino program

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

jankrizan
Nový člen
Nový člen
Príspevky: 53
Dátum registrácie: 04 Mar 2011, 00:00
Vek: 64

Re: Arduino program

Príspevok od používateľa jankrizan » 23 Feb 2024, 17:30

Zdravím chlapi. Zaujímavá konverzácia, ale je škoda, že sa nemôžem pripojiť s konverzáciou. Naozaj vám úprimne závidím (a myslim to naozaj vážne), vaše vedomosti, ale musíme si naliať čistého vína. Pri mojich 65 krížikoch už také čosi do hlavy nedám , zabudnem už zajtra o čom bola reč, tým pádom sa utiekam k praktickej časti problému a to, aby mi to fungovalo. Totižto, potrebujem to dostať do Mega8. Mám aj iný kod

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.
ale ten nedám so Mega8 (nepustí ma ArduinoIDE). IDE mám aj na Mega8 aj 88, aj mi to pri iných kodoch funguje, ale tento nechce.

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);
čim som dosiahol cieľ a teraz môžem špekulovať so zjednodušením písania programu a vymýšľaním ,ďalšich alternatív.
Ďakujem za nápady, prakticky ma naviedli na túto cestu. Želám vám veľa šťastia v ďalšej činnosti.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok