ESP32-S3zero

CODE
import time, framebuf, random, math
from machine import Pin, SPI
import ST7735

# Pinler
EKRAN_SCK = 7
EKRAN_MOSI = 8
EKRAN_CS = 11
EKRAN_DC = 10
EKRAN_RST = 9

spi = SPI(1, baudrate=40000000, polarity=0, phase=0, sck=Pin(EKRAN_SCK), mosi=Pin(EKRAN_MOSI))
ekran = ST7735.TFT(spi, Pin(EKRAN_CS), Pin(EKRAN_DC), Pin(EKRAN_RST), rotation=0)

buf = bytearray(128 * 160 * 2)
fb = framebuf.FrameBuffer(buf, 128, 160, framebuf.RGB565)

# ================= RENKLER =================
SIYAH = 0x0000
BEYAZ = 0xFFFF
KIRMIZI = 0xF800
TURUNCU = 0xFD20
KAHVE = 0x6B2C
KAR_GOLGE = 0xAD55
MAVI = 0x001F
SARI = 0xFFE0
YESIL = 0x07E0

# ================= KAR TANESİ =================
class KarTanesi:
   def __init__(self):
       self.x = random.randint(0, 127)
       self.y = random.randint(-20, -5)
       self.boyut = random.randint(1, 3)
       self.hiz = random.uniform(0.5, 2.0)
       self.sallanma = random.uniform(0, 6.28)
       self.sallanma_hizi = random.uniform(0.02, 0.05)
   
   def ciz(self):
       if self.boyut == 1:
           fb.pixel(int(self.x), int(self.y), BEYAZ)
       elif self.boyut == 2:
           fb.pixel(int(self.x), int(self.y), BEYAZ)
           fb.pixel(int(self.x) + 1, int(self.y), BEYAZ)
           fb.pixel(int(self.x), int(self.y) + 1, BEYAZ)
           fb.pixel(int(self.x) + 1, int(self.y) + 1, BEYAZ)
       else:
           fb.pixel(int(self.x), int(self.y), BEYAZ)
           fb.pixel(int(self.x) + 1, int(self.y), BEYAZ)
           fb.pixel(int(self.x) - 1, int(self.y), BEYAZ)
           fb.pixel(int(self.x), int(self.y) + 1, BEYAZ)
           fb.pixel(int(self.x), int(self.y) - 1, BEYAZ)
   
   def hareket_et(self):
       self.sallanma += self.sallanma_hizi
       self.x += math.sin(self.sallanma) * 0.3
       self.y += self.hiz
       
       if self.y > 159:
           self.y = random.randint(-20, -5)
           self.x = random.randint(0, 127)
           self.boyut = random.randint(1, 3)
           self.hiz = random.uniform(0.5, 2.0)

# ================= KARDAN ADAM =================
class KardanAdam:
   def __init__(self, x, y):
       self.x = x
       self.y = y
       
       self.alt_govde = (x, y + 25)
       self.orta_govde = (x, y + 12)
       self.bas = (x, y - 5)
       
       self.sol_goz = (x - 4, y - 8)
       self.sag_goz = (x + 4, y - 8)
       
       self.burun = (x + 8, y - 3)
       
       self.dugme1 = (x, y + 8)
       self.dugme2 = (x, y + 16)
       
       self.sol_kol = (x - 15, y + 5)
       self.sag_kol = (x + 15, y + 5)
       
       self.sapka_x = x
       self.sapka_y = y - 18
   
   def ciz(self):
       # Alt gövde
       fb.ellipse(self.alt_govde[0], self.alt_govde[1], 16, 16, BEYAZ, True)
       fb.ellipse(self.alt_govde[0], self.alt_govde[1], 16, 16, KAR_GOLGE, False)
       
       # Orta gövde
       fb.ellipse(self.orta_govde[0], self.orta_govde[1], 12, 12, BEYAZ, True)
       fb.ellipse(self.orta_govde[0], self.orta_govde[1], 12, 12, KAR_GOLGE, False)
       
       # Kafa (beyaz)
       fb.ellipse(self.bas[0], self.bas[1], 9, 9, BEYAZ, True)
       fb.ellipse(self.bas[0], self.bas[1], 9, 9, KAR_GOLGE, False)
       
       # Gözler
       fb.ellipse(self.sol_goz[0], self.sol_goz[1], 2, 2, SIYAH, True)
       fb.ellipse(self.sag_goz[0], self.sag_goz[1], 2, 2, SIYAH, True)
       fb.pixel(self.sol_goz[0] - 1, self.sol_goz[1] - 1, BEYAZ)
       fb.pixel(self.sag_goz[0] - 1, self.sag_goz[1] - 1, BEYAZ)
       
       # Burun
       fb.line(self.bas[0] - 2, self.bas[1] - 2, self.burun[0] + 5, self.burun[1] - 2, TURUNCU)
       fb.line(self.bas[0] - 1, self.bas[1] - 1, self.burun[0] + 5, self.burun[1] - 1, TURUNCU)
       fb.line(self.bas[0], self.bas[1], self.burun[0] + 5, self.burun[1], TURUNCU)
       fb.pixel(self.burun[0] + 5, self.burun[1], TURUNCU)
       
       # Ağız
       for i in range(5):
           mx = self.bas[0] - 6 + i * 3
           my = self.bas[1] + 3
           if i != 2:
               fb.pixel(mx, my, SIYAH)
       
       # Düğmeler
       fb.ellipse(self.dugme1[0], self.dugme1[1], 2, 2, SIYAH, True)
       fb.ellipse(self.dugme2[0], self.dugme2[1], 2, 2, SIYAH, True)
       
       # Kollar
       fb.line(self.orta_govde[0] - 8, self.orta_govde[1] + 2, self.sol_kol[0], self.sol_kol[1], KAHVE)
       fb.line(self.orta_govde[0] + 8, self.orta_govde[1] + 2, self.sag_kol[0], self.sag_kol[1], KAHVE)
       fb.line(self.sol_kol[0], self.sol_kol[1], self.sol_kol[0] - 5, self.sol_kol[1] - 3, KAHVE)
       fb.line(self.sol_kol[0], self.sol_kol[1], self.sol_kol[0] - 4, self.sol_kol[1] + 4, KAHVE)
       fb.line(self.sag_kol[0], self.sag_kol[1], self.sag_kol[0] + 5, self.sag_kol[1] - 3, KAHVE)
       fb.line(self.sag_kol[0], self.sag_kol[1], self.sag_kol[0] + 4, self.sag_kol[1] + 4, KAHVE)
       
       # ===== ŞAPKA (Kırmızı + Beyaz çizgi) =====
       # Şapka gövdesi (kırmızı)
       fb.fill_rect(self.sapka_x - 10, self.sapka_y - 2, 20, 12, KIRMIZI)
       fb.rect(self.sapka_x - 10, self.sapka_y - 2, 20, 12, BEYAZ)
       
       # Şapka kenarı (beyaz)
       fb.fill_rect(self.sapka_x - 12, self.sapka_y + 8, 24, 4, BEYAZ)
       fb.rect(self.sapka_x - 12, self.sapka_y + 8, 24, 4, KIRMIZI)
       
       # Şapka bandı (mavi)
       fb.fill_rect(self.sapka_x - 10, self.sapka_y + 4, 20, 2, MAVI)
       
       # Şapkanın üstünde kar
       fb.ellipse(self.sapka_x, self.sapka_y - 2, 8, 3, BEYAZ, True)

# ================= BAŞLAT =================
print("❄️ Kardan Adam + Kar Yağışı (Siyah Arka Plan)")

kardan_adam = KardanAdam(64, 115)
kar_taneleri = [KarTanesi() for _ in range(60)]

while True:
   fb.fill(SIYAH)
   
   kardan_adam.ciz()
   
   for k in kar_taneleri:
       k.hareket_et()
       k.ciz()
   
   ekran.blit(buf)
   time.sleep_ms(25)
 
License
All Rights
Reserved
licensBg
0