Spotify Dot Matrix

Spotify'da çalan şarkıları gerçek zamanlı olarak Arduino Uno ve MAX7219 Dot Matrix üzerinde gösteren proje.

Proje Hakkında

Bu projede Python bilgisayardaki aktif Spotify başlığını okur ve seri port üzerinden Arduino Uno'ya gönderir. Arduino gelen veriyi MAX7219 Dot Matrix üzerinde kayan yazı olarak gösterir.

Kullanılan Donanımlar

Arduino Uno
MAX7219 Dot Matrix
USB Kablo
Python + PyGetWindow

Devre Bağlantıları

DIN → D11
CS → D10
CLK → D13
VCC → 5V
GND → GND

Arduino Kodu

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW

#define MAX_DEVICES 1

#define DATA_PIN 11
#define CLK_PIN 13
#define CS_PIN 10

MD_Parola ekran =
MD_Parola(
HARDWARE_TYPE,
DATA_PIN,
CLK_PIN,
CS_PIN,
MAX_DEVICES
);

String gelenMesaj = "Spotify Hazir";

void setup()
{
  Serial.begin(9600);

  ekran.begin();
  ekran.setIntensity(5);

  ekran.displayClear();
}

void loop()
{
  if (Serial.available())
  {
    gelenMesaj =
      Serial.readStringUntil('
');
  }

  if (ekran.displayAnimate())
  {
    ekran.displayText(
      gelenMesaj.c_str(),
      PA_LEFT,
      60,
      0,
      PA_SCROLL_LEFT,
      PA_SCROLL_LEFT
    );
  }
}

Python Kodu

import serial
import time
import pygetwindow as gw

arduino = serial.Serial("COM9", 9600)
time.sleep(2)

eski = ""

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

yasakli = [
    "Microsoft Edge",
    "Google Chrome",
    "Opera",
    "Komut",
    "Administrator",
    "Arduino",
    "Visual Studio",
    "Discord"
]

while True:
    pencereler = gw.getAllTitles()
    spotify_baslik = ""

    for baslik in pencereler:
        if baslik and " - " in baslik:
            if not any(kelime in baslik for kelime in yasakli):
                spotify_baslik = baslik
                break

    if spotify_baslik != "" and spotify_baslik != eski:
        eski = spotify_baslik
        spotify_baslik = turkce_temizle(spotify_baslik)

        print("Gonderiliyor:", spotify_baslik)
        arduino.write((spotify_baslik + "\n").encode("utf-8"))

    time.sleep(2)

Galeri