Android İke Dot Matrix’e Mesaj Gönderme
Bu projemizde Arduino ile Android arasında bluetooth haberleşme gerçekleştirip, Arduino’ya bağlı olan Dot Matrix Display‘de gönderilen mesajı görüntüleyeceğiz. Konuyla ilgili gereken öncül bilgiler Arduino HC-05 Bluetooth Modül – Android eşleşmesidir. Bunu da zaten daha önceki projelerimizde yapmıştık. Android uygulamayı kendimiz tasarlamayıp apk uygulaması olarak indireceğiz.
Kullanılan Malzemeler
- Bir adet Arduino Uno kartı,
- Bir adet 32×16 Dot Matrix Display,
- Bir adet bluetooh modülü HC-05,
- Bir adet akıllı telefon/tablet.
Tasarım
32×16 Dot Matrix Display yanında Arduino karta bağlanan konektörü ile gelmektedir. Martix konusunda yapılması gereken şey konektörü Arduino kartın dijital uçlarına bağlamak. 512 adet led’e sahip olan bu display 5 volt ile çalışabilmektedir.

HC-05 Bluetooth modülünü eski projelerimizden hatırlıyorsunuzdur. Bizim için önemli 4 adet ucu vardı. Bunlar VCC, GND, TX ve RX. VCC, Uno kartın 5 volt girişine, GND ise GND girişine bağlanacaktır. Seri haberleşme uçları arasında ise çaprazlama tekniğini kullanıyorduk: TX-RXD (dijital-O), RX-TXD (dijital-1).
Devre aşamasında yapılması gereken sadece bu kadar. Aşağıda devre resmi gösterilmektedir.
Kodlama
Kodlama bölümünde yapacağımız işler sırasıyla Dot Matrix Display kütüphanesini Arduino’ya eklemek. Sonra Arduino kodunu yazmak ve en son olarak da Android mesaj gönderme uygulamasını indirip kullanmak.
Dot Matrix Display kütüphanesine https://github.com/freetronics/DMD adresinden erişebilirsiniz. Ekranın sağında bulunan “Download ZIP” butonu ile kütüphaneyi indirip Arduino/libraries klasörünün içine taşıyınız.
Arduino kod bloğu aşağıdaki gibidir:
//aşağıdaki kütüphaneler //Arduino-libraries dosyanızda yoksa //mutlaka internetten indiriniz. #include <SPI.h> //dot matrix'e yazdırmak için gerekli olan kütüphane #include <DMD.h> //dot matrix kütüphanesi #include <TimerOne.h> // zamanlayıcı/kesme kütüphanesi #include "SystemFont5x7.h" // 5x7 display font kütüphanesi #include "Arial_black_16.h" // Ardial fontunda siyah 16 boyut yazı kütüphanesi //display bağlantıları #define DISPLAYS_ACROSS 1 #define DISPLAYS_DOWN 1 DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN); //mesajın maksimum kareketer sayısı #define max_char 100 char message[max_char]; // mesaj kaydı char r_char; // mesajdaki her bir karekteri okuyacak değişken byte index = 0; // mesaj dizinideki karekterleri konumu int i; /*-------------------------------------------------------------------------------------- displayi yenileyip her seferinde tarama yapan komut --------------------------------------------------------------------------------------*/ void ScanDMD() { dmd.scanDisplayBySPI(); } void setup(void) { //timer kesmesi kuruluyor Timer1.initialize( 5000 ); //display tarama periyodu Timer1.attachInterrupt( ScanDMD ); //ScanDMD timer'a ekleniyor //display pikselleri temizleniyor dmd.clearScreen( true ); Serial.begin(9600); } void loop(void) { //yeni mesaj geldiğinde eski mesajın silinmesi if(Serial.available()){ for(i=0; i<99; i++){ message[i] = '\0'; } //index temizlenmesi index=0; } //seri iletişim olduğu sürece while(Serial.available() > 0){ if(index < (max_char-1)) { r_char = Serial.read(); // karakterler okunur message[index] = r_char; // mesaj dizisinde saklanır index++; // her bir okumada poziyson artırılır message[index] = '\0'; // eski pozisyonlar silinir } } //display mesajı görüntülemek için hazırlanıyor dmd.clearScreen( true ); dmd.selectFont(Arial_Black_16); //mesaj gösteriliyor dmd.drawMarquee(message, max_char,(32*DISPLAYS_ACROSS)-1 ,0); long start=millis(); long timer=start; boolean ret=false; while(!ret){ if ((timer+30) < millis()) { ret=dmd.stepMarquee(-1,0); timer=millis(); } } }