from machine import Pin, SPI
import time
# Konfigurasi pin ESP32
spi = SPI(1, baudrate=100000, polarity=0, phase=0)
data_pin = Pin(33, Pin.OUT) # DS
latch_pin = Pin(26, Pin.OUT) # STCP
clock_pin = Pin(32, Pin.OUT) # SHCP
# Fungsi untuk mengirim data ke IC 74HC595
def shift_out(byte):
for _ in range(8):
data_pin.value(byte & 0x80)
clock_pin.on()
clock_pin.off()
byte <<= 1
# Fungsi untuk meng-update LED
def update_leds(led_states):
latch_pin.off()
for i in range(3, -1, -1):
shift_out(led_states[i])
latch_pin.on()
# Inisialisasi LED states (semua mati)
led_states = [0, 0, 0, 0]
# Fungsi untuk menyalakan LED pada posisi tertentu
def turn_on_led(position):
led_states[position // 8] |= (1 << (position % 8))
# Fungsi untuk mematikan LED pada posisi tertentu
def turn_off_led(position):
led_states[position // 8] &= ~(1 << (position % 8))
# Program utama
def main():
while True:
# Menyalakan LED satu per satu
for i in range(32):
turn_on_led(i)
update_leds(led_states)
time.sleep(0.5)
turn_off_led(i)
if __name__ == "__main__":
main()