from machine import SPI, Pin
import network
import ntptime
import utime

gunler = ["Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"]

print("\nBaşladı...\n")

sta_if = network.WLAN(network.STA_IF)
utime.sleep(1)
print(sta_if.active(True))
utime.sleep(1)
print(sta_if.active())
utime.sleep(3)
sta_if.connect("Wokwi-GUEST", "")
utime.sleep(3)
print(sta_if.isconnected())
print(sta_if.ifconfig()[0])

k = 0

if(sta_if.isconnected()):
    print("İnternet bağlantisi saglandi.\n")
    k = 1
else:
    print("İnternet bağlantisi saglanmadi.\n")
    k = 0

#k = 1

def zamanAl():
    try:
        ntptime.settime()
    except OSError as e:
        print(f"Hata {e}")
        utime.sleep(2)
        zamanAl()

spi = SPI(2, baudrate=100_000)
latch = Pin(5, mode=Pin.OUT, value=1)

print("\nBasladi...\n")

saat = 0
dakika = 0

data = bytearray(4)

saat_data = bytearray(2)



#            dGFEDCBA
segment = (0b00111111, #0
           0b00000110, #1
           0b01011011, #2
           0b01001111, #3
           0b01100110, #4
           0b01101101, #5
           0b01111101, #6
           0b00000111, #7
           0b01111111, #8
           0b01101111  #9
           )

def saatYaz():
    if(saat == 0):
        saat_data = 0
    else:
        saat_data = (1 << (saat - 1))

    data[0] = 255 - segment[int(dakika % 10)]       #dk birler
    data[1] = 255 - segment[int(dakika / 10)]       #dk onlar

    if(saat == 0):
        data[2] = 0
        data[3] = 0
    else:
        data[2] = saat_data >> 8                        #saat 2.blok
        data[3] = saat_data & 0xFF                      #saat 1.blok

    latch(0)
    spi.write(data)

    utime.sleep_ms(10)
    latch(1)

if __name__ == "__main__":
    while(1):
        if(k == 1):
            if(dakika == 0):
                #a_time = utime.localtime()
                a_time = utime.localtime(utime.mktime(utime.localtime()) + (3 * 3600)) #+3
                #print(f"Local time before synchronization:{utime.localtime()}")
                print("Senkronizasyondan önceki zaman:")
                print(f"{a_time[2]:02d}/{a_time[1]:02d}/{a_time[0]:4d} {gunler[a_time[6]]}\n{a_time[3]:02d}:{a_time[4]:02d}:{a_time[5]:02d}")
                zamanAl()           
            else:     
                a_time = utime.localtime(utime.mktime(utime.localtime()) + (3 * 3600)) #+3
                #print("Local time  after synchronization:%s" %str(time.localtime()))
                print("Senkronizasyondan sonraki zaman:")
                print(f"{a_time[2]:02d}/{a_time[1]:02d}/{a_time[0]:4d} {gunler[a_time[6]]}\n{a_time[3]:02d}:{a_time[4]:02d}:{a_time[5]:02d}")
                print("")
            saat = a_time[3]
            if(saat >= 12):
                saat -= 12
            dakika = a_time[4]
            saatYaz()            
            
        else:
            print("Hata")
        utime.sleep(1)




esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
74HC595
sr1:Q1
sr1:Q2
sr1:Q3
sr1:Q4
sr1:Q5
sr1:Q6
sr1:Q7
sr1:GND
sr1:Q7S
sr1:MR
sr1:SHCP
sr1:STCP
sr1:OE
sr1:DS
sr1:Q0
sr1:VCC
74HC595
sr2:Q1
sr2:Q2
sr2:Q3
sr2:Q4
sr2:Q5
sr2:Q6
sr2:Q7
sr2:GND
sr2:Q7S
sr2:MR
sr2:SHCP
sr2:STCP
sr2:OE
sr2:DS
sr2:Q0
sr2:VCC
74HC595
sr3:Q1
sr3:Q2
sr3:Q3
sr3:Q4
sr3:Q5
sr3:Q6
sr3:Q7
sr3:GND
sr3:Q7S
sr3:MR
sr3:SHCP
sr3:STCP
sr3:OE
sr3:DS
sr3:Q0
sr3:VCC
74HC595
sr4:Q1
sr4:Q2
sr4:Q3
sr4:Q4
sr4:Q5
sr4:Q6
sr4:Q7
sr4:GND
sr4:Q7S
sr4:MR
sr4:SHCP
sr4:STCP
sr4:OE
sr4:DS
sr4:Q0
sr4:VCC
bargraph1:A1
bargraph1:A2
bargraph1:A3
bargraph1:A4
bargraph1:A5
bargraph1:A6
bargraph1:A7
bargraph1:A8
bargraph1:A9
bargraph1:A10
bargraph1:C1
bargraph1:C2
bargraph1:C3
bargraph1:C4
bargraph1:C5
bargraph1:C6
bargraph1:C7
bargraph1:C8
bargraph1:C9
bargraph1:C10
sevseg1:COM.1
sevseg1:COM.2
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg2:COM.1
sevseg2:COM.2
sevseg2:A
sevseg2:B
sevseg2:C
sevseg2:D
sevseg2:E
sevseg2:F
sevseg2:G
sevseg2:DP
bargraph2:A1
bargraph2:A2
bargraph2:A3
bargraph2:A4
bargraph2:A5
bargraph2:A6
bargraph2:A7
bargraph2:A8
bargraph2:A9
bargraph2:A10
bargraph2:C1
bargraph2:C2
bargraph2:C3
bargraph2:C4
bargraph2:C5
bargraph2:C6
bargraph2:C7
bargraph2:C8
bargraph2:C9
bargraph2:C10
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2
r9:1
r9:2
r10:1
r10:2
r11:1
r11:2
r12:1
r12:2
r13:1
r13:2
r14:1
r14:2
r15:1
r15:2
r16:1
r16:2
r17:1
r17:2
r18:1
r18:2
r19:1
r19:2
r20:1
r20:2
r21:1
r21:2
r22:1
r22:2
r23:1
r23:2
r24:1
r24:2
r25:1
r25:2
r26:1
r26:2
r27:1
r27:2
r28:1
r28:2