from machine import Pin, PWM, I2C
#import ssd1306
import time
# ESP32 Pin assignment
#i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Initialize PWM on a GPIO pin
servo = PWM(Pin(15))
#buzzer = PWM(Pin(14))
# Set Frequency (Standard for Servos is 50Hz)
servo.freq(50)
def ServoAngle(angle):
servo.duty(int(((angle)/180*2 + 0.5) / 20 * 1023))
return angle
# 0.5 ms = 0 degree, 1.5 ms = 90 degree & 2.5 ms = 180 degree
# pwm.duty(int(((angle)/180 *2 + 0.5) / 20 * 1023))
#servo.duty_u16(32768)
'''
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# 8-bit signed
# Set Duty Cycle (8-bit integer: 0 to 1023)
# Manual calculation example
'''
'''
while True:
servo.duty(25)
# buzzer.freq(440)
time.sleep(1)
servo.duty(127)
# buzzer.freq(262)
time.sleep(1)
# oled.text('Hello, Wokwi!', 10, 10)
# oled.show()
'''
# Angle auto example
while True:
ServoAngle(0)
#buzzer.freq(440)
time.sleep(1)
ServoAngle(90)
time.sleep(1)
ServoAngle(180)
#buzzer.freq(262)
#oled.fill(0)
#oled.text('Hello, Wokwi!', 10, 10)
#oled.show()
time.sleep(1)
'''
# Angle auto Adv example
while True:
angle = ServoAngle(0)
buzzer.freq(440)
oled.fill(0)
oled.text('Servo Angle:', 0, 0)
oled.text(str(angle), 0, 12)
oled.show()
time.sleep(1)
angle = ServoAngle(180)
buzzer.freq(262)
oled.fill(0)
oled.text('Servo Angle:', 0, 0)
oled.text(str(angle), 0, 12)
oled.show()
time.sleep(1)
'''