สามารถนำวิธีนี้ไปใช้งาน ได้กับหลายๆอย่างหรือทำความเข้าใจได้อีกหลากหลายอุปกรณ์ เช่น ปุ่มของลำโพง บลูทูธ รีโมท โดยใช้เพียงแหล่งจ่าย กับ สายสัญญาณเส้นเดียว
จากภาพด้านบนคือปุ่มกดของชุดลำโพงบลูทูธ ที่ผมถอดออกมา โดยสามารถเขียนเป็นผังวงจรได้ดังด้านล่างนี้อินพุต คือ ไฟบวก 5V
เอาพุต คือ ค่ากระแส ที่แตกต่างกันหลังจากผ่านตัวต้านทาน แต่ละค่า
อธิบาย
อุปกรณ์หลักที่ทำหน้าที่แบ่งให้แต่ละปุ่มกด กดลงแล้วแตกต่างกันคือ ตัวต้านทานโดยหน้าที่หลักของตัวต้านทานก็คือ การต้านทานกระแสไฟฟ้า สามารถจำแนกจากภาพด้านบนของ SW แต่ละตัวได้ดังนี้
- SW1 ไม่มีตัวต้านทาน กระแสมาเท่าไรออกเท่านั้น
- SW2 ตัวต้านทานค่า 820k กระแสที่ออก 0.0000061A
- SW3 ตัวต้านทานค่า 150k กระแสที่ออก 0.00003333A
- SW4 ตัวต้านทานค่า 47k กระแสที่ออก 0.00010638A
- SW5 ตัวต้านทานค่า 12k กระแสที่ออก 0.00041667A
คำนวณจากสูตร I=E/R
I = กระแสที่เราหา
E = ค่าแรงดันไฟฟ้า ของเราที่นี้คือ 5V
R = ค่าความต้านทานของตัวต้านทานแต่ละตัว
จะเห็นว่าเราสามารถคำนวณค่ากระแสออกมาได้ แต่เราไม่สามารถรู้ได้เพราะเป็นค่าทางไฟฟ้า สิ่งที่ใช้คำนวณแยกแยะคือ ไมโครคอนโทรลเลอร์
โดยผมจะยกตัวอย่างโดยใช้ บอร์ด Arduino อ่านค่า analog read ซึ่งค่าที่แสดงออกมาจะมีค่า 0 จนถึง 1024
แนะนำให้ต่อวงจร เพิ่มตัวต้านทานค่า ประมาณ 10k ต่อระหว่าง GND กับ ขา OUT จะทำให้ arduino อ่านค่าได้ครับ
การเข้าเงื่อนไข โปรแกรมสามารถเขียนโค้ดได้ดังนี้
int SWPin = A0;
int SWValue;
void setup() {
SWPin = 0;
Serial.begin(9600);
}
void loop() {
SWValue = analogRead(SWPin);
if(SWValue != 0){
if(SWValue > 1020 && SWValue < 1025)
{
Serial.println(String(SWValue) + " กดปุ่ม SW01");
}
if(SWValue > 500 && SWValue < 520)
{
Serial.println(String(SWValue) + " กดปุ่ม SW02");
}
if(SWValue > 200 && SWValue < 220)
{
Serial.println(String(SWValue) + " กดปุ่ม SW03");
}
if(SWValue > 70 && SWValue < 80)
{
Serial.println(String(SWValue) + " กดปุ่ม SW04");
}
if(SWValue > 10 && SWValue < 20)
{
Serial.println(String(SWValue) + " กดปุ่ม SW05");
}
}
delay(1000);
}
ผลลัพธ์
0 ความคิดเห็น