HTG2.club

คุณรู้จัก Arduino กันหรือยัง

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ gapong2512

  • ***
    • กระทู้: 118
เข้ามาปูเสื่อดูอีกคนครับ สนใจอยู่ครับ อยากทราบว่าตอนนี้ บอร์ดมีขายที่ไหนบ้างราคาเท่าไร และถ้าจะหาซื้อทำไงครับ แบบว่าอยู่ต่างจังหวัดครับ
รติวัฒน์ เรือนศรี (ร้านโปรฟิชชิ่ง)
 290/19 ถ.พหลโยธิน ต.หัวเวียง อ.เมือง
 จ.ลำปาง 52000
เบอร์โทร 08-69150733


ออฟไลน์ มาดถาน

  • *
    • กระทู้: 44
ผมก็ไม่ได้เทพอะไรนะครับ พอดีลองซื้อบอร์ดมาเล่นลองเขียนโปรแกรมดูเลยเอามาโพสต์เป็นวิทยาทานเผื่อว่าท่านใดจะเอาไปต่อยอดได้อีก งั้นก็เริ่มเลยรึกันครับ

Pin คืออะไร
ในการใช้งาน Microcontroler หรือเรียกสั้นๆว่า MCU นั้นหลักพื้นฐานก็คือเราใช้ MCU เพื่อควบคุม PORT ต่างๆให้สามารถทำงานได้ตามที่ต้องการนั้นเอง โดยปกติแล้ว PORT 1 PORT นั้นจะสามารถกำหนดให้เป็น INPUT หรือ OUTPUT ก็ได้ครับ โดยที่ MCU ทั่วไปจะกำหนดชื่อ PORT เป็น A,B,C,... ซึ่ง PORT นึงก็จะแบ่งออกเป็น 8 ขา ยกตัวอย่าง PORT A จะประกอบไปด้วย A0-A7 เป็นต้น แต่บอร์ด Arduino นั้นไม่ได้เรียกเป็น PORT แต่ใช้การเรียกในระดับ PIN แทนซึ่งก็แล้วแต่รุ่นว่าจะมี PIN กี่ PIN อย่างรุ่นที่ผมให้ดูรูปคือ MAGA 2560 นั้นมี PIN ทั้งหมด 53 PIN โดย PIN นั้นแบ่งประเภทได้สองแบบคือ
1. แบบอนาล็อก คือสามารถกำหนดการรับหรือส่งค่าได้ตั้งแต่ 0-5V ซึ่งหากเทียบค่าแล้วจะได้เท่ากับ 0-1023 นั้นเอง เช่น 2.5V จะได้ค่า 511 เทียบตามบัญญัติตระยางครับ
2. แบบดิจิตอล คือกำหนดให้มีสองสถานะคือ HIGH (5V) กับ LOW (0V)

ทีนี้หากเราต้องการเริ่มใช้งานบอร์ดเพื่อลองเขียนโปรแกรมในเบื้องต้น ซึ่งเมื่อเราได้บอร์ดมาแล้ว ให้ทำการโหลดตัวพัฒนาซึ่งสามารถหาได้จาก arduino.cc ครับ ล่าสุดที่ผมเขียนบทความนี้คือ 1.0.3 ครับ จากนั้นแตกไฟล์ที่ได้จะเห็นโฟลเดอร์ชื่อว่า driver ให้เราเสียบบอร์ดกับ USB ของคอมพิวเตอร์ให้เรียบร้อย จากนั้นให้ติดตั้ง driver ผ่านโฟลเดอร์ดังกล่าวครับ ซึ่งมีครบทุกรุ่นแน่นอน

โปรแกรมแรก
เบื้องต้นอยากให้ทุกท่านทราบว่าใน PIN หมายเลข 13 นั้นจะต่อกับ LED บนบอร์ดอยู่แล้ว เราสามารถลองเขียนโปรแกรมแรกเพื่อทดสอบการทำงานของบอร์ดได้จาก PIN 13 ได้เลยครับ
void setup()
{
  //กำหนดให้ PIN หมายเลข 13 เป็นประเภท OUTPUT
  pinMode(13,OUTPUT);
}
void loop()
{
  //ให้ PIN ที่ 13 มีสถานะเป็น HIGH ในที่นี้คือจะมีแรงดัน 5V ออกมาที่ PIN ฉะนั้น LED จะติด
  digitalWrite(13,HIGH);
  //ให้รอเป็นเวลา 1 วินาที โดยที่ 1000 มีค่าเท่ากับ 1 วินาทีครับ
  delay(1000);
  //ให้ PIN ที่ 13 มีสถานะเป็น LOW ในที่นี้คือจะมีแรงดัน 0V ออกมาที่ PIN ฉะนั้น LED จะดับ
  digitalWrite(13,LOW);
  //รอ 1/2 วินาที
  delay(500);
}

