Sercan
--
- Katılım
- 17 Mart 2019
- Mesajlar
- 5,586
Özellikle eski DVD, VCD ya da uydu alıcılarının ön PCB'sinde bolca bulunan TM1628 entegresi çok sık karşıma çıkıyor. Son olarak elime DVD parçaları geçti ve içinde TM1628 ile sürülen bir 7 segment vardı. Bu entegre hem 7-segment sürebiliyor hem de bir diğer güzel yanı 16 taneye kadar bağımsız buton destekliyor. Yani mikrodenetleyinin sadece 3 dijital portu ile dışarı bilgi vernek ve 16 taneye kadar input almak mümkün. Yani küçük mikrodenetleyiclerde kullanmak için çok avantajlı. Bende SMP-060.PCB kod ile üretilmiş bir PCB ve 4 butonlu tuş takımı bulunuyor.
Göstergeyi Arduino Nano ile deneysel olarak çalıştırmaya karar verdim.
İnternette yaptığım araştırmalarda birkaç siteye denk geldim. Birinci sırada çıkan onetransistor.eu adlı siteyi okuduğumda, sayfada ifade edilen kütüphanenin, belirli bir ekrana göre atanmış adresler olduğunu bu sebeple kendi ekranında çalışmadığını anlatıyor. Kendisi bu kütüphaneyi düzenlemiş ama verdiği github adresine erişilemiyor. Neyse bu kütüphanenin benim ekranla da çalışmayabileceğini anladım. Öyle de oldu zaten.
Arduino IDE içinde kütüphane araması yaptığınızda TM16XX isimli bir başka kütüphane bulmak da mümkün. Bu kütüphane ise sanıyorum TM16 serisindeki birden fazla entegreyi, aşağıdaki gibi (TM1638) hazır modüllerle sürmekte kullanılıyor. Ben bu kütüphaneyi hiç denemedim.
Neyse onetransistor.eu sitesinde kendi ekranında çalışmadığını söylediği Vasyl Yudin tarafından geliştirilen TM1628 kütüphensi üzerinden ilerlemeye karar verdim. Kütüphanedeki adresleri bulup, bendeki ekrana göre düzenledim. Yaptığım şey adresleri bulup ilgili dizileri buna göre düzenlemekti. Olurda elinize bendeki gibi bir PCB geçer ve kullanmak isterseniz, düzenlediğim kütüphaneye forklayıp kendi düzenlediğim github adresimden erişebilirsiniz. Bu kütüphaneyi Arduino IDE'nin Library klasörüne koymanız yeterli.
Henüz butonları bağlamadım, dolayısıyla sadece 7 segment ve ekrandaki yardımcı LED'leri kontrol ediyorum.
Vakit bulduğumda butonların olduğu PCB'yi de bağlayıp, onları deneyeceğim. Son olarak PCB üzerinde bulunan IR alıcıyı da aktifleştirip, belirli bir kumandadan gelen komutlara göre işleyeceğim.
Göstergeyi Arduino Nano ile deneysel olarak çalıştırmaya karar verdim.
İnternette yaptığım araştırmalarda birkaç siteye denk geldim. Birinci sırada çıkan onetransistor.eu adlı siteyi okuduğumda, sayfada ifade edilen kütüphanenin, belirli bir ekrana göre atanmış adresler olduğunu bu sebeple kendi ekranında çalışmadığını anlatıyor. Kendisi bu kütüphaneyi düzenlemiş ama verdiği github adresine erişilemiyor. Neyse bu kütüphanenin benim ekranla da çalışmayabileceğini anladım. Öyle de oldu zaten.
Arduino IDE içinde kütüphane araması yaptığınızda TM16XX isimli bir başka kütüphane bulmak da mümkün. Bu kütüphane ise sanıyorum TM16 serisindeki birden fazla entegreyi, aşağıdaki gibi (TM1638) hazır modüllerle sürmekte kullanılıyor. Ben bu kütüphaneyi hiç denemedim.
Neyse onetransistor.eu sitesinde kendi ekranında çalışmadığını söylediği Vasyl Yudin tarafından geliştirilen TM1628 kütüphensi üzerinden ilerlemeye karar verdim. Kütüphanedeki adresleri bulup, bendeki ekrana göre düzenledim. Yaptığım şey adresleri bulup ilgili dizileri buna göre düzenlemekti. Olurda elinize bendeki gibi bir PCB geçer ve kullanmak isterseniz, düzenlediğim kütüphaneye forklayıp kendi düzenlediğim github adresimden erişebilirsiniz. Bu kütüphaneyi Arduino IDE'nin Library klasörüne koymanız yeterli.
Henüz butonları bağlamadım, dolayısıyla sadece 7 segment ve ekrandaki yardımcı LED'leri kontrol ediyorum.
Vakit bulduğumda butonların olduğu PCB'yi de bağlayıp, onları deneyeceğim. Son olarak PCB üzerinde bulunan IR alıcıyı da aktifleştirip, belirli bir kumandadan gelen komutlara göre işleyeceğim.
Kod:
#include <TM1628.h>
// define - data pin D9, clock pin D8 and strobe pin D7
TM1628 dvdLED(9, 8, 7);
byte intensity = 0;
int initLED = 0;
void setup() {
Serial.begin(9600);
dvdLED.begin(ON, 7);
}
void loop() {
// ilk açılışta bütün karakterleri ve LED'leri aç
dvdLED.setTime(8, 88, 88);
for (initLED = 0; initLED < 17; initLED++) {
dvdLED.setLEDon(initLED);
}
delay(1000);
// parlaklığı 0'dan 7'e güncelle
if (intensity == 0) {
for (intensity; intensity <= 7; intensity++) {
dvdLED.begin(ON, intensity);
delay(1000);
}
}
// Ekranı temizle
dvdLED.clear();
delay(1000);
// Disk LED'lerini 3 defa aç-kapat
for (int i = 0; i < 3; i++) {
dvdLED.setDisc(true);
delay(300);
dvdLED.setDisc(false);
delay(300);
}
// Disk dönme efektini 6 tur uygula
for (int tur = 0; tur < 6; tur++) {
for (int discAddress = 4; discAddress < 7; discAddress++) {
dvdLED.setLEDon(discAddress);
dvdLED.setLEDon(discAddress + 3);
delay(180);
dvdLED.setLEDoff(discAddress);
dvdLED.setLEDoff(discAddress + 3);
delay(20);
}
}
delay(500);
// İlkel bir kronometre başlat
for (int saat = 0; saat <= 24; saat++) {
for (int dakika = 0; dakika <= 60; dakika++) {
for (int saniye = 0; saniye <= 60; saniye++) {
dvdLED.setTime(0, dakika, saniye);
dvdLED.setLEDoff(0x0B);
delay(493);
dvdLED.setLEDon(0x0B);
delay(493);
Serial.println(saniye);
}
}
}
}
/* sequence of LEDs:
LED_DVD 0x00
LED_PLY 0x01
LED_PAU 0x02
LED_CD_ 0x03
LED_DC1 0x04
LED_DC2 0x05
LED_DC3 0x06
LED_DC4 0x07
LED_DC5 0x08
LED_DC6 0x09
LED_CL1 0x0A
LED_CL2 0x0B
LED_VCD 0x0C
LED_DTS 0x0D
LED_DDD 0x0E
*/