7 SEGMENT DISPLAY ILE KRONOMETRE

a değişkeninin tipi ne?
 
O zaman kısa süreli denemelerde sorun çıkmasa da sonradan mutlaka sorun çıkar. Atmega dahili SRAM 8 bit. Bu durumda kesme, 32 bitlik bir değişken üzerinde işlem yaparken ana döngüde sen bu değişkeni okursan, o değişkeni tam işlemin ortasında yakalayabilirsin ve saçma sapan bir değer okursun.

Onun yerine kesme doğrudan saat, dakika, saniye, ve salise değişkenlerini arttırsın ve bu değişkenlerin her birisi byte olsun. Bir byte okuyorken yarım yamalak birşey okuma riski yoktur.
 
Bir diğer çözüm de sen a değişkenini ana döngüde okurken kesmeleri kapatmak.
 
O zaman kısa süreli denemelerde sorun çıkmasa da sonradan mutlaka sorun çıkar. Atmega dahili SRAM 8 bit. Bu durumda kesme, 32 bitlik bir değişken üzerinde işlem yaparken ana döngüde sen bu değişkeni okursan, o değişkeni tam işlemin ortasında yakalayabilirsin ve saçma sapan bir değer okursun.

Onun yerine kesme doğrudan saat, dakika, saniye, ve salise değişkenlerini arttırsın ve bu değişkenlerin her birisi byte olsun. Bir byte okuyorken yarım yamalak birşey okuma riski yoktur.
Benim düzen yine değişti.

Zaman kesme içinde şöyle yapıcam o zaman.

Kod:
byte ms = 0;
byte sn = 0;
byte dk = 0;
byte st = 0;

ISR(TIMER1_COMPA_vect) {
 ms++;
 if(ms == 100){
sn++;
ms = 0;
}
devamı aynı mantıkta sıra sıra arttırcam
}
 
Benim düzen yine değişti.

Zaman kesme içinde şöyle yapıcam o zaman.

Kod:
byte ms = 0;
byte sn = 0;
byte dk = 0;
byte st = 0;

ISR(TIMER1_COMPA_vect) {
 ms++;
 if(ms == 100){
sn++;
ms = 0;
}
devamı aynı mantıkta sıra sıra arttırcam
}

Eğer ana döngüde kullanacaksan milisaniye sayacını böyle yapman lazım, evet. Ama ana döngüde o değişkenlere bakmayacaksan o zaman 32 bit değişken tanımlayabilirsin.
 
Yalnız ms değişken ismi yanlış. o değişken milisaniye saymıyor, 10 ms sayiyor. _10ms_counter falan demek daha mantıklı.
 
Dişciden birkaç gram gümüşümü'de alıp geldim.
Bir işe yarayacak gibi çıkanları alıyorum :katil2:

Şimdi programı byte ile yapılandırma zamanı.
 
C++:
/*

 ___ _   _ _ __  _ __   ___  _ __| |_ ___ _ __ ___ _
/ __| | | | '_ \| '_ \ / _ \| '__| __/ _ \ '__/ __(_)
\__ \ |_| | |_) | |_) | (_) | |  | ||  __/ |  \__ \_
|___/\__,_| .__/| .__/ \___/|_|   \__\___|_|  |___(_)
          |_|   |_|                                 

                    _ _           
                   (_) |         
 ___  ___ _ __ ___  _| |__    ___
/ __|/ _ \ '_ ` _ \| | '_ \  / __|
\__ \  __/ | | | | | | | | | \__ \
|___/\___|_| |_| |_|_|_| |_| |___/
                         ______   
                        |______| 
 _                  _ _       
| |                | (_)     
| |_ __ _ _   _  __| |_ _ __ 
| __/ _` | | | |/ _` | | '_ \
| || (_| | |_| | (_| | | | | |
 \__\__,_|\__, |\__,_|_|_| |_|
           __/ |             
          |___/               
  __ _     _     
 / _(_)   | |     
| |_ _  __| | ___
|  _| |/ _` |/ _ \
| | | | (_| |  __/
|_| |_|\__,_|\___|
                          
 */


byte _10ms = 0;
byte sn = 0;
byte dk = 0;
byte sa = 0;


ISR(TIMER1_COMPA_vect) {

  _10ms++;

  if (_10ms == 100) {
    sn++;
    _10ms = 0;
  }

  if (sn == 60) {
    dk++;
    sn = 0;
  }

  if (dk == 60) {
    sa++;
    dk = 0;
  }
}

void setup() {
  /*
    noInterrupts();

    TCCR1A = 0;
    TCCR1B = 0;
    TCNT1 = 0;
    OCR1A = 20102;

    TCCR1B |= (1 << WGM12);
    // TCCR1B |= (1 << CS12); // prscl 256
    TCCR1B |= (1 << CS11); // prscl 8
    TIMSK1 |= (1 << OCIE1A);

    interrupts();
  */
  noInterrupts();
  TCCR1A = 0;
  TCNT1 = 0;
  OCR1A = 16000000 / (100 * 64) - 1;
  TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
  TIMSK1 |= (1 << OCIE1A);
  interrupts();

  Serial.begin(115200);
}


