from machine import Pin, I2C
import time
from ssd1306 import SSD1306_I2C
from picozero import Servo
pix_res_x = 128
pix_res_y = 64
servo = Servo(15)
led1 = Pin(13,Pin.OUT)
led2 = Pin(12,Pin.OUT)
led3 = Pin(11,Pin.OUT)
def init_i2c(scl_pin, sda_pin):
# Initialize I2C device
i2c_dev = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin), freq=200000)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()]
if not i2c_addr:
print('No I2C Display Found')
sys.exit()
else:
print("I2C Address : {}".format(i2c_addr[0]))
print("I2C Configuration: {}".format(i2c_dev))
return i2c_dev
def illuminate(val):
if val>=0 and val<60:
led1.value(1)
led2.value(0)
led3.value(0)
elif val>=60 and val<120:
led1.value(0)
led2.value(1)
led3.value(0)
elif val>=120 and val<=180:
led1.value(0)
led2.value(0)
led3.value(1)
else:
led1.value(0)
led2.value(0)
led3.value(0)
def rotate(oled):
servo.value=0
while servo.value != 1:
oled.fill(0)
val = float(input("\nEnter a value bw 0 and 1: "))
if val<1 and val>0:
servo.value = servo.value+ val
val = servo.value * 180
illuminate(val)
val2 = str(val) + " Degree"
oled.fill(0)
oled.text(val2,0,10);
oled.show()
time.sleep(1)
else:
print("Invalid Input, Please Try Again !")
def main():
i2c_dev = init_i2c(scl_pin=27, sda_pin=26)
oled = SSD1306_I2C(pix_res_x, pix_res_y, i2c_dev)
rotate(oled)
if __name__ == '__main__':
main()