วันพุธที่ 8 กรกฎาคม พ.ศ. 2558

ตอนที่5 มาเริ่มต้นกันเลยดีกว่า

ในบทนี้เราจะมาเริ่มจากการต่อวงจรอย่างง่ายกัน เป็นวงจรควบคุมไฟ LED ครับ ซึ่งเป็นพื้นฐานอย่างดีในการเรียนรู้ Microcontroller กับเจ้า Arduino ครับ
อุปกรณ์ที่ต้องใช้สำหรับการเรียนในบทนี้
1. Arduino Uno R3
2. Protoboard หรือบอร์ดทดลองครับ มันใช้สำหรับออกแบบวงจรที่เป็นต้นแบบ หลังจากที่เราออกแบบเสร็จ แก้โน่นนี่จนพอใจแล้ว ก็นำวงจรนี้ไปใช้งานกับบอร์ดจริงครับ
3. LED 1 ดวง
4. ตัวต้านทาน 220Ω หรือ 330Ω ก็ได้นะครับ
5. สายไฟ


จากนั้นให้ท่านต่อวงจรตามภาพด้านบนนะครับ


ภาพนี้จะทำให้เห็นภาพวิธีการต่อวงจรได้ง่ายกว่า ภาพด้านบนเป็นภาพที่ผมต่อวงจรจริงครับ และที่เห็นในภาพผมเขียนบอกตำแหน่งการวางอุปกรณ์ต่างๆ ลงบน Protoboard ก็เพื่อให้ท่านได้ทำตามไปก่อนนะครับ ซึ่งเดียวผมจะบอกวิธีการ การใช้งาน Protoboard อีกที พอท่านเข้าใจปั๊บ ท่านก็จะสามารถวางอุปกรณ์ที่ตำแหน่งไหนก็ได้ ตามใจชอบเลยครับ แต่ตอนนี้ให้ทำตามไปก่อน

จากนั้นให้ท่านเขียนโปรแกรมตามนี้ครับ

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);  
  delay(1000);         
  digitalWrite(13, LOW);  
  delay(1000);           
}

การเขียนโปรแกรมสำหรับ Arduino นั้นจะมีฟังก์ชั่นหลักๆ อยู่สองฟังก์ชั่นนะครับ ผมขอเขียนคำว่าฟังก์ชั่น เป็น function แบบภาษาอังกฤษดีกว่านะครับ ดูแล้วเข้าท่ากว่า เอาละ มาต่อกัน

Function แรก ก็คือ void setup() {...} ให้ท่านเข้าใจคร่าวๆ ไว้ดังนี้ก่อนนะครับ หลังจากเราพิมพ์คำว่า void setup() เสร็จ แล้วตามด้วยเครื่องหมายปีกกาเปิด ภายในเครื่องปีกกาเปิดจะเป็นคำสั่งเอาไว้สำหรับ กำหนดค่าเริ่มต้นต่างๆ ให้กับ Arduino อย่างเช่น กำหนดขา Digital ให้ใช้สำหรับ Input ข้อมูล หรือ Output ข้อมูล โดยการใช้คำสั่ง pinMode

pinMode(13, OUTPUT) 

จากตัวอย่างบรรทัดด้านบน หมายความว่ากำหนดให้ขาที่ 13 ของ Arduino ใช้สำหรับ OUTPUT ทีนี้แล้วมันจะ OUTPUT ยังไง ก็จะต้องมีอุปกรณ์ OUTPUT มาต่อเข้าที่ขา 13 ที่ได้ประกาศเอาไว้ จากตัวอย่างก็คือใช้ ตัว LED เป็นอุปกรณ์ OUTPUT นอกจากนี้ก็ยังมีอีก อย่างเช่น

Serial.begin(9600)

บรรทัดนี้เป็นการกำหนดค่าเริ่มต้นให้กับ Serial Port หรือ เรียกอีกอย่างว่า RS232 ให้รับส่งข้อมูลระหว่างเครื่องคอมพิวเตอร์ของเรากับเจ้า Arduino ที่ความเร็ว 9600 ตัวเลข 9600 ที่อยู่ภายในวงเล็บเรียกอีกอย่างว่า ความเร็ว Baud ratesตัวเลข Baud rates นี้ไม่ได้มีแค่ 9600 นะครับ ยังมีค่าอื่นๆ อีก ถ้าท่านอยากรู้เพิ่มเติมก็ให้ไปเปิดตาราง RS232 เอานะครับ แต่ตอนนี้ให้เราใช้ 9600 ไปก่อน
หรือ อีกสักตัวอย่าง คือพอเราเปิด Arduino ทำงานปั๊มก็ให้ LED ติดขึ้นมาเลย ก็ให้ใช้คำสั่งนี้

digitalWrite(13, HIGH) 

พอเรากำหนดค่าเริ่มต้นต่างๆ ให้กับ Arduino เสร็จแล้วก็ให้ใส่เครื่องปีกปิดให้เรียบร้อยด้วย ดังตัวอย่าง

void setup() {
  pinMode(13, OUTPUT);
}

อย่างนี้คือเสร็จเรียบร้อย

