Elimdekileri bulsam asla istemem geri.At, avrat, silah ve ENTEGRE emanet verilmez!
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define dot 9
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dot, OUTPUT);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
}
void loop() {
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(dot, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
digitalWrite(d, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(g, LOW);
digitalWrite(d, LOW);
digitalWrite(dot, LOW);
delay(1000);
clear();
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(dot, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(dot, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(1000);
clear();
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dot, LOW);
delay(1000);
clear();
}
void clear() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
}
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define dot 9
int n = 0;
void segs(int dg) {
if (dg == 1) {
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 2) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
digitalWrite(d, LOW);
}
if (dg == 3) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(g, LOW);
digitalWrite(d, LOW);
}
if (dg == 4) {
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 5) {
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
}
if (dg == 6) {
digitalWrite(a, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if (dg == 7) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 8) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if (dg == 9) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
}
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dot, OUTPUT);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
}
void loop() {
n++;
segs(n);
delay(1000);
clear();
if (n > 9) {
n = 0;
}
}
void clear() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
}
Displayde göstereceğin sayıyı saat formatında düzenleyip en son göstergede görülecek 4 basamaklı değeri displaye göndermek daha kolay olur gibi geliyor bana. Yani saniye ve dakikaları takip eden programı yazdıktan sonra displayde gösterilecek değeri örneğin "int display" değişkenine
"display = saniye + 100*dakika " şeklinde aktarıp bu değişkenin basamak değerlerini belirleyip ekrana göndermek... Genel geçer bir 7 segment display'de sayı gösteren bir program yazdığında ister sayı, ister saat gösterebilirsin. Sayı her güncellendiğinde basamaklara tekrar ayırıp gösterilecek değeri güncellersin.
Sayıyı basamaklarına ayrdırmakta bir problemin olmadığını anlıyorum bu yazdığından, bir taraftan da 8 basamaklı birer artan sayının 8. basamağını zırt pırt tekrar hesaplamak mantıklı değil, bu nedenle benim önerim taca çıkmış oluyor. Bunun yerine:Abi düzenim hazır aslında nasıl yazdırcağımın mantığını'da kavradım
Toplam 8 tane 7segment'imiz var.
2 Tanesi Saat
2 Tanesi Dakika
2 Tanesi Saniye
2 Tanesi Milisaniye
Bunları transistörler ile seçip veri yazıp tekrarlayacağım bu döngüyü. Fakat.
Sayıyı nasıl ayırıp 2 dijite yazacağım bunu anlayamıyorum /10 yapıp birler basamağını mı alıcam yoksa değişkeni hanelerine mi ayıracağım bunu anlayamıyorum bunu anlayabilirsem projenin büyük kısmını bitirmiş olacağım(ekran tarama ve referans kaynak oluşturma)
"Pişmiş aşa su katma" Ahmet.Sayıyı basamaklarına ayrdırmakta bir problemin olmadığını anlıyorum bu yazdığından, bir taraftan da 8 basamaklı birer artan sayının 8. basamağını zırt pırt tekrar hesaplamak mantıklı değil, bu nedenle benim önerim taca çıkmış oluyor. Bunun yerine:
Displayde göstereceğin sayının basamak değerlerini sakladığın bir array değişken olsun. dispSegment[8], display süren kodun sadece bu değerleri sürmekle uğraşırken. saat formatını düzenleyen kodun her kademeyi(dakika-saat vb.) ayrı ayrı sadece gerektiğinde basamak değerlerine ayırıyor diyelim (milisaniyeyi iki digitte salise olarak takip ediyorsun heralde) dispSegment[] array değişkenine atabilirsin.
milisaniyeUp
basamakları hesapla
dispSegment[0]=milisaniyebasamak0
dispSegment[1]=milisaniyebasamak1
saniyeUp
basamakları hesapla
dispSegment[2]=saniyebasamak0
dispSegment[3]=saniyebasamak1
int sayi = 73;
int onlar = sayi / 10;
int birler = sayi % 10;
Aklıma gelen yolda buydu daha doğrusu varmı diye çırpınıyorum.iki basamaklı bir sayının basamaklarını nasıl elde edeceğini mi soruyorsun? Soru buysa bununla iligli bir kod paylaşmıştım:
7 SEGMENT DISPLAY ILE KRONOMETRE
ISR'yi setuptan önce yazmalı, loop boş olsa da eklemeli, bir de ISR içinde arduino delay kodu çalışmıyor, bunun dışında bunları düzeltip deniyorum şimdi.mekatronik.org
Ama her zaman iki basamak olacaksa iş daha kolay. Onlar basamağını 10 a bölümüdür, birler basamağını da 10'a bölümden kalandır.
C++:int sayi = 73; int onlar = sayi / 10; int birler = sayi % 10;
Şimdilik olacağını düşündüğüm yol ile devam ediyorum o zaman / 10 yaparak birler basamağını oalcağım onlar basamağı'da sayının kendisi olacak zaten yüzler basamağım yok her paramatere için 2 tane 7 segment ekranım varSayıyı basamaklarına ayrdırmakta bir problemin olmadığını anlıyorum bu yazdığından, bir taraftan da 8 basamaklı birer artan sayının 8. basamağını zırt pırt tekrar hesaplamak mantıklı değil, bu nedenle benim önerim taca çıkmış oluyor. Bunun yerine:
Displayde göstereceğin sayının basamak değerlerini sakladığın bir array değişken olsun. dispSegment[8], display süren kodun sadece bu değerleri sürmekle uğraşırken. saat formatını düzenleyen kodun her kademeyi(dakika-saat vb.) ayrı ayrı sadece gerektiğinde basamak değerlerine ayırıyor diyelim (milisaniyeyi iki digitte salise olarak takip ediyorsun heralde) dispSegment[] array değişkenine atabilirsin.
milisaniyeUp
basamakları hesapla
dispSegment[0]=milisaniyebasamak0
dispSegment[1]=milisaniyebasamak1
saniyeUp
basamakları hesapla
dispSegment[2]=saniyebasamak0
dispSegment[3]=saniyebasamak1
Şimdilik olacağını düşündüğüm yol ile devam ediyorum o zaman / 10 yaparak birler basamağını oalcağım onlar basamağı'da sayının kendisi olacak zaten yüzler basamağım yok her paramatere için 2 tane 7 segment ekranım var
HeeeHesabı doğru anlamamışsın. Birler basamağı zaman / 10 değil yukarıdaki mesajı tekrar incele.
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define dot 9
#define seg0 10 //seg0
#define seg1 11 //seg1
int n = 0;
bool flg = 0;
void segs(int dg) {
if (dg == 0) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
}
if (dg == 1) {
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 2) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
digitalWrite(d, LOW);
}
if (dg == 3) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(g, LOW);
digitalWrite(d, LOW);
}
if (dg == 4) {
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 5) {
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
}
if (dg == 6) {
digitalWrite(a, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if (dg == 7) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
}
if (dg == 8) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if (dg == 9) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
}
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dot, OUTPUT);
pinMode(seg0, INPUT_PULLUP);
pinMode(seg1, INPUT_PULLUP);
pinMode(seg0, OUTPUT);
pinMode(seg1, OUTPUT);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
digitalWrite(seg0, HIGH);
digitalWrite(seg1, HIGH);
}
void loop() {
if (flg == 0) {
digitalWrite(seg0, LOW);
digitalWrite(seg1, HIGH);
segs(n);
delay(350);
n++;
delay(100);
clear();
digitalWrite(seg0, HIGH);
if (n > 9) {
n = 0;
flg = 1;
}
}
if (flg == 1) {
digitalWrite(seg0, HIGH);
digitalWrite(seg1, LOW);
segs(n);
delay(350);
n++;
delay(100);
clear();
digitalWrite(seg1, HIGH);
if (n > 9) {
n = 0;
flg = 0;
}
}
}
void clear() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dot, HIGH);
}
int disp[] = {2,3,4,5,6,7,8,9};
void setup() {
for(int d = 0; , d < 9 ; d++){
pinMode(disp[d], OUTPUT);
}
for(int s = 0; , s < 9 ; s++){
digitalWrite(disp[d], HIGH);
}
}