from machine import Pin, I2C
import ssd1306
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
ADC = 15; // ขา ADC ที่เชื่อมต่อกับเซ็นเซอร์
sensor_reading = 0; // ตัวแปรสำหรับเก็บค่าที่อ่านจาก ADC
double analog_voltage; // ตัวแปรสำหรับเก็บค่าที่แปลงจาก ADC เป็นโวลต์
// กำหนดการตั้งค่าของจอ OLED ขนาด 128x64 พิกเซล
Adafruit_SSD1306 display(128, 64, &Wire, -1);
void setup() {
Serial.begin(115200); // เริ่มต้นการสื่อสารผ่าน Serial
// เริ่มต้นจอ OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // หยุดการทำงานถ้าไม่สามารถเริ่มจอได้
}
display.clearDisplay(); // ล้างจอ
display.setTextColor(WHITE); // ตั้งค่าสีข้อความเป็นสีขาว
}
void loop() {
// อ่านค่า ADC จากขาเซ็นเซอร์
sensor_reading = analogRead(ADC_pin);
Serial.print("ADC reading = ");
Serial.println(sensor_reading);
// แปลงค่า ADC เป็นแรงดันไฟฟ้า (โวลต์)
analog_voltage = sensor_reading * 3.3 / 4095;
Serial.print("Voltage reading = ");
Serial.println(analog_voltage);
// เริ่มต้นการแสดงผลบนจอ OLED
display.setTextSize(1); // กำหนดขนาดข้อความ
display.setTextColor(BLACK, WHITE);
display.setCursor(0,0); // ตั้งตำแหน่งข้อความ
display.print(" ADC reading "); // แสดงข้อความ
display.drawRect(0, 8, 80, 21, WHITE); // วาดกรอบรอบข้อความ
display.setTextColor(WHITE);
display.setCursor(18,10); // ตำแหน่งแสดงผลเลขฐานสอง
display.println("BINARY");
display.setCursor(4,20);
display.println(sensor_reading, BIN); // แสดงค่าที่อ่านได้ในรูปแบบเลขฐานสอง
display.drawRect(79, 8, 49, 21, WHITE); // กรอบสำหรับข้อความ Decimal
display.setCursor(82,10);
display.println("DECIMAL");
display.setCursor(85,20);
display.println(sensor_reading); // แสดงค่าที่อ่านได้ในรูปแบบเลขฐานสิบ
// แสดงค่าแรงดันไฟฟ้าที่แปลงได้
display.setTextSize(1);
display.setTextColor(BLACK, WHITE);
display.setCursor(0,35);
display.print(" VOLTAGE ");
display.drawRect(0, 34, 128, 30, WHITE);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(28,45);
display.print(analog_voltage); // แสดงค่าแรงดันไฟฟ้า (โวลต์)
display.setTextSize(2);
display.setCursor(90,45);
display.print("V");
display.display(); // อัพเดทข้อมูลบนจอ
Serial.println();
delay(1000); // หน่วงเวลา 1 วินาที
}
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text('Hello, Wokwi!', 10, 10)
oled.show()