Parlaklık daha iyi bcd[0] if şartını 20 olarak değiştirdim yoksa hızlı sayıyordu.50 us çok uzun. 50 us yi değiştirme, kesme sıklığını iki katına çıkar bakalım ne olacak. saniyede 100 yerine saniyede 200 olsun.
Bir de transistör baz direnci ne kadar? Transistörün satürasyona girdiğinden emin misin?
Sadece R1 direnci ile oynuyorum kalan bütün hepsi aynı7 SEGMENT DISPLAY ILE KRONOMETRE
Bu basamak seçici devrem. Acaba tarama frekansıma yetişemiyor mu diye beyzin'deki frekans ile collectordekini karşılaştırdım 328'den çıkan tarama frekansım 100herz collectörüne baktığımda'da 100herz görüyorum uyguladığım tarama frekansında açılıp kapanıyor. Az kontrol edilen basamaklarda sönük...mekatronik.org
18650 pilime kapasite testi yaparken ufak bir kaza geçirdik'de abi ondan bakamadım.Ha tamam şimdi baktım şemaya. Devre yanlış olmuş.
1) Her bir segmentin kendi direnci olması gerekiyorken, sen bir tane ortak direnç kullanıyorsun. Böylece geçebilecek akımı 8 de birine düşürmüş oluyorsun. Bir de segmentler arasında parlaklık farkına sebep oluyor. Bir segmentte 8 varsa ve diğerinde de - varsa, 8 çok sönük - daha parlak olur.
2) Ortak direnci de PNP nin emitterine koymuşsun. Bu durumda transistör satürasyona da gitmez, akımı daha da sınırlandırmış oluyorsun.
O ortak direnci sök ve onun yerine kısa devre yok. Sonra da her segmente AYRI AYRI 22 Ω direnç koy. Sonra da 50 us yi azalt.
Hepsinden kurtarmasa da, ne kadar kurtarırsak kârdır.Bu proje seni, okuldan gelen bütün kötü alışkanlıklardan kurtaracak gibi
Abi frekans ölçmeyi tam bilmediğim için şuan nasıl bekleme veremem gerektiğini bilmiyorumYaptığın projeye göre süreyi arttırabilirsin. Mesela her hane için 10 us yapsan toplam 80 us yapar. 100 us toplam kesme süresi de fena değil. Projede kısa kesme süresi şart değilse, mesela ana döngüde hassas delayler gerekmiyorsa, süreyi daha da uzatabilirsin.
ISR(TIMER1_COMPA_vect) {
bcd_inc(bcd);
PORTB = 0b00111110;
PORTD = _7seg[8];
delayMicroseconds(5);
//PORTB = 0b00111111;
PORTB = 0b00111101;
PORTD = _7seg[bcd[1]];
delayMicroseconds(20);
PORTB = 0b00111111;
if (snb == 1) {
PORTB = 0b00111011;
PORTD = _7seg[bcd[2]];
delayMicroseconds(20);
PORTB = 0b00111111;
}
if (sno == 1) {
PORTB = 0b00110111;
PORTD = _7seg[bcd[3]];
delayMicroseconds(20);
PORTB = 0b00111111;
}
if (dkb == 1) {
PORTB = B00101111;
PORTD = _7seg[bcd[4]];
delayMicroseconds(20);
PORTB = 0B00111111;
}
if (dko == 1) {
PORTB = B00011111;
PORTD = _7seg[bcd[5]];
delayMicroseconds(20);
PORTB = 0B00111111;
}
}
Butonları eklemeye geçiyorum abi o zaman.millisaniyenin kısalmasını ms olarak yaz Ahmet. mS milli siemens, yani iletkenlik birimidir. Herkes anlıyor denmek isteneni ama gene de birimleri doğru kullanmak daha iyi.
Frekansmetre için ayrı bir konu açarsan daha iyi olur. Kronometre işini burada bitirirsen artık bu konu amacına ulaşmış demektir.
Bunu @Endorfin35+ abi tavsiye etmiyordu.Analog pinlere birden fazla buton bağlayabilirsin. Bir gerilim bölücü ile voltaj okursun ve oradan anlarsın hangi butonun basılı olduğunu:
18095 eklentisine bak