void loop() {

  Serial.print(_10ms);
  Serial.print("--");

  Serial.print(sn);
  Serial.print("--");

  Serial.print(dk);
  Serial.println(" ");

}

Projenin geldiği son hali bu.
Zamanlarla ilgili sorunum kalmadı sanırım şimdi 7segmanlar üstüne çalışmaya başlayacağım.

Projeme destek verim yardım'da bulunan
@fide
@taydin
@semih_s
Abilerime teşekkür ederim.
Umarım sonucu güzel olacak.
 
Dişlerde dolgu için gümüş mü kullanılıyor yav? Gümüş korozyon yapan bir metal nasıl oluyor o iş?
 
Dişlerde dolgu için gümüş mü kullanılıyor yav? Gümüş korozyon yapan bir metal nasıl oluyor o iş?
Dolgu değil abi diş teli.
Senteye alsın diye dişleri gittikçe kalınlaşan tel kullanıyorlar benden her söktüğünü istiyorum çöpe atıyor yoksa.
Tamamen gümüş değil içinde çok az gümüş varmış.
 
Saatin 100 olma durumunu da kontrol edip başa döndürürsen daha doğru olur Ahmet.
 
Saatin 100 olma durumunu da kontrol edip başa döndürürsen daha doğru olur Ahmet.
kronometre tarafında o kadar saat saydırmam ama ekleyeyim nizama uygun olsun.

Dijital saat kısmında daha detaylandıracağım.
Dijital saate dönüşünce 2 tane 7seg boşta kalıyor hatta saniyeler'de bence boşta kalmalı dakika ve saat yeterli.

Bu boştaki dijitlere haftanın hangi gününde olduğumuzu yazdırabilirim
24 ve katları bize günleri verir.

değişken 0 iken pazartesi.
25'den büyük 48'den küçükse salı.
48'den büyük 72'den küçükse çarşamba
.
.
.

Bu aklıma gelen yol'da kulağı tersten tutmak olabilir.
 
Gene ıvır zıvır özelliklere odaklanmaya başladın Ahmet :katil2: Asıl ekran taramasına odaklan, orada tuzaklar var.
 
Gene ıvır zıvır özelliklere odaklanmaya başladın Ahmet :katil2: Asıl ekran taramasına odaklan, orada tuzaklar var.
uln2803 arıyorum abi 20 tane vardı.
onu bulduğum an testlere başlayacağım.

direkt çıkıştan sürme veya
595 ile.
Yada varsa bir alternatif hem 595 hem tampon tek entegre içinde ileride de çok işime yarar.
 
D portu müsait bunu yapmam için ama yapamam TX-RX ve 2 tane dış kesme pini kapanıyor.
Ne işime yara bu proje'de dış kesme bilmiyorum
TX-RX kapanabilir usb-asp ile programlarım kartı ama dış kesmelerin işgal edilmesini istemiyorum :( biraz daha bakayım neler yapabilirim.
 
Eğer pinler başka birşey için lazımsa 595 kullan. Doğrudan porta yazma ile 595 kullanma arasında hem zorluk olarak bir fark yok hem de bir püf noktası da yok.
 
Eğer pinler başka birşey için lazımsa 595 kullan. Doğrudan porta yazma ile 595 kullanma arasında hem zorluk olarak bir fark yok hem de bir püf noktası da yok.
Aslında girişlerimiz çıkışlarımız belli.
Bir frekans girişi olacak herhalde analog pinden yapacağız.
3 tane buton olacak.

Başka giriş düşünmedim.

toplam 4giriş yapıyoruz.
16'da çıkışımız var.

7 dijit+1 nokta
8'de tarama için
 
EMANET entegre vermeyin!!!
Komik gelebilir ama arkadaşlarım biliyor benim entegre bağımlısı olduğumu çoğu entegre ihtiyaçlarını ilk bana sorarlar aldığım 20 tane uln2803'ü bulamayınca arkadaşıma verdiğim aklıma geldi step motor sürecekti ounla kanalları paralalleyip güçlendirme yapacaktı sözde a4988 neyine yetmiyorsa.

Entegre kül olmuş içi tamamen kısa devre devreye elektrik verdiğim an bütün dijitleri yakıyordu az daha arduino kartını camdan aşşağı atacaktım.

Entegre çok ucuz ama olmayınca can sıkıyor.
Evi biraz daha dökeyim bulayım 2803'lerimi.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,986
Mesajlar
119,346
Üyeler
2,835
Son üye
alpermete

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