Arduino ile 7 segment 4 digit ekran kontrolü nasıl yapılır?

K.Makise

Kilopat
Katılım
28 Kasım 2020
Mesajlar
4.799
Makaleler
4
Çözümler
81
Daha fazla  
Cinsiyet
Erkek
Arduino UNO ile ortak anot 7 segment 4 digit bir ekranı 0-20 arası kontrol etmeye çalıştım ve biraz başarısız oldum.
1 digit ile çalışırken sorun yok ama 2 digit ile çalışmam gerekince işler karışıyor mesela 10 yazmak istiyorum fakat 2 tarafta da aynı şey yazıyor.
Bir nebze giderdim fakat bazı iki basamaklı sayılarda yine fail oldum.
Bunu en iyi şekilde nasıl yapabilirim mantığını öğrenmek istiyorum, araştırdım bayağı fakat düzgün bir bilgiye erişemedim.
Yazdığım kodu aşağı bırakıyorum:

C++:
#define UST 2
#define SOL_U 3
#define SOL_A 5
#define ALT 6
#define SAG_U 4
#define SAG_A 7
#define ORT 8
#define D1 9
#define D2 10.
#define D3 11.
#define D4 12.
#define POT A0.

int sayi = 0;

void setup() {

 pinMode(UST, OUTPUT);
 pinMode(SOL_U, OUTPUT);
 pinMode(SOL_A, OUTPUT);
 pinMode(ALT, OUTPUT);
 pinMode(SAG_U, OUTPUT);
 pinMode(SAG_A, OUTPUT);
 pinMode(ORT, OUTPUT);
 pinMode(D1, OUTPUT);
 pinMode(D2, OUTPUT);
 pinMode(D3, OUTPUT);
 pinMode(D4, OUTPUT);

}

void loop() {

 sayi = map(analogRead(POT), 0, 1023, 0, 20);

 switch (sayi) {

 case (0):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 1);

 break;

 case (1):

 digitalWrite(D4, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);

 break;

 case (2):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 1);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (3):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (4):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 0);

 break;

 case (5):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 1);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (6):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 1);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (7):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);

 break;

 case (8):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (9):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 break;

 case (10):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (11):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);

 break;

 case (12):

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 1);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 break;

 case (13):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (14):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (15):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 1);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (16):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 1);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (17):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (18):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (19):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 case (20):

 digitalWrite(D4, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 0);
 digitalWrite(SOL_U, 0);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 0);
 digitalWrite(ALT, 0);
 digitalWrite(ORT, 0);
 delayMicroseconds(2500);

 digitalWrite(D3, 1);
 digitalWrite(SAG_U, 0);
 digitalWrite(SAG_A, 1);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 0);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 delayMicroseconds(2500);
 break;

 default:

 digitalWrite(SAG_U, 1);
 digitalWrite(SAG_A, 1);
 digitalWrite(SOL_U, 1);
 digitalWrite(SOL_A, 1);
 digitalWrite(UST, 1);
 digitalWrite(ALT, 1);
 digitalWrite(ORT, 1);
 digitalWrite(D1, 0);
 digitalWrite(D2, 0);
 digitalWrite(D3, 0);
 digitalWrite(D4, 0);
 break;
 }

}
 
case'lerdeki parantezleri kaldırın.
 
Case'lerdeki parantezleri kaldırın.

Kod bu şekilde de sorunsuz çalışıyor ve şu an 500 satırlık kodda bunu 20 kere değiştireceğime tren rayına yatmayı tercih ederim hocam

Konu hakkında başka öneriniz var mı?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…