import time import os from machine import Pin from neopixel import NeoPixel from time import sleep pin = Pin(2, Pin.OUT) np = NeoPixel(pin, 16*16) # Funkcja do odczytu pliku BMP 16x16 def kart(x, y, r, g, b): if y%2!=1: z=x+16*y np[z] = (r, g, b) else: z=15+16*y-x np[z] = (r, g, b) def read_bmp(filename): with open(filename, "rb") as f: # Pomijamy nagłówek BMP (54 bajty) f.seek(54) # Odczytujemy dane pikseli 16x16 (3 bajty na piksel) data = f.read(16 * 16 * 3) # 16x16 pikseli, każdy ma 3 bajty (RGB) return bytearray(data) # Zwracamy kopię danych jako bytearray # Funkcja zwiększająca nasycenie kolorów def increase_saturation(r, g, b, factor): r = min(int(r * factor), 255) # Zwiększamy nasycenie, ale ograniczamy do 255 g = min(int(g * factor), 255) b = min(int(b * factor), 255) return r, g, b def obrazek(nazwa): # Ładujemy dane BMP z pliku bmp_data = read_bmp(nazwa) # Pętla po pikselach i wyświetlanie na pasku LED for i in range(16): for j in range(16): # Indeks w danych BMP (3 bajty na piksel) index = (i * 16 + j) * 3 # Pobieramy kolory RGB (24 bity) r = bmp_data[index + 2] # Czerwony (najpierw R w BMP) g = bmp_data[index + 1] # Zielony b = bmp_data[index] # Niebieski # Zwiększ nasycenie kolorów r, g, b = increase_saturation(r, g, b, factor=1) # Możesz zmieniać factor # Wyświetlamy kolor na pasku LED kart(i, j, r, g, b) # Dla debugowania (można usunąć później) #print(f"Pixel ({i}, {j}) - R: {r}, G: {g}, B: {b}") np.write() def jpg(nazwa): nazwa=nazwa+".bmp" print(nazwa) obrazek(nazwa) def display_bmp(bmp_data): for i in range(16): for j in range(16): # Indeks w danych BMP (3 bajty na piksel) index = (i * 16 + j) * 3 # Pobieramy kolory RGB (24 bity) r = bmp_data[index + 2] # Czerwony (najpierw R w BMP) g = bmp_data[index + 1] # Zielony b = bmp_data[index] # Niebieski # Zwiększ nasycenie kolorów r, g, b = increase_saturation(r, g, b, factor=1) # Możesz zmieniać factor # Wyświetlamy kolor na pasku LED (funkcja `kart` obsługuje wyświetlanie na pasku LED) kart(i, j, r, g, b) np.write() def gif(folder_path, ile): for i in range(ile): # Pobierz listę plików BMP w folderze, posortowaną alfabetycznie files = sorted([f for f in os.listdir(folder_path) if f.endswith(".bmp")]) if not files: print("Brak plików BMP w podanym folderze.") return for file_name in files: file_path = folder_path + "/" + file_name print(f"Wyświetlam: {file_name}") # Załaduj dane pikseli z pliku BMP bmp_data = read_bmp(file_path) # Wyświetl obraz na pasku LED display_bmp(bmp_data) # Opóźnienie między klatkami time.sleep(0.1) del bmp_data