จะเห็นว่าเบื้องต้นหากเราต้องการเขียนโปรแกรม Arduino นั้นจะต้องบังคับให้มี Function อย่างน้อยสองฟังก์ชั่นนี้นะครับ ซึ่ง Arduino จะเริ่มทำงานที่ setup() ก่อนหลังจากนั้นเมื่อพ้นเครื่องหมายปีกาปิด } มันถึงจะไปทำ loop() ต่อ และเมื่อโปรแกรมทำจนสิ้นสุดเครื่องหมายปีกาปิดของ loop() แล้วมันจะทำการเีรียกฟังก์ชั่น loop() ตัวเองต่อไปไม่มีที่สิ้นสุดครับ

งวดหน้ามาว่ากันต่อครับ ลองซื้อบอร์ดมาลองเีขียนกันก่อนนะครับ ลองแปลงโปรแกรมเล่นๆดูก่อนได้ครับ

ดูๆแล้วรู้สึกจะเขียนง่ายกว่า PIC MCS เยอะเลยน่ะครับ พอจะมีหนังสือแนะนำไหมครับ ขอบคุณครับสำหรับตัวอย่างโปรแกรมครับ  :good :good :good :good :good :good :good


ออฟไลน์ ออดิโอแมน

  • Superstar...
  • ****
    • กระทู้: 5,015
    • เพศ:ชาย

ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
เพิ่มเติม

คำสั่ง pinMode เป็นคำสั่งที่กำหนดประเภทให้ PIN โดยรูปแบบในการใช้งานมีดังนี้

pinMode([PIN number], [OUTPUT หรือ INPUT]);

ตัวอย่าง

pinMode(5,OUTPUT);
pinMode(4,INPUT);

คำสั่ง digitalWrite คือคำสั่งที่กำหนดให้ PIN ในแบบดิจิตอลมีค่าเป็น LOW หรือ HIGH รูปแบบมีดังนี้

digitalWrite(([PIN number], [HIGH หรือ LOW]);

ตัวอย่าง

digitalWrite(5,HIGH);
digitalWrite(4,LOW);
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
ผมก็ไม่ได้เทพอะไรนะครับ พอดีลองซื้อบอร์ดมาเล่นลองเขียนโปรแกรมดูเลยเอามาโพสต์เป็นวิทยาทานเผื่อว่าท่านใดจะเอาไปต่อยอดได้อีก งั้นก็เริ่มเลยรึกันครับ

Pin คืออะไร
ในการใช้งาน Microcontroler หรือเรียกสั้นๆว่า MCU นั้นหลักพื้นฐานก็คือเราใช้ MCU เพื่อควบคุม PORT ต่างๆให้สามารถทำงานได้ตามที่ต้องการนั้นเอง โดยปกติแล้ว PORT 1 PORT นั้นจะสามารถกำหนดให้เป็น INPUT หรือ OUTPUT ก็ได้ครับ โดยที่ MCU ทั่วไปจะกำหนดชื่อ PORT เป็น A,B,C,... ซึ่ง PORT นึงก็จะแบ่งออกเป็น 8 ขา ยกตัวอย่าง PORT A จะประกอบไปด้วย A0-A7 เป็นต้น แต่บอร์ด Arduino นั้นไม่ได้เรียกเป็น PORT แต่ใช้การเรียกในระดับ PIN แทนซึ่งก็แล้วแต่รุ่นว่าจะมี PIN กี่ PIN อย่างรุ่นที่ผมให้ดูรูปคือ MAGA 2560 นั้นมี PIN ทั้งหมด 53 PIN โดย PIN นั้นแบ่งประเภทได้สองแบบคือ
1. แบบอนาล็อก คือสามารถกำหนดการรับหรือส่งค่าได้ตั้งแต่ 0-5V ซึ่งหากเทียบค่าแล้วจะได้เท่ากับ 0-1023 นั้นเอง เช่น 2.5V จะได้ค่า 511 เทียบตามบัญญัติตระยางครับ
2. แบบดิจิตอล คือกำหนดให้มีสองสถานะคือ HIGH (5V) กับ LOW (0V)

ทีนี้หากเราต้องการเริ่มใช้งานบอร์ดเพื่อลองเขียนโปรแกรมในเบื้องต้น ซึ่งเมื่อเราได้บอร์ดมาแล้ว ให้ทำการโหลดตัวพัฒนาซึ่งสามารถหาได้จาก arduino.cc ครับ ล่าสุดที่ผมเขียนบทความนี้คือ 1.0.3 ครับ จากนั้นแตกไฟล์ที่ได้จะเห็นโฟลเดอร์ชื่อว่า driver ให้เราเสียบบอร์ดกับ USB ของคอมพิวเตอร์ให้เรียบร้อย จากนั้นให้ติดตั้ง driver ผ่านโฟลเดอร์ดังกล่าวครับ ซึ่งมีครบทุกรุ่นแน่นอน

โปรแกรมแรก
เบื้องต้นอยากให้ทุกท่านทราบว่าใน PIN หมายเลข 13 นั้นจะต่อกับ LED บนบอร์ดอยู่แล้ว เราสามารถลองเขียนโปรแกรมแรกเพื่อทดสอบการทำงานของบอร์ดได้จาก PIN 13 ได้เลยครับ
void setup()
{
  //กำหนดให้ PIN หมายเลข 13 เป็นประเภท OUTPUT
  pinMode(13,OUTPUT);
}
void loop()
{
  //ให้ PIN ที่ 13 มีสถานะเป็น HIGH ในที่นี้คือจะมีแรงดัน 5V ออกมาที่ PIN ฉะนั้น LED จะติด
  digitalWrite(13,HIGH);
  //ให้รอเป็นเวลา 1 วินาที โดยที่ 1000 มีค่าเท่ากับ 1 วินาทีครับ
  delay(1000);
  //ให้ PIN ที่ 13 มีสถานะเป็น LOW ในที่นี้คือจะมีแรงดัน 0V ออกมาที่ PIN ฉะนั้น LED จะดับ
  digitalWrite(13,LOW);
  //รอ 1/2 วินาที
  delay(500);
}

จะเห็นว่าเบื้องต้นหากเราต้องการเขียนโปรแกรม Arduino นั้นจะต้องบังคับให้มี Function อย่างน้อยสองฟังก์ชั่นนี้นะครับ ซึ่ง Arduino จะเริ่มทำงานที่ setup() ก่อนหลังจากนั้นเมื่อพ้นเครื่องหมายปีกาปิด } มันถึงจะไปทำ loop() ต่อ และเมื่อโปรแกรมทำจนสิ้นสุดเครื่องหมายปีกาปิดของ loop() แล้วมันจะทำการเีรียกฟังก์ชั่น loop() ตัวเองต่อไปไม่มีที่สิ้นสุดครับ

งวดหน้ามาว่ากันต่อครับ ลองซื้อบอร์ดมาลองเีขียนกันก่อนนะครับ ลองแปลงโปรแกรมเล่นๆดูก่อนได้ครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ อวยพร

  • *****
    • กระทู้: 893
    • เพศ:ชาย
รอเทพๆมาสอนให้เล่นอยู่ครับ อิอิ ผมดอง mega2560 ไว้อยู่บอร์ดนึงแล้วครับ ทำอะไรเล่นสะดวกดี  d_d


ออฟไลน์ aphiphot

  • Super Star.
  • **
    • กระทู้: 2,814
    • เพศ:ชาย
  • คุณพ่อขาอย่ามัวแต่ D.I.Y.จนลืมหนูนะคะ
เห็นเอาไปทำอากาศยานขึ้นลงทางดิ่งแบบMulti Rotorกันเยอะเหมือนกันนะครับ คำสั่งใช้เหมือนภาษาซีหรือเปล่าครับ
ข้อมูลส่วนตัวครับ==>> 
นายอภิภช เจริญกิจ
270 ม.3 ต.เนินทราย อ.เมือง จ.ตราด 23000
eptrattc@hotmail.co.th
Tel.08186220-เจ็ด-หนึ่ง
Line id: aphiphot


ออฟไลน์ Goda Takeshi

  • *****
    • กระทู้: 656
    • เพศ:ชาย
ผมเกือบจะซื้อตอนนัฐพงษ์ลดประจำปี แต่บอร์ดมันไม่ได้อยู่ในโปรเลยไม่ได้ซื้อ ว่าจะสั่งจาก ebay มาลองเล่นดูเหมือนกันครับ


ออฟไลน์ มาดถาน

  • *
    • กระทู้: 44
เคยได้ยินมาครับ รู้สึกว่าฝรั่งจะใช้ตัวนี้เยอะน่ะครับ


ออฟไลน์ Ratto

  • ***
    • กระทู้: 204
    • เพศ:ชาย
  • Give and take
น่าสนใจนะครับ น่าเอามาลองทำดูบ้าง ปูสื่อนั่งรอดูตอนถัดไปครับ  :kicking
ข้อมูลส่วนตัว
http://www.htg2.net/index.php?topic=69318.0


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
ส่งรูปใหม่ (มันไม่ยอมมา)
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
รูปตัวอย่างบอร์ด Arduino ของผมครับ อันนี้เป็นรุ่น Mega 2560 ครับ จัดว่าเป็นรุ่นใหญ่ของ Arduino เลยและมีพอร์ตค่อนข้างมากครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
พื้นฐานไมโครคอนโทรลเลอร์ด้วย Arduino
ไมโครคอนโทรลเลอร์คืออะไร
ไมโครคอนโทรลเลอร์ คือ อุปกรณ์ที่มีหน่วยประมวลผลและความจำขนาดเล็กภายในตัวเอง สามารถรับ-ส่ง ข้อมูลได้ทั้งแบบดิจิตอลและอนาล็อก ใช้พลังงานน้อย ทำให้เป็นที่นิยมในการใช้งานในรูปแบบที่เรียกว่า Embedded เช่น เครื่องใช้ไฟ้าอัจฉริยะทั้งหลาย

Arduino คืออะไร
Arduino (อ่านว่า อา-ดู-อิ-โน่ หรือจะเรียกว่า อาดุยโน่ ก็ได้) คือ ไมโครคอนโทรลเลอร์ ชนิดหนึ่ง ซึ่งเป็นแบบที่เรียกว่า Open Hardware กล่าวคือ Arduino อุปกรณ์ที่มีแบบส่วนป...ระกอบเป็นมาตรฐานที่เปิดเผย หมายความว่า เราสามารถทำเองโดยใช้แบบที่มีการเปิดเผยทั่วไปก็ได้ หรือสามารถซื้อหาได้ง่าย มีราคาถูก มีซ๊อพต์แวร์ให้ใช้งานฟรี สามารถนำไปใช้งานทั่วไปหรือแบบธุรกิจได้โดยไม่ต้องเสียค่าลิขสิทธิ์ เป็นรูปแบบที่มีข้อมูลมากที่สุดบนอินเตอร์เน็ต การพัฒนาก็ง่าย เพราะมีตัวอย่างมากมาย และไม่ต้องเขียนโปรแกรมในรูปแบบ Low Level หมายความว่า เราสามารถใช้คำสั่งเขียนโปรแกรมได้เสมือนโปรแกรมภาษาชั้นสูงทั่วไป

แนวทางประยุกต์ใช้
- เปิดปิดเครื่องใช้ไฟฟ้าผ่าน Serial port หรือ USB
- ทำไฟวิ่งหลายรูปแบบ
- วงจรหน่วงเวลาสำหรับป้องกันลำโพง
- ทำ Display บอกสถานะต่างๆเช่นแรงดันตกคร่อมเครื่องเสียงของเรา
- หุ่นยนต์
- CNC
- โอ้ย...อีกเยอะ

วิธีการเขียน Arduino เบื้องต้น
กำหนดฟังก์ชั่นขึ้นมาสองตัวคือ
void setup()
{
}
void loop()
{
}
ซึ่ง setup() เป็นเหมือนกับ Constructor ของคลาสไว้สำหรับกำหนดค่าเบื้องต้นในครั้งแรกให้กับตัวแปรต่างๆหรือเป็นการกำหนด pinMode ให้เป็น OUTPUT หรือ INPUT
ส่วน loop() จะเป็นส่วนของโปรเซสที่เราต้องการให้ทำงาน โดยที่เมื่อทำงานจนถึง } (ปีกาปิด) แล้วมันจะย้อนกลับขึ้นไปทำงานที่ { (ปีกาเปิด) ใหม่อีกครั้งเป็น loop ที่ทำงานไม่มีวันจบ

วันหลังผมมาต่อเรื่องพื้นฐานของ Pin และคำสั่งเบื้องต้นครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว