Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: jun - 13 Ağustos 2021, 19:22:23

Başlık: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: jun - 13 Ağustos 2021, 19:22:23
Merhaba arkadaşlar arduino ile 7 segment sayıcı yapıyorum,sürücü olarak cd 4511 kullanıyorum.4 haneli bir sayıyı ayırıp dizi değişkende nasıl tutacağıma dair bir örnek verebilirmisiniz.
Teşekkürler
Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: fide - 13 Ağustos 2021, 20:48:24
Binler = sayi /1000
Yüzler = (sayi mod 1000) /100
Onlar =  (sayi mod 100) /10
Birler = sayi mod 10

Yani sadece matematik işlemi
Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: mustafacan - 14 Ağustos 2021, 07:21:25
Sayı parçalanmış şimdi bunları bir yerlere kayıt ettirmeli lazım olduğundada geri çağırmalı
Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: fide - 14 Ağustos 2021, 10:34:50
int dizi[4];

dizi = {birler, onlar, yüzler, binler};


Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: jun - 15 Ağustos 2021, 11:48:38
Merhaba yardımlarınız için teşekkürler yazılımın loop bölümü aşağıdadır.
3. basamak olan yüzler hanesinde şöyle bir problem var yüzler hanesi 2 olması gerekirken 0, 3 olaması gerekirken 1, 6 olaması gerekirken 4, 7 olaması gerekirken 5, 8 olaması gerekirken 0, 9 olaması gerekirken 1 gösteriyor.

void loop(){
  digitalWrite(mcured, HIGH);
 state1 = digitalRead(artir);
 state2 = digitalRead(azalt);
 state3 = digitalRead(res_et);
 if(state1 == HIGH){
 
        int ekle =0;
        while(state1==1){
        sayi=sayi+1;
          ekle=ekle+1;
          if(ekle==8)
              {
              // z=50;
              z=150;
                }
          //display.printNumber(sayi);
          Binler = sayi /1000;
          Yuzler = (sayi % 1000) /100;
          Onlar =  (sayi % 100) /10;
          Birler = sayi % 10;                             
 
          disp1(Birler);
          disp2(Onlar);
          disp3(Yuzler);
          disp4(Binler);
          delay(z);
            state1 = digitalRead(artir);
                    } 
 }

 if(state2 == HIGH){
 
        int ekle =0;
        while(state2==1){
        sayi=sayi-1;
          ekle=ekle+1;
          if(ekle==8)
              {
              // z=50;
              z=150;
                }
          //display.printNumber(sayi);
          Binler = sayi /1000;
          Yuzler = (sayi % 1000) /100;
          Onlar =  (sayi % 100) /10;
          Birler = sayi % 10;                     
 
          disp1(Birler);
          disp2(Onlar);
          disp3(Yuzler);
          disp4(Binler);
          delay(z);
            state2 = digitalRead(azalt);
                    } 
 }

 if(state3 == HIGH){
 
        sayi=0;       
         
                     
 }
 
 if(sayi==2000){
  sayi=0;
 }



 
          Binler = sayi /1000;
          Yuzler = (sayi % 1000) /100;
          Onlar =  (sayi % 100) /10;
          Birler = sayi % 10        ;                     
 
          disp1(Birler);
          disp2(Onlar);
          disp3(Yuzler);
          disp4(Binler);
 delay(100);//100 ms delay to debounce
 
}

void disp1(int num){
  if(num == 0)//0000
  {
    digitalWrite(x1a, LOW);
    digitalWrite(x1b, LOW);
    digitalWrite(x1c, LOW);
    digitalWrite(x1d, LOW);
  }
  if(num == 1)//0001
  {
    digitalWrite(x1a, HIGH);
    digitalWrite(x1b, LOW);
    digitalWrite(x1c, LOW);
    digitalWrite(x1d, LOW);
  }
  if(num == 2)//0010
  {
    digitalWrite(x1a, LOW);//0
    digitalWrite(x1b, HIGH);//1
    digitalWrite(x1c, LOW);//0
    digitalWrite(x1d, LOW);//0
  }
  if(num == 3)//0011
  {
    digitalWrite(x1a, HIGH);//1
    digitalWrite(x1b, HIGH);//1
    digitalWrite(x1c, LOW);//0
    digitalWrite(x1d, LOW);//0
  }
  if(num == 4)//0100
  {
    digitalWrite(x1a, LOW);//0
    digitalWrite(x1b, LOW);//0
    digitalWrite(x1c, HIGH);//1
    digitalWrite(x1d, LOW);//0
  }
  if(num == 5)//0101
  {
    digitalWrite(x1a, HIGH);//1
    digitalWrite(x1b, LOW);//0
    digitalWrite(x1c, HIGH);//1
    digitalWrite(x1d, LOW);//0
  }
  if(num == 6)//0110
  {
    digitalWrite(x1a, LOW);//0
    digitalWrite(x1b, HIGH);//1
    digitalWrite(x1c, HIGH);//1
    digitalWrite(x1d, LOW);//0
  }
  if(num == 7) //0111
  {
    digitalWrite(x1a, HIGH);//1
    digitalWrite(x1b, HIGH);//1
    digitalWrite(x1c, HIGH);//1
    digitalWrite(x1d, LOW);//0
  }
  if(num == 8) //1000
  {
    digitalWrite(x1a, LOW);//0
    digitalWrite(x1b, LOW);//0
    digitalWrite(x1c, LOW);//0
    digitalWrite(x1d, HIGH);//1
  }
  if(num == 9)//1001
  {
    digitalWrite(x1a, HIGH);//1
    digitalWrite(x1b, LOW);//0
    digitalWrite(x1c, LOW);//0
    digitalWrite(x1d, HIGH);//1
  }
}

void disp2(int num)

  if(num == 0)//0000
  {
    digitalWrite(x2a, LOW);//
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, LOW);//0
  }
  if(num == 1)//0001
  {
    digitalWrite(x2a, HIGH);//1
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, LOW);//0
  }
  if(num == 2)//0010
  {
    digitalWrite(x2a, LOW);//0
    digitalWrite(x2b, HIGH);//1
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, LOW);//0
  }
  if(num == 3)//0011
  {
    digitalWrite(x2a, HIGH);//1
    digitalWrite(x2b, HIGH);//1
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, LOW);//0
  }
  if(num == 4)//0100
  {
    digitalWrite(x2a, LOW);//0
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, HIGH);//1
    digitalWrite(x2d, LOW);//0
  }
  if(num == 5) //0101
  {
    digitalWrite(x2a, HIGH);//1
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, HIGH);//1
    digitalWrite(x2d, LOW);//0
  }
  if(num == 6) //0110
  {
    digitalWrite(x2a, LOW);//0
    digitalWrite(x2b, HIGH);//1
    digitalWrite(x2c, HIGH);//1
    digitalWrite(x2d, LOW);//0
  }
  if(num == 7) //0111
  {
    digitalWrite(x2a, HIGH);//1
    digitalWrite(x2b, HIGH);//1
    digitalWrite(x2c, HIGH);//1
    digitalWrite(x2d, LOW);//0
  }
  if(num == 8) //1000
  {
    digitalWrite(x2a, LOW);//0
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, HIGH);//1
  }
  if(num == 9)//1001
  {
    digitalWrite(x2a, HIGH);//1
    digitalWrite(x2b, LOW);//0
    digitalWrite(x2c, LOW);//0
    digitalWrite(x2d, HIGH);//1
  }
}

