การอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย Arduino UNO R3 อ่านค่าอุณหภูมิ บนจอ Oled0.96



 การอ่านค่าจากเซ็นเซอร์ DS18B20  ด้วย Arduino UNO R3 อ่านค่าอุณหภูมิ บนจอ Oled0.96

Arduino UNO R3: เป็นบอร์ดไมโครคอนโทรลเลอร์ที่นิยมใช้สำหรับงานอิเล็กทรอนิกส์พื้นฐาน

อุปกรณ์ที่จำเป็น

1.บอร์ด Arduino UNO R3

2.จอ oled0.96

3.Breadboard (ถ้ามี)

4.สาย Jumper

5.ตัวต้านทาน 4.7kΩ

6.เซ็นเซอร์ DS18B20

7.แหล่งจ่ายไฟ (ถ้าไม่ใช้จาก Arduino power) usb ต่อคอมพิวเตอร์


จอ OLED 0.96 นิ้ว เป็นจอแสดงผลขนาดเล็กที่นิยมใช้ในอุปกรณ์อิเล็กทรอนิกส์ต่าง ๆ 

เช่น นาฬิกาอัจฉริยะ, เซ็นเซอร์, และอุปกรณ์ IoT เนื่องจากมีขนาดกะทัดรัด 

ใช้พลังงานน้อย และให้ภาพที่คมชัด สีสันสดใส


OLED คืออะไร?

OLED ย่อมาจาก Organic Light-Emitting Diode หมายถึงไดโอดที่ปล่อยแสงได้เอง 

เมื่อมีกระแสไฟฟ้าไหลผ่าน โดยใช้วัสดุอินทรีย์เป็นส่วนประกอบหลัก


หลักการทำงาน

พิกเซล: จอ OLED ประกอบด้วยพิกเซลเล็กๆ จำนวนมาก เมื่อมีการส่งสัญญาณไฟฟ้าไปยังพิกเซลนั้น 

พิกเซลก็จะเปล่งแสงออกมาได้เอง 

สี: แต่ละพิกเซลสามารถควบคุมความสว่างได้อิสระ ทำให้สามารถแสดงสีต่าง ๆ ได้หลากหลาย 

โดยการผสมสีหลักคือ แดง เขียว และน้ำเงิน (RGB)

ไม่มีแบ็คไลท์: จุดเด่นของ OLED คือไม่จำเป็นต้องใช้แสงแบ็คไลท์เหมือนจอ LCD ทำให้สีดำมีความดำสนิท

และใช้พลังงานน้อยกว่า


เชื่อมต่อ Oled 0.96 กับ Arduino  UNO R3

Vin ---------------> 5V

GND ---------------> GND

SCL ---------------> SCL  (หรือ A4)

SDA ---------------> SDA  (หรือ A5)


ติดตั้ง ไลบราลี่ที่จำเป็น 

1. Open your Arduino IDE and go to Sketch > Include Library > Manage Libraries

2. Type “SSD1306” in the search box and install the SSD1306 library from Adafruit.

3. Type “GFX” in the search box and install the library.


ขั้นตอนการต่อสาย

DS18B20 -> ARduino unoR3:

VCC     -> +5V 

GND     -> GND 

DQ      -> D2

ต่อ ต้านทาน 4.7kΩ ระหว่าง DQ และ +5V เพื่อใช้เป็น pull-up

เริ่มต้นเขียนโปรแกรม เชื่อมต่อกับ จอ OLED 0.96 ก่อนหรือหลังหรือพร้อมกันก็ได้แล้วแต่ความถนัด 

//Complete Code

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


#include <OneWire.h>  

#include <DallasTemperature.h>  

// ตั้งค่าขาเชื่อมต่อ  

#define ONE_WIRE_BUS 2  

// เริ่มต้น OneWire และ DallasTemperature  

OneWire oneWire(ONE_WIRE_BUS);  

DallasTemperature sensors(&oneWire); 


void setup() {

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  { // Address 0x3D for 128x64

    Serial.println(F("SSD1306 allocation failed"));

    for(;;);

  }

  display.display(); //Display logo

  delay(1000); 

  display.clearDisplay();

}


void loop() { 

  sensors.requestTemperatures(); // ขอค่าอุณหภูมิจากเซ็นเซอร์  

  float tempc = sensors.getTempCByIndex(0); // อ่านค่าที่ได้ (Celsius)    

  float tempf = sensors.getTempFByIndex(0); // อ่านค่าที่ได้ (Celsius)      

  delay(1000);

  display.clearDisplay();

  //oledDisplayHeader();  

  // Pause for 2 seconds

  // Clear the buffer

  display.clearDisplay();  

  display.setTextSize(2);

  display.setTextColor(WHITE);

  display.setCursor(0, 0);   

  display.print("Temperatur");  

  display.setCursor(0, 20);     

  display.print(tempc);    

  display.print(" C");    

  display.setCursor(0, 40);       

  display.print(tempf);    

  display.print(" F");    

  display.display();

}


void  oledDisplayHeader(){

 display.setTextSize(2);

 display.setTextColor(WHITE);

 display.setCursor(0, 0);

 display.setCursor(60,  0);

}

//////////////////////////////////


Relate Link:

https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/


Tags:

Arduino Uno R3,

DS18B20 ,Arduino UNO,“SSD1306”,GFX,SSD1306 library 

ความคิดเห็น