from machine import Pin, ADC, I2C
from ssd1306 import SSD1306_I2C
import time
# กำหนดขา ADC และการตั้งค่า
adc = ADC(Pin(15))
adc.atten(ADC.ATTN_11DB) # ขยายช่วงแรงดันไฟฟ้า (0 - 3.6V)
adc.width(ADC.WIDTH_12BIT) # ตั้งค่าความละเอียดเป็น 12 บิต
# การตั้งค่า I2C และจอ OLED
i2c = I2C(0, scl=Pin(22), sda=Pin(21)) # SCL ที่ขา 22, SDA ที่ขา 21
oled = SSD1306_I2C(128, 64, i2c) # จอ OLED ขนาด 128x64
while True:
# อ่านค่า ADC จากขาเซ็นเซอร์
sensor_reading = adc.read()
print("ADC reading =", sensor_reading)
# แปลงค่า ADC เป็นแรงดันไฟฟ้า
analog_voltage = sensor_reading * 3.3 / 4095
print("Voltage reading =", analog_voltage)
# เริ่มการวาดผลลัพธ์บนจอ OLED
oled.fill(0) # ล้างหน้าจอ
# แสดงข้อความ ADC reading
oled.text("ADC reading", 10, 0)
# แสดงค่าที่อ่านได้เป็นเลขฐานสอง
oled.text("BINARY", 10, 10)
oled.text(bin(sensor_reading)[2:], 10, 20) # แปลงค่าเป็นเลขฐานสอง
# แสดงค่าที่อ่านได้เป็นเลขฐานสิบ
oled.text("DECIMAL", 80, 10)
oled.text(str(sensor_reading), 80, 20) # แสดงค่าเป็นเลขฐานสิบ
# เส้นแบ่ง
oled.setTextColor(BLACK,WHITE)
# แสดงค่าแรงดันไฟฟ้า
oled.text("VOLTAGE", 30, 40)
oled.text("{:.2f} V".format(analog_voltage), 35, 50) # แสดงค่าแรงดันไฟฟ้า
oled.show() # อัพเดทจอภาพ OLED
time.sleep(1) # หน่วงเวลา 1 วินาที