void disp3(int num)

  if(num == 0)//0000
  {
    digitalWrite(x3a, LOW);//
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, LOW);//0
  }
  if(num == 1)//0001
  {
    digitalWrite(x3a, HIGH);//1
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, LOW);//0
  }
  if(num == 2)//0010
  {
    digitalWrite(x3a, LOW);//0
    digitalWrite(x3b, HIGH);//1
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, LOW);//0
  }
  if(num == 3)//0011
  {
    digitalWrite(x3a, HIGH);//1
    digitalWrite(x3b, HIGH);//1
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, LOW);//0
  }
  if(num == 4)//0100
  {
    digitalWrite(x3a, LOW);//0
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, HIGH);//1
    digitalWrite(x3d, LOW);//0
  }
  if(num == 5) //0101
  {
    digitalWrite(x3a, HIGH);//1
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, HIGH);//1
    digitalWrite(x3d, LOW);//0
  }
  if(num == 6) //0110
  {
    digitalWrite(x3a, LOW);//0
    digitalWrite(x3b, HIGH);//1
    digitalWrite(x3c, HIGH);//1
    digitalWrite(x3d, LOW);//0
  }
  if(num == 7) //0111
  {
    digitalWrite(x3a, HIGH);//1
    digitalWrite(x3b, HIGH);//1
    digitalWrite(x3c, HIGH);//1
    digitalWrite(x3d, LOW);//0
  }
  if(num == 8) //1000
  {
    digitalWrite(x3a, LOW);//0
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, HIGH);//1
  }
  if(num == 9)//1001
  {
    digitalWrite(x3a, HIGH);//1
    digitalWrite(x3b, LOW);//0
    digitalWrite(x3c, LOW);//0
    digitalWrite(x3d, HIGH);//1
  }
}

void disp4(int num)

  if(num == 0)//0000
  {
    digitalWrite(x4a, LOW);//
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, LOW);//0
  }
  if(num == 1)//0001
  {
    digitalWrite(x4a, HIGH);//1
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, LOW);//0
  }
  if(num == 2)//0010
  {
    digitalWrite(x4a, LOW);//0
    digitalWrite(x4b, HIGH);//1
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, LOW);//0
  }
  if(num == 3)//0011
  {
    digitalWrite(x4a, HIGH);//1
    digitalWrite(x4b, HIGH);//1
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, LOW);//0
  }
  if(num == 4)//0100
  {
    digitalWrite(x4a, LOW);//0
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, HIGH);//1
    digitalWrite(x4d, LOW);//0
  }
  if(num == 5) //0101
  {
    digitalWrite(x4a, HIGH);//1
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, HIGH);//1
    digitalWrite(x4d, LOW);//0
  }
  if(num == 6) //0110
  {
    digitalWrite(x4a, LOW);//0
    digitalWrite(x4b, HIGH);//1
    digitalWrite(x4c, HIGH);//1
    digitalWrite(x4d, LOW);//0
  }
  if(num == 7) //0111
  {
    digitalWrite(x4a, HIGH);//1
    digitalWrite(x4b, HIGH);//1
    digitalWrite(x4c, HIGH);//1
    digitalWrite(x4d, LOW);//0
  }
  if(num == 8) //1000
  {
    digitalWrite(x4a, LOW);//0
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, HIGH);//1
  }
  if(num == 9)//1001
  {
    digitalWrite(x4a, HIGH);//1
    digitalWrite(x4b, LOW);//0
    digitalWrite(x4c, LOW);//0
    digitalWrite(x4d, HIGH);//1
  }
}
Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: gold3nnn - 16 Ağustos 2021, 10:28:26
void decimalParcala(float decimal)
{
  float deger1 = 0;
  deger1 = decimal* 100;
  binler = deger1 / 1000;
  deger1 = deger1 - (binler * 1000); // bulduğumuz binler basamagı deger orjinal degerden çıkartılır.
  yuzler = deger1 / 100;
  deger1 = deger1 - (yuzler * 100);
  onlar = deger1 / 10;
  deger1 = deger1 - (onlar * 10);
  birler = deger1;
}

Bu çalışan bir kod kendim kullanıyorum.
Başlık: Ynt: Arduino 4 haneli sayıyı basamaklarına ayırma
Gönderen: serkan - 16 Ağustos 2021, 16:05:57
xc8 de kullandığım çalışan kodu Arduino için düzenledim.



