← Tüm projeler
PROJE DETAYI / ARDUINO

Spotify Dot Matrix

Spotify'da çalan şarkı bilgilerini Arduino Uno ve 4×8×8 MAX7219 Dot Matrix üzerinde kayan yazıyla gösteren proje.

ARDUINO UNO4×8×8 MAX7219PYTHONSERİ HABERLEŞMECanlı demoyu dene ↘
Spotify Dot Matrix proje görseli
NASIL ÇALIŞIR?

Donanımdan ekrana.

01 / 03

Başlangıç

Donanım ve bağlantı şeması hazırlanır.

02 / 03

Uygulama

Arduino kodu derlenir ve masaüstü uygulaması ile eşleştirilir.

03 / 03

Deneyim

Örnek simülasyonla davranış incelenir.

Proje hakkında

Bilgisayarda çalışan Python betiği, açık pencerelerin başlıklarını kontrol ederek müzik bilgisi olabilecek metni seri bağlantıyla Arduino Uno'ya iletir. Arduino, gelen metni MAX7219 LED matrisler üzerinde kaydırır. Bu örnek Spotify'ın resmî Web API'sini kullanmaz; masaüstündeki pencere başlıklarını okur.

Kullanılan araçlar ve bileşenler

  • Arduino Uno
  • MAX7219 sürücülü 4 adet 8×8 LED Dot Matrix modülü
  • USB bağlantısı ve jumper kablolar
  • Python, pyserial ve pygetwindow
  • Arduino IDE, MD_Parola ve MD_MAX72XX kütüphaneleri

Malzeme listesi

CSV indir ↓

Projenin paylaşılan donanım ve kod yapısına göre hazırlanan liste. Adetler gösterilen kurulum içindir.

MalzemeAdetGörevi
Arduino Uno1Mikrodenetleyici; seri bağlantı ve ekran kontrolü
MAX7219 sürücülü 8×8 LED matris4 modül32×8 kayan yazı ekranı
Jumper bağlantı kablosu5+DIN, CS, CLK, VCC ve GND bağlantıları
USB bağlantı kablosu1Arduino programlama ve bilgisayarla seri haberleşme
Bilgisayar1Python ve masaüstü pencere başlığı okuma betiği

Not: Gerçek donanım uygulamasında besleme akımını ve bağlantıların güvenliğini kendi kartına göre kontrol et.

Sanal laboratuvarı dene

Devre bağlantıları

Bağlantı şemasını tam boy görmek için görsele tıklayabilirsin.

Arduino Uno ve MAX7219 Dot Matrix için DIN D11, CS D10, CLK D13, VCC 5V, GND GND bağlantı şeması
Pin bağlantı tablosu
Modül bağlantısıArduino Uno
DIND11
CSD10
CLKD13
VCC5V
GNDGND

Şemada tek 8×8 modül gösteriliyor. Dört modüllü MAX7219 kartında aynı sinyal girişleri kullanılır. Python betiğinde COM9 örnektir; bilgisayarındaki gerçek seri portu yazmalısın.

ETKİLEŞİMLİ DENEY ALANI

LED Matrix simülatörü

Kendi metnini yaz, kayma hızını değiştir. Dört adet 8×8 modülün oluşturduğu 32×8 LED alanını tarayıcıda deneyebilirsin.

DEMO VERİSİ
MAX7219 · 4 × 8×8 GÖRÜNTÜLEME

Spotify hesabına bağlanmaz ve müzik verisi okumaz. Yazdığın metni canlandırır.

Arduino kodu

Kodu indir ↓
spotify-dotmatrix.ino
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define DATA_PIN 11
#define CS_PIN 10
#define CLK_PIN 13

MD_Parola ekran(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
String mesaj = "Spotify hazir";

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(100);
  ekran.begin();
  ekran.setIntensity(3);
  ekran.displayClear();
  ekran.displayText(mesaj.c_str(), PA_LEFT, 65, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}

void loop() {
  if (Serial.available()) {
    String yeni = Serial.readStringUntil('\n');
    yeni.trim();
    if (yeni.length() > 0) {
      mesaj = yeni;
      ekran.displayClear();
      ekran.displayText(mesaj.c_str(), PA_LEFT, 65, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
    }
  }
  ekran.displayAnimate();
}

Python kodu

Kodu indir ↓
spotify-pencere-basligi.py
# Windows'ta pencere basligini okuyup Arduino'ya seri porttan aktarir.
# Kurulum: pip install pyserial pygetwindow
# Not: Spotify Web API entegrasyonu degildir.
import time
import serial
import pygetwindow as gw

PORT = "COM9"  # Aygit Yoneticisi'ndeki Arduino COM portuyla degistirin.
BAUD = 9600


def ascii_cevir(metin):
    return metin.translate(str.maketrans("çğıöşüÇĞİÖŞÜ", "cgiosuCGIOSU"))


def baslik_bul():
    # Masaustunde Spotify muzik penceresinin basligi gorunebilir.
    # Baska programlarin basliklarini sarki sanmamak icin filtre koyduk.
    yasak = ("Google Chrome", "Microsoft Edge", "Visual Studio", "Discord", "Opera", "Administrator", "Arduino")
    for title in gw.getAllTitles():
        if title and " - " in title and not any(x.lower() in title.lower() for x in yasak):
            return title
    return None


with serial.Serial(PORT, BAUD, timeout=1) as arduino:
    time.sleep(2)
    onceki = None
    while True:
        baslik = baslik_bul()
        if baslik and baslik != onceki:
            onceki = baslik
            arduino.write((ascii_cevir(baslik) + "\n").encode("utf-8"))
            print("Gonderildi:", baslik)
        time.sleep(2)

Diğer projeler

Başka bir çalışmamı da inceleyebilirsin.

Diğer projeye git