วันจันทร์ที่ 9 พฤษภาคม พ.ศ. 2559

ใช้มาโครใน Arduino IDE

การเขียนโปรแกรมสิ่งที่ต้องคำนึง คือ ประโยชน์การใช้งานตรงตามผู้ใช้ต้องการ, โปรแกรมทำงานอย่างรวดเร็วเหมาะสมกับระบบ และความสวยงามของซอร์สโค้ดที่ทำให้อ่าน และแกไขได้ง่าย คนทำงานต่อสะดวกรวดเร็ว

ในบทความนี้จึงยกตัวอย่างการใช้ มาโคร ในส่วนการกำหนด #define ทำให้โปรแกรมดูสวยงาม และอ่านแล้วสื่อความหมายมากกว่าปกติ (แต่บางคนอาจจะงงได้ หากไม่เข้าใจหลักการ)

ตัวอย่างการเขียนมาโครในภาษา C



#define ON HIGH
#define OFF LOW
#define _LED(x) digitalWrite(ledPin, x)

int pirPin = 2; 
int ledPin = 9;

void setup(){
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  int pirVal = digitalRead(pirPin);
  if(pirVal == LOW){ //was motion detected
    _LED(ON);  
    delay(1000); 
  }else{
    _LED(OFF); 
  }
}

จากโค้ดข้างบน 2 บรรทัดแรก คือ การกำหนดค่าตัวแปรคงที่ ON เก็บค่า HIGH และ OFF เก็บค่า LOW
บรรทัดต่อมา เป็นคำสั่ง มาโครโดยกำหนดชื่อเป็น _LED(x) รับค่าพารามิเตอร์ x และมีคำสั่งให้เขียนค่า x ลงไปใน ledPin ซึ่งเป็นตัวแปรที่จะกำหนดในบรรทัดด้านล่าง

คำสั่ง digitalWrite(ledPin, x) เป็นคำสั่งของมาโคร เพื่อให้ส่งเอาท์พุทไปขาที่ต่อ LED โดยนำเอาค่า x ที่รับมาอีกทีหนึ่งเป็นค่าส่งไปยังขา LED

โดยคำสั่ง _LED(ON) และ _LED(OFF) ก็เหมือนกับเขียนคำสั่ง

_LED(ON); // เหมือนกับ digitalWrite(ledPin, HIGH);
_LED(OFF); // เหมือนกับ digitalWrite(ledPin, LOW);

จากตัวอย่างข้างต้นจะเห็นได้ว่า โปรแกรมจะสื่อความหมายได้ง่าย แต่อย่างไรก็ตามหากคนที่ไม่เข้าใจเมื่อมาดูแล้วอาจจะสงสัยได้ ดังนั้นสิ่งที่สำคัญประการหนึ่งในการเขียนโปรแกรม คือ คู่มือสำหรับการเรียนรู้ของคนอื่นๆ ที่จะเข้ามาดูแลต่อ หรือช่วยกันทำงาน

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

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

Driver สำหรับ USB UART TTL

https://drive.google.com/open?id=0B80EqvaAGSB8dU9EMXdwQmJCLVE