void  7segment( long sayi);
long say=0;
////////////////////////////////////////////////
void  7segment( long sayi)   
    {               
  //basamaklara ayir
    long birler,onlar,yuzler,binler,onbinler,yuzbinler,milyonlar;
 milyonlar    =  (sayi/1000000)%10; //
 yuzbinler   =  (sayi/100000)%10;   //
 onbinler   =  (sayi/10000)%10;     //
 binler    =  (sayi/1000)%10;       //
 yuzler   =  (sayi/100)%10;         //  
 onlar   =  (sayi/10)%10;           // 
 birler =  (sayi/1)%10;             // 

  if(birler==1){digitalWrite(x1a, HIGH);digitalWrite(x1b, LOW); digitalWrite(x1c, LOW);digitalWrite(x1d, LOW);}    
  if(birler==2){digitalWrite(x1a, LOW); digitalWrite(x1b, HIGH);digitalWrite(x1c, LOW);digitalWrite(x1d, LOW);}
  if(birler==3){digitalWrite(x1a, HIGH);digitalWrite(x1b, HIGH);digitalWrite(x1c, LOW);digitalWrite(x1d, LOW);}
  if(birler==4){digitalWrite(x1a, LOW);digitalWrite(x1b, LOW);  digitalWrite(x1c, HIGH);digitalWrite(x1d, LOW);} 
  if(birler==5){digitalWrite(x1a, HIGH);digitalWrite(x1b, LOW); digitalWrite(x1c, HIGH);digitalWrite(x1d, LOW);}      
  if(birler==6){digitalWrite(x1a, LOW);digitalWrite(x1b, HIGH); digitalWrite(x1c, HIGH);digitalWrite(x1d, LOW);} 
  if(birler==7){digitalWrite(x1a, HIGH);digitalWrite(x1b, HIGH);digitalWrite(x1c, HIGH);digitalWrite(x1d, LOW);} 
  if(birler==8){digitalWrite(x1a, LOW);digitalWrite(x1b, LOW);  digitalWrite(x1c, LOW);digitalWrite(x1d, HIGH);} 
  if(birler==9){digitalWrite(x1a, HIGH);digitalWrite(x1b, LOW); digitalWrite(x1c, LOW);digitalWrite(x1d, HIGH);}      
  if(birler==0){digitalWrite(x1a, LOW); digitalWrite(x1b, LOW); digitalWrite(x1c, LOW); digitalWrite(x1d, LOW);}

  if(onlar==1){digitalWrite(x2a, HIGH);digitalWrite(x2b, LOW); digitalWrite(x2c, LOW);digitalWrite(x2d, LOW);}    
  if(onlar==2){digitalWrite(x2a, LOW); digitalWrite(x2b, HIGH);digitalWrite(x2c, LOW);digitalWrite(x2d, LOW);}
  if(onlar==3){digitalWrite(x2a, HIGH);digitalWrite(x2b, HIGH);digitalWrite(x2c, LOW);digitalWrite(x2d, LOW);}
  if(onlar==4){digitalWrite(x2a, LOW);digitalWrite(x2b, LOW);  digitalWrite(x2c, HIGH);digitalWrite(x2d, LOW);} 
  if(onlar==5){digitalWrite(x2a, HIGH);digitalWrite(x2b, LOW); digitalWrite(x2c, HIGH);digitalWrite(x2d, LOW);}      
  if(onlar==6){digitalWrite(x2a, LOW);digitalWrite(x2b, HIGH); digitalWrite(x2c, HIGH);digitalWrite(x2d, LOW);} 
  if(onlar==7){digitalWrite(x2a, HIGH);digitalWrite(x2b, HIGH);digitalWrite(x2c, HIGH);digitalWrite(x2d, LOW);} 
  if(onlar==8){digitalWrite(x2a, LOW);digitalWrite(x2b, LOW);  digitalWrite(x2c, LOW);digitalWrite(x2d, HIGH);} 
  if(onlar==9){digitalWrite(x2a, HIGH);digitalWrite(x2b, LOW); digitalWrite(x2c, LOW);digitalWrite(x2d, HIGH);}      
  if(onlar==0){digitalWrite(x2a, LOW); digitalWrite(x2b, LOW); digitalWrite(x2c, LOW); digitalWrite(x2d, LOW);}

  if(yuzler==1){digitalWrite(x3a, HIGH);digitalWrite(x3b, LOW);digitalWrite(x3c, LOW);digitalWrite(x3d, LOW);}    
  if(yuzler==2){digitalWrite(x3a, LOW); digitalWrite(x3b, HIGH);digitalWrite(x3c, LOW);digitalWrite(x3d, LOW);}
  if(yuzler==3){digitalWrite(x3a, HIGH);digitalWrite(x3b, HIGH);digitalWrite(x3c, LOW);digitalWrite(x3d, LOW);}
  if(yuzler==4){digitalWrite(x3a, LOW);digitalWrite(x3b, LOW);digitalWrite(x3c, HIGH);digitalWrite(x3d, LOW);} 
  if(yuzler==5){digitalWrite(x3a, HIGH);digitalWrite(x3b, LOW);digitalWrite(x3c, HIGH);digitalWrite(x3d, LOW);}      
  if(yuzler==6){digitalWrite(x3a, LOW);digitalWrite(x3b, HIGH);digitalWrite(x3c, HIGH);digitalWrite(x3d, LOW);} 
  if(yuzler==7){digitalWrite(x3a, HIGH);digitalWrite(x3b, HIGH);digitalWrite(x3c, HIGH);digitalWrite(x3d, LOW);} 
  if(yuzler==8){digitalWrite(x3a, LOW);digitalWrite(x3b, LOW);digitalWrite(x3c, LOW);  digitalWrite(x3d, HIGH);} 
  if(yuzler==9){digitalWrite(x3a, HIGH);digitalWrite(x3b, LOW);digitalWrite(x3c, LOW); digitalWrite(x3d, HIGH);}      
  if(yuzler==0){digitalWrite(x3a, LOW); digitalWrite(x3b, LOW);digitalWrite(x3c, LOW); digitalWrite(x3d, LOW);}
 
  if(binler==1){digitalWrite(x4a, HIGH);digitalWrite(x4b, LOW);digitalWrite(x4c, LOW);digitalWrite(x4d, LOW);}    
  if(binler==2){digitalWrite(x4a, LOW); digitalWrite(x4b, HIGH);digitalWrite(x4c, LOW);digitalWrite(x4d, LOW);}
  if(binler==3){digitalWrite(x4a, HIGH);digitalWrite(x4b, HIGH);digitalWrite(x4c, LOW);digitalWrite(x4d, LOW);}
  if(binler==4){digitalWrite(x4a, LOW);digitalWrite(x4b, LOW);digitalWrite(x4c, HIGH);digitalWrite(x4d, LOW);} 
  if(binler==5){digitalWrite(x4a, HIGH);digitalWrite(x4b, LOW);digitalWrite(x4c, HIGH);digitalWrite(x4d, LOW);}      
  if(binler==6){digitalWrite(x4a, LOW);digitalWrite(x4b, HIGH);digitalWrite(x4c, HIGH);digitalWrite(x4d, LOW);} 
  if(binler==7){digitalWrite(x4a, HIGH);digitalWrite(x4b, HIGH);digitalWrite(x4c, HIGH);digitalWrite(x4d, LOW);} 
  if(binler==8){digitalWrite(x4a, LOW);digitalWrite(x4b, LOW);digitalWrite(x4c, LOW);  digitalWrite(x4d, HIGH);} 
  if(binler==9){digitalWrite(x4a, HIGH);digitalWrite(x4b, LOW);digitalWrite(x4c, LOW); digitalWrite(x4d, HIGH);}      
  if(binler==0){digitalWrite(x4a, LOW); digitalWrite(x4b, LOW);digitalWrite(x4c, LOW); digitalWrite(x4d, LOW);}

   //delayms(200);
}
 
////////////////////////////////////////////////////////////////////

void  main()// void loop(){
{
 

  say=1000; 7segment(say);
 
  while(1)            
  {     
 state1 = digitalRead(artir);
 state2 = digitalRead(azalt);     
if(state1 == HIGH){ say+=1;7segment(say); }
if(state2 == HIGH){ say-=1;7segment(say); }

  }
}