Direnç Hesaplama Makinesi V2

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?
 
Ç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.
 
"Gökhan?"
 
Marifet iltifata tabidir. ;)
 
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 personel

Forum istatistikleri

Konular
5,878
Mesajlar
100,183
Üyeler
2,488
Son üye
ilter

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top