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
Binler = sayi /1000
Yüzler = (sayi mod 1000) /100
Onlar = (sayi mod 100) /10
Birler = sayi mod 10
Yani sadece matematik işlemi
Sayı parçalanmış şimdi bunları bir yerlere kayıt ettirmeli lazım olduğundada geri çağırmalı
int dizi[4];
dizi = {birler, onlar, yüzler, binler};
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
}
}
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.
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); }
}
}