ต่อมา Function  void loop(){...} ซึ่งเจ้า void loop() จะเริ่มทำงานหลังจากที่ void setup() ทำงานเสร็จแล้ว คราวนี้มาดูตัวอย่างคำสั่งที่อยู่ใน function void loop() กัน

  digitalWrite(13, HIGH);  
  delay(1000);         
  digitalWrite(13, LOW);  
  delay(1000);           

จากตัวอย่าง 4 บรรทัดด้านบน 
บรรทัดแรก digitalWrite(13,HIGH); หมายความว่า สั่งให้ LED ที่ต่ออยู่ที่ขา 13 ของ Arduino สว่าง หรือติดนั่นเอง หรือจะตีความหมายในทางเทคนิคก็ได้นะครับ ความหมายในทางเทคนิคก็คือ สั่งให้ Arduino ปล่อยไฟขนาด 5V. ออกจากขาที่ 13 ซึ่งก็จะทำให้ LED สว่างครับ

บรรทัดที่สอง delay(1000); หมายความว่าให้หยุดอยู่ที่บรรทัดนี้ 1 วินาที แล้วจึงค่อยไปทำงานที่บรรทัดถัดไป แล้วถ้าเราอยากได้มากว่า 1 วินาทีละ ทำอย่างไร ก็เอา 1000 คูณเข้าไปครับ หรืออยากได้ครึ่งวินาทีละ ก็ใส่ 500 เข้าไปครับ

ต่อมาบรรทัดที่สาม อันนี้ง่ายมากทุกท่านนะจะเดาออกนะครับ บรรทัดนี้ก็เหมือนกับบรรทัดแรก เพียงแต่กลับกัน คือจาก LED สว่างอยู่ ก็ให้ดับ หรืออีกความหมายก็คือ Arduino ปล่อยไฟ 0V ออกมาให้นั่นเองครับ

บรรทัดสุดท้าย บรรทัดที่สี่ครับ ทำงานเหมือนกันเลยกับบรรทัดที่สอง

พอทำงานจนถึงบรรทัดสุดท้ายเสร็จแล้ว เจ้า function void loop() เนี่ยมันมีความสามารถพิเศษอยู่อย่างหนึ่งก็คือ มันจะวนกลับขึ้นไปทำงานที่คำสั่ง บรรทัดแรกไล่ลงมาเรื่อยๆ บรรทัดที่สอง... จนถึงบรรทัดที่สี่อีก วนไปอย่างนี้ตลอดครับ นี่แหละที่เค้าตั้งชื่อให้ function นี้ ชื่อว่า loop ก็เพราะสาเหตุนี้แหละครับ

อธิบายเพิ่มอีกสักหน่อยนะครับ เริ่มแรกเลยพอเราจ่ายไฟให้กับ Arduino เจ้า Arduino ก็เริ่มทำงาน มันจะวิ่งไปหาว่า function void setup(){...} อยู่ที่ตรงไหน พอมันเจอปั๊ม มันก็เริ่มทำงาน บรรทัดคำสั่งที่ถัดจากเครื่องหมายปีกกาเปิด ไล่ลงมาเรื่อยๆ บรรทัดที่สอง บรรทัดที่สาม... จนมาเจอเครื่องหมายปีกกาปิด คือสิ้นสุดการทำงานของ function void setup() เจ้า function void setup() นี้ทำงานแค่ครั้งแรก และครั้งเดียวนะครับ ต่อจากนั้นมันก็วิ่งไปทำงานที่ function loop() ต่อ ซึ่งการทำงานภายใน function นี้จะเป็นการทำงานที่ไม่รู้จบ นะครับ

ในเบื้องต้นเราจะใช้แค่สอง function ที่เราจะใช้ในการเขียนโปรแกรมสั่งงาน Arduino ครับ และผมต้องขอบอกอีกอย่างนะครับ เนื่องจากภาษาที่เราใช้โปรแกรม Arduino นี้มาจากภาษา C ซึ่งจะมีกฎเกณฑ์เหมือนกับภาษา C เลยครับ กฎข้อแรกที่ท่านต้องจำเอาไว้ก็คือ การเขียนโปรแกรม Arduino นั้น เวลาที่ท่านพิมพ์ ตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่ มีความสำคัญนะครับ ความหมายคือ ต้องพิมพ์ให้ถูกเปะๆ เลยครับ อย่างเช่น คำสั่ง pinMode(13, HIGH) นี่คือคำสั่งที่ถูกต้อง แต่ถ้าท่านพิมพ์แบบนี้เมื่อไหร่ pinmode(13, high) ผิดเลยทันทีครับ

ซึ่งถ้าท่านอยากมีพื้นฐานที่ดีสักหน่อย ผมขอแนะนำเลยครับ ให้ไปหาหนังสือภาษา C เบื้องต้นมาฝึกครับ ฝึกอย่างไร ก็ฝึกจากการดูตัวอย่างลองเขียนโปรแกรม ศึกษากฎกติกาต่างๆ ที่ภาษาเค้ากำหนดเอาไว้ เบื้องต้นเอาแค่นี้ก่อน แล้วท่านจะไปได้เร็วขึ้นครับ

1 ความคิดเห็น: