สอนใช้งาน Arduino UNO รับสัญญาณ AnalogInput จากตัวต้านทานปรับค่าได้ ปรับความสว่างหลอดไฟ LED และแสดงผลค่า Voltage ผ่านจอ LCD

บทความนี้จะสอนใช้งานสอนใช้งาน Arduino UNO รับสัญญาณ AnalogInput จากตัวต้านทานปรับค่าได้หรือที่เรียกกันว่า Volume ให้ปรับความสว่างของหลอดไฟ LED และมีการค่า Voltage ผ่านจอ LCD จะมีวิธีการทำอย่างไรกันนั้น ไปดูกันเลยครับ

แวะอ่านตรงนี้สักหน่อย ⛔

คำสั่ง Analog Read();

int Sensor_Value = analogRead (pin);
pin คือขา Analog -ของ Arduino ที่ต้องการอ่านค่า
Sensor_Value หมายถึง ตัวแปร int สำหรับเก็บค่า สัญญาณ analog มีค่า 0-1023 ที่ขา pin

ตัวอย่างคำสั่ง Analog Read 

int val = analogRead (A0);

ต้องการอ่านค่า ขา Analog A0 เก็บในตัวแปรชื่อ val

ค่าที่อ่านได้จาก analogRead(); คือช่วง 0-1023
ส่วนค่าที่สั่งให้แสดงผลจาก analogWrite(); คือช่วง 0-255

ดังนั้น “เราจึงไม่สามารถนำค่าช่วง 0-1023 ไปแสดงผลในช่วง 0-255 ได้”
จะต้องมีการคำนวนก่อน เช่น นำค่าที่อ่านได้ 1023 ไปหาร 4 เพื่อให้ได้ค่า 255 แต่มีอีกวิธีที่แนะนำ จะง่ายกว่าคำนวนเอง ใน Arduino รู้ถึงปัญหาการแปลงข้อมูลไปกลับนี้ จึงมีฟังก์ชั่น map ออกมาช่วย

คำสั่ง map

map(value, fromLow, fromHigh, toLow, toHigh);

value คือ ค่าที่ต้องการคำนวน
fromLow คือ ช่วงที่รับมาค่าต่ำสุด
fromHig คือ ช่วงที่รับมาค่าสูงสุด
toLow คือ ช่วงที่ต้องการแปลง ค่าต่ำสุด
toHigh คือ ช่วงที่ต้องการแปลง ค่าสูงสุด

ตัวอย่างคำสั่ง ต้องการแปลงค่าของ Data ซึ่งมาจากช่วง 0-1023 ให้เป็นช่วง 0-255 เก็นไว้ในตัวแปร outputValue

int outputValue = 0;

int analog_value = analogRead(A0);

outputValue = map(analog_value, 0, 1023, 0, 255);

อุปกรณ์ที่ต้องใช้

  1. Arduino UNO R3 board + USB CABLE
  2. ตัวต้านทานปรับค่าได้ 5K Ω
  3. จอLCD 20×4
  4. สาย Jumper 20 cm Male to Male
  5. บอร์ดทดลอง – 400 จุด
  6. LED สีแดง
  7. ตัวต้านทาน 330 Ω

หมายเหตุ หลอด LED กับตัวต้านทาน ขึ้นอยู่กับผู้ใช้ว่าจะสีอะไร และตัวต้านทานกี่โอห์ม ศึกษาเพิ่มเติม → คลิก

การต่อวงจร

LCD  ⇒  Arduino UNO

SDA    →   SDA

SCL     →   SCL

VCC    →    5V

GND   →    GND

Volume    ⇒  Arduino UNO

ขา กลาง   →    Pin A0

ขา ซ้าย     →    5V

ขา ขวา      →    GND

LED    ⇒  Arduino UNO

ขา + (ยาว)     →    Pin 9

ขา –  (สั้น)      →    GND

การติดตั้งโปรแกรม Arduino IDE  →  คลิก

ทำความรู้จักกับ บอร์ด ARDUINO UNO R3  →  คลิก

การใช้งาน LCD 20×4 พร้อม I2C Interface กับบอร์ด Arduino UNO  →  คลิก

สอนการติดตั้ง Library สำหรับโปรแกรม Arduino IDE  →  คลิก

ตัวอย่างโค้ด

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

float input_voltage = 0.0;
int outputValue = 0;
int LED_Pin = 9;

void setup()
{
Serial.begin(9600);
lcd.begin();
}
void loop()
{
int analog_value = analogRead(A0);
outputValue = map(analog_value, 0, 1023, 0, 255);
input_voltage = (analog_value * 5.0) / 1024.0;
analogWrite(LED_Pin, outputValue);

if (input_voltage < 0.1)
{
input_voltage=0.0;
}
Serial.print(“v= “);
Serial.println(input_voltage);
lcd.setCursor(0, 0);
lcd.print(“DIGITAL VOLTMETER”);
lcd.setCursor(2, 1);
lcd.print(“Voltage = “);
lcd.print(input_voltage);
lcd.setCursor(16, 1);
lcd.print(” V”);
delay(2);
}

ดาวน์โหลดโค้ด  → คลิก

เมื่ออัพโหลดโค้ดลงบอร์ดเรียบร้อยแล้วเมื่อทำการทดสอบจะได้ผลดังรูป

ยังไงก็ลองเอาไปปรับใช้กับงานของเพื่อน ๆ ดูนะครับ

Banner Content

0 Comments

Leave a Comment