ติดต่อผู้เขียน

บทความนี้ กล่าวถึง arduino uno เป็นส่วนใหญ่ โดยพัฒนาผ่าน windows

ท่านสามารถติดต่อผู้เขียนได้ โดยผ่านทาง niran@flowco.co.th
หรือ https://www.facebook.com/kongimi

วันพุธที่ 6 สิงหาคม พ.ศ. 2557

ทดลอง I/O port

สวัสดีครัชพี่น้อง

  วันนี้ได้ทดลองเล่น arduino uno โดยควบคุม I/O port ตามปกติ ง่ายๆทั่วไป
  โดยเอามาต่อกับ Isolate Relay สำเร็จรูป ดังรูป


รูปที่ 1 ต่อ Isolate Relay กับ Arduino

โดยบอร์ด Relay ที่ซื้อมานี้ จะแสดงผล LED ให้สว่างเมื่อมีการสั่ง on Relay และไม่สว่างเมื่อ off ทำให้สังเกตได้ง่ายว่า Relay ทำงานอยู่หรือไม่

 และได้เขียน code ต่อไปนี้

int Relay1 = 12;
int Relay2 = 13;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
รูปที่ 2 Relay ทำงานปกติ

ก็สามารถสั่งงานได้ปกติ เมื่อต่อ vcc 5V
ด้วยความนึกสนุก ลองใช้ vcc 3.3V แทน ก็สั่งงานได้เหมือนกัน แต่รู้สึกเหมือนว่าจะสั่งงานได้ช้ากว่า 5V นิดหน่อย เพราะว่าเสียงของ Relay ที่เปิด/ปิด ฟังได้ชัดเจนว่า เปิด/ปิด ไม่พร้อมกัน ไม่เหมือน 5V เปิด/ปิด พร้อมกันเป๊ะ

และเหลือบไปเห็น port A0-A5 ซึ่งเป็น port Analog to Digital (แปลงสัญญาณจาก Analog เป็น Digital)
ก็คิดว่าเราสามารถนำมาใช้เป็น I/O port ตามปกติได้หรือไม่
ทดลองครั้งแรก ปรากฎว่าใช้งานไม่ได้ :(
ก็เลยไป search หาข้อมูลจากอากู๋ ดู (http://forum.arduino.cc/index.php/topic,158910.0.html) ได้ผลว่าจริงๆแล้วเราต้องสั่งงานที่ขา 18, 19 ไม่ใช่ 27, 28 ซึ่งก็ยังไม่เข้าใจอยู่ดีว่าทำไมถึงเป็น pin 18,19 ท่านใดรู้ช่วยตอบหน่อยนะคร้าบบบ
รูปที่ 3 ต่อ Relay กับขา 18,19
int Relay1 = 18;
int Relay2 = 19;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น