Burasıda fonksiyonlar ve en sonunda tuş atamaları.

C#:
private void btnErase_Click(object sender, EventArgs e)
        {
            Label[] bantlar = new Label[] { label5, label4, label3, label2, label1 };
            resetBant(bantlar);
            label6.Text = "";
            label7.Text = "";
            label8.Text = "";
            btnHesapla.Enabled = true;
            btnBack.Enabled = false;
        }
        private void btnBack_Click(object sender, EventArgs e)
        {
            checkBtnBack();

            string[] rakamlar = label7.Text.Split('-');

            Array.Resize(ref rakamlar, rakamlar.Length - 1);
            try
            {
                Array.Resize(ref rakamlar, rakamlar.Length - 1);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Daha fazla silinecek veri yok.");
                Console.WriteLine(ex.Message);
            }


            label7.Text = "";

            foreach (string rakam in rakamlar) {
                label7.Text += rakam + "-";
            }

            Label[] bantlar = { };

            switch (rakamlar.Length)
            {
                case 4:
                    bantlar = new Label[] { label5 };
                    resetBant(bantlar);
                    break;
                case 3:
                    bantlar = new Label[] { label5, label4 };
                    resetBant(bantlar);
                    break;
                case 2:
                    bantlar = new Label[] { label5, label4, label3 };
                    resetBant(bantlar);
                    break;
                case 1:
                    bantlar = new Label[] { label5, label4, label3, label2 };
                    resetBant(bantlar);
                    break;
                case 0:
                    bantlar = new Label[] { label5, label4, label3, label2, label1 };
                    resetBant(bantlar);
                    btnBack.Enabled = false;
                    break;
                default:
                    Console.WriteLine("Default case");
                    break;
            }

            label6.Text = "";
            btnHesapla.Enabled = true;
        }
        ///<summary>
        ///<line>Basılan rakam, Display, label, Renk gönder</line>
        ///</summary>
        private void degistir(string num, Label display, Label label, Color color)
        {
            display.Text += num + "-";
            label.BackColor = color;
            label.ForeColor = color;
            label.Text = num;
        }
        private void tolerans(double num, string tolere)
        {
            double tolerans = num * Convert.ToDouble(tolere) / 100;
            double eksiTolerans = Math.Round(num - tolerans, 2);
            double artiTolerans = Math.Round(num + tolerans, 2);
            string dortRakam = " ±"+tolere+"%";
            label6.Text = "Tolerans " + dortRakam + " - Tol. Aralığı " + eksiTolerans + " - " + artiTolerans;
        }
        private void bes_bant_Load(object sender, EventArgs e)
        {
            btnBack.Enabled = false;
            this.ActiveControl = null;
        }

        private void resetBant(Label[] bantlar) {

            foreach (Label bant in bantlar) {
                bant.Text = "";
                bant.BackColor = System.Drawing.Color.FromArgb(36, 136, 227);
                bant.ForeColor = System.Drawing.Color.FromArgb(36, 136, 227);
            }

        }

        private void checkBtnBack()
        {
            string[] rakamlar = label7.Text.Split('-');

            if (rakamlar.Length != 0)            {
                btnBack.Enabled = true;
            }
            this.ActiveControl = null;
        }

        private void bes_bant_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnHesapla_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad0 || e.KeyCode == Keys.D0)
            {
                button4_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad1 || e.KeyCode == Keys.D1)
            {
                btn1_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad2 || e.KeyCode == Keys.D2)
            {
                btn2_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad3 || e.KeyCode == Keys.D3)
            {
                btn3_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad4 || e.KeyCode == Keys.D4)
            {
                btn4_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad5 || e.KeyCode == Keys.D5)
            {
                btn5_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad6 || e.KeyCode == Keys.D6)
            {
                btn6_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad7 || e.KeyCode == Keys.D7)
            {
                btn7_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad8 || e.KeyCode == Keys.D8)
            {
                btn8_Click(sender, e);
            }
            if (e.KeyCode == Keys.NumPad9 || e.KeyCode == Keys.D9)
            {
                btn9_Click(sender, e);
            }

            if (e.KeyCode == Keys.Delete)
            {
                btnErase_Click(sender, e);
            }

            if (e.KeyCode == Keys.Back)
            {
                btnBack_Click(sender, e);
            }
            if (e.KeyCode == Keys.A)
            {
                btn11_Click(sender, e);
            }
            if (e.KeyCode == Keys.G)
            {
                btn10_Click(sender, e);
            }
            if (e.KeyCode == Keys.Decimal)
            {
                btnErase_Click(sender, e);
            }
            if (e.KeyCode == Keys.Escape)
            {
                btnselect_Click(sender, e);
            }
        }

    }
}
 
6 Bant Direnç Hesap Makinesi V3 olarak eklenmiştir.
Bu güncelleme de ek olarak bant seçme ekranına direnç görselleri eklenmiştir.

direnç hesaplama programı2.png
 
EIA-96 smd direnç hesabı için bir algoritma önerisi olan var mı? Yoksa 96 satır if - else if yapmak zorunda kalacağım.

eia96-smd.png

eia96-smd-çarpımı.png
 
Bu tip sorunu ufak bir tablo ile çözebilirsin
Yani şu tip fieldlara sahip bir table ile

tablo.png


gibi devam eden tabloyu oluşturursun.Sonra çarpanı değerini alıp çarptırırsın
 
Son düzenleme:
Bu tip sorunu ufak bir tablo ile çözebilirsin
Yani şu tip fieldlara sahip bir table ile

ID KODU CARPANI
1 Z 0,001
2 Y 0.01
3 R 0.01
4 X 0.1
5 S 0.1

gibi devam eden tabloyu oluşturursun.Sonra çarpanı değerini alıp çarptırırsın
Evet çarpan tarafı kolay da ben rakam tarafında sıkıntı çekiyorum.
 
nasıl yani çarpanı derken?
Belirtmiş olduğunuz hafler çarpan değerine karşılık geliyor.
Z harfine 0,001 atamak kolay.
Ancak birde işin rakam kısmı var. 01 ile 96 arası sayı değeri var. Bu sayıların her birine farklı bir sayı değeri denk geliyor.
Mesela 01'e 100 sayısı denk geliyor 02'ye 102 sayısı denk geliyor. 96'ya kadar her birine farklı sayı denk geliyor.
Sizin bu harflere yaptığınız önerinin aynısını rakamlara da yaparsak oluyor. Ancak 96 satır yapıyor.
Benim merak ettiğim bu iş fonksiyon yada başka bir şey ile bir kaç satıra düşürülebilir mi?
 
4 Renkli dirençlerin basit bir algoritması vardı. 3.renk sıfır sayısı(çarpanı) 4.band toleransı vs. Eğer basit bir kuralı yoksa yapılması gereken bu değerleride tabloya eklemek.Amplifikatör imal eden bir firma için herhalde 1000 kayıtlı temel component tablosu oluşturmuşum.Bunlardan power kartlarını ,MP3 modülünü ,mono çıkış kartlarını (yarı mamül olarak) daha sonrada bunlardan bir araya gelen amplileri modellerine göre oluşturmuştum.Böylece bir entegrenin yeni fiyatını girince yaklaşık 70 cihazın fiyatını güncelliyordu.dolar ve euro değerlerini alıp onlarıda güncelliyordu.

Yani bir kuralı yoksa mecbur bu şekilde tabloya gireceksin.Bu zorluk sayılmaz sana kod kısmında kolaylık sağlar.Yarin bir başka tür kod da eklendiğinde programın yetersiz kalır.Öbür türlü kullanıcı bir kayıt daha ekler.
 
Son düzenleme:
Direnç Hesaplama Programımızı Güncelledim. Artık 3 bant, 4 bant ve EIA-96 standartına sahip dirençleri de hesaplayabileceğiz.
Detaylar ilk mesajda.

direnç hesap makinesi v4.png
 
Çok güzel olmuş, eline sağlık. "Benim Hakkımda" yerine "Yazar" ya da "Geliştiren" gibi bir şey yazarsan daha iyi görünmez mi?
Başka birşey yazabilirim. Yazar deyince bana kitap yazarı çağrıştırıyo. Geliştiren deyince de kaba geliyor. Daha kibar bir şey bulabilirsek güzel olur.
 
pF'ı Farad'a çevirirken 100000pF / 1000000000000 yapıyorum. Sonuç olarak 0.0000001 F almam lazım ama resimdeki gibi değer dönüyor.
Bu sorunu kodlama ile çözebilir miyim?

Kullandığım kodlar ise şöyle;
C#:
double farad = pikoFarad / 1000000000000; // Method 1
double farad = pikoFarad / Math.Pow(10, 12); // Method 2

farad.png
 
"scientific notation" deniyor buna
1E-07 demek aslında 1* 10^(-7) demek

scientific notation to float/double
diye aratırsan ilgili kod örneğine ulaşabilirsin
Araştırdım ama bir türlü doğru kod bloğunu bulamadım.
Elime şöyle bir kod geçti ama buna da "farad" değişkenimi bir türlü gömemedim.
C#:
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);
 
Şöyle bir şey buldum.
C#:
double farad = 1E-07;

string defaultNumber = farad.ToString();
string numberFromToString = farad.ToString("N10");
string faradString = string.Format("{0:F10}", farad);

MessageBox.Show(faradString);
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,951
Mesajlar
118,749
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top