print("+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=")
print("\n\t Program for Deepavali Light\n\t with SSD1306 OLED Display")
print("\n\t\t\tBy:\n")
print("\t[Muhammad Irfan Bin Mohd Fardaus]")
print("\t\t (29/10/2024)\n")
print("+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=")
#import libraries/module
from machine import Pin,SoftI2C
from utime import sleep
import ssd1306
#Declare Pin
oledpin = SoftI2C(scl=Pin(22), sda=Pin(21))
led_row1 = Pin(13, Pin.OUT)
led_row2 = Pin(12, Pin.OUT)
led_row3 = Pin(14, Pin.OUT)
led_row4 = Pin(27, Pin.OUT)
led_row5 = Pin(26, Pin.OUT)
led_row6 = Pin(25, Pin.OUT)
led_row7 = Pin(33, Pin.OUT)
led_row8 = Pin(32, Pin.OUT)
led_row9 = Pin(23, Pin.OUT)
led_row10 = Pin(4, Pin.OUT)
led_row11 = Pin(19, Pin.OUT)
led_row12 = Pin(18, Pin.OUT)
#Declare Parameter
pattern_loop = 5
delay_time = 0.05
loop_delay = 0.1
ripple_delay = 0.2
# Initialize OLED display
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, oledpin)
#Main Program
# OLED Display Program
oled.fill(0)
oled.text("=+=+=+=+=+=+=+=+=+=+=+=+=+", 0, 0)
oled.text("+=+=+=+=+=+=+=+=+=+=+=+=+=", 0, 58)
oled.text("Happy Deepavali!", 0, 10)
oled.text("Happy Holiday!!", 2, 20)
oled.text("o o", 49, 33)
oled.text("\_/", 49, 44)
oled.show()
sleep(2)
oled.fill(0)
oled.text("=+=+=+=+=+=+=+=+=+=+=+=+=+", 0, 0)
oled.text("+=+=+=+=+=+=+=+=+=+=+=+=+=", 0, 58)
oled.text("This light have", 3, 25)
oled.text("3 patterns.", 28, 35)
oled.show()
sleep(2)
oled.fill(1)
oled.show()
while True:
# OLED Display Program
oled.fill(0)
oled.text("=+=+=+=+=+=+=+=+=+=+=+=+=+", 0, 0)
oled.text("+=+=+=+=+=+=+=+=+=+=+=+=+=", 0, 58)
oled.text("Pattern:", 35, 25)
oled.text("[Wave]", 38, 35)
oled.show()
#Wave Pattern
for i in range(pattern_loop):
#Foward sequence
led_row1.on()
sleep(delay_time)
led_row2.on()
sleep(delay_time)
led_row3.on()
sleep(delay_time)
led_row1.off()
led_row4.on()
sleep(delay_time)
led_row2.off()
led_row5.on()
sleep(delay_time)
led_row3.off()
led_row6.on()
sleep(delay_time)
led_row4.off()
led_row7.on()
sleep(delay_time)
led_row5.off()
led_row8.on()
sleep(delay_time)
led_row6.off()
led_row9.on()
sleep(delay_time)
led_row7.off()
led_row10.on()
sleep(delay_time)
led_row8.off()
led_row11.on()
sleep(delay_time)
led_row9.off()
led_row12.on()
sleep(delay_time)
led_row10.off()
sleep(delay_time)
led_row11.off()
sleep(delay_time)
led_row12.off()
sleep(delay_time)
#Backward sequence
led_row12.on()
sleep(delay_time)
led_row11.on()
sleep(delay_time)
led_row10.on()
sleep(delay_time)
led_row12.off()
led_row9.on()
sleep(delay_time)
led_row11.off()
led_row8.on()
sleep(delay_time)
led_row10.off()
led_row7.on()
sleep(delay_time)
led_row9.off()
led_row6.on()
sleep(delay_time)
led_row8.off()
led_row5.on()
sleep(delay_time)
led_row7.off()
led_row4.on()
sleep(delay_time)
led_row6.off()
led_row3.on()
sleep(delay_time)
led_row5.off()
led_row2.on()
sleep(delay_time)
led_row4.off()
led_row1.on()
sleep(delay_time)
led_row3.off()
sleep(delay_time)
led_row2.off()
sleep(delay_time)
led_row1.off()
sleep(delay_time)
sleep(loop_delay)
# OLED Display Program
oled.fill(0)
oled.text("=+=+=+=+=+=+=+=+=+=+=+=+=+", 0, 0)
oled.text("+=+=+=+=+=+=+=+=+=+=+=+=+=", 0, 58)
oled.text("Pattern:", 35, 25)
oled.text("[Alternating]", 15, 35)
oled.text("", 35, 46)
oled.show()
# Alternating Pattern
for i in range(pattern_loop):
led_row1.off()
led_row2.on()
led_row3.off()
led_row4.on()
led_row5.off()
led_row6.on()
led_row7.off()
led_row8.on()
led_row9.off()
led_row10.on()
led_row11.off()
led_row12.on()
sleep(0.5)
led_row1.on()
led_row2.off()
led_row3.on()
led_row4.off()
led_row5.on()
led_row6.off()
led_row7.on()
led_row8.off()
led_row9.on()
led_row10.off()
led_row11.on()
led_row12.off()
sleep(0.5)
led_row1.off()
led_row2.off()
led_row3.off()
led_row4.off()
led_row5.off()
led_row6.off()
led_row7.off()
led_row8.off()
led_row9.off()
led_row10.off()
led_row11.off()
led_row12.off()
sleep(loop_delay)
# OLED Display Program
oled.fill(0)
oled.text("=+=+=+=+=+=+=+=+=+=+=+=+=+", 0, 0)
oled.text("+=+=+=+=+=+=+=+=+=+=+=+=+=", 0, 58)
oled.text("Pattern:", 35, 25)
oled.text("[Ripple]", 32, 35)
oled.show()
#Ripple Pattern
for i in range(pattern_loop):
led_row6.on()
sleep(ripple_delay)
led_row6.off()
led_row5.on()
led_row7.on()
sleep(ripple_delay)
led_row5.off()
led_row7.off()
led_row8.on()
led_row4.on()
sleep(ripple_delay)
led_row8.off()
led_row4.off()
led_row3.on()
led_row9.on()
sleep(ripple_delay)
led_row3.off()
led_row9.off()
led_row10.on()
led_row2.on()
sleep(ripple_delay)
led_row10.off()
led_row2.off()
led_row1.on()
led_row11.on()
sleep(ripple_delay)
led_row1.off()
led_row11.off()
led_row12.on()
sleep(ripple_delay)
led_row12.off()
sleep(loop_delay)