HTG2.club

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

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

ออฟไลน์ XMan

  • E29CRZ
  • ****
    • กระทู้: 416
    • รับออกแบบแผ่น PCB สนใจติดต่อมาได้เลยครับ
เทียบกับตอนเล่น MCS51 กับ PIC แล้ว ทำให้ชีวิตง่ายขึ้นเยอะเลยครับ
   :) คิดถึง8051 เเล้วน้ำตาจะไหล ตอนทำโปรเจคใช้ arduino นี่เเหละครับ เเต่เวลาไป set ค่า timer ในregister ของมันเองก็ต้องกลับเขียนคล้ายๆ51 เหมือนเดิม  ;D
 :drunk

ใช่ครับ ใช้งานแบบทั่วไปจะเหมาะมากสำหรับ Arduino แต่กับงานบางอย่่างที่ต้องเกี่ยวกับ Interupt ผมว่าพวกที่เขียนเองโต้งๆ อย่างเช่น 51 หรือ PIC ง่ายกว่า ไม่อ้อมค้อมดีครับ



    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 


ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า



SIM900 ส่วนใหญ่เอามาส่ง SMS ครับ แต่เรื่องโทรออกไม่แน่ใจ ถ้าโทรได้หล่ะเยี่ยมเลยครับ

SIM900 เฉพาะโมดูลมันไม่แพงอย่างที่คิดครับ  ;D ราคาหารสามกว่าของที่ทำสำเร็จเลยครับ

คิดว่าจะซื้อแน่ ชี้เป้าหน่อยครับ  :clap



ลองดูที่นี่ครับ
http://www.es.co.th/search.asp?Word=gsm&PC=056005&Mode=2&tb=&stk=&pb=&view=Selection&pic=checked
You can make it by your self
If you try it again!!!

รับออกแบบแผ่น PCB
รับติดตั้งและออกแบบระบบ Linux/Unix/Windows Server ทั้ง Internet, Firewall, Proxy, DHCP, DNS , ระบบ IP Phone, Call Center
รับเขียนโปรแกรมตามสั่งทุกประเภท


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com
เทียบกับตอนเล่น MCS51 กับ PIC แล้ว ทำให้ชีวิตง่ายขึ้นเยอะเลยครับ
   :) คิดถึง8051 เเล้วน้ำตาจะไหล ตอนทำโปรเจคใช้ arduino นี่เเหละครับ เเต่เวลาไป set ค่า timer ในregister ของมันเองก็ต้องกลับเขียนคล้ายๆ51 เหมือนเดิม  ;D
 :drunk

ใช่ครับ ใช้งานแบบทั่วไปจะเหมาะมากสำหรับ Arduino แต่กับงานบางอย่่างที่ต้องเกี่ยวกับ Interupt ผมว่าพวกที่เขียนเองโต้งๆ อย่างเช่น 51 หรือ PIC ง่ายกว่า ไม่อ้อมค้อมดีครับ



    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 


ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า



SIM900 ส่วนใหญ่เอามาส่ง SMS ครับ แต่เรื่องโทรออกไม่แน่ใจ ถ้าโทรได้หล่ะเยี่ยมเลยครับ

SIM900 เฉพาะโมดูลมันไม่แพงอย่างที่คิดครับ  ;D ราคาหารสามกว่าของที่ทำสำเร็จเลยครับ

คิดว่าจะซื้อแน่ ชี้เป้าหน่อยครับ  :clap

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


ออฟไลน์ XMan

  • E29CRZ
  • ****
    • กระทู้: 416
    • รับออกแบบแผ่น PCB สนใจติดต่อมาได้เลยครับ
เทียบกับตอนเล่น MCS51 กับ PIC แล้ว ทำให้ชีวิตง่ายขึ้นเยอะเลยครับ
   :) คิดถึง8051 เเล้วน้ำตาจะไหล ตอนทำโปรเจคใช้ arduino นี่เเหละครับ เเต่เวลาไป set ค่า timer ในregister ของมันเองก็ต้องกลับเขียนคล้ายๆ51 เหมือนเดิม  ;D
 :drunk

ใช่ครับ ใช้งานแบบทั่วไปจะเหมาะมากสำหรับ Arduino แต่กับงานบางอย่่างที่ต้องเกี่ยวกับ Interupt ผมว่าพวกที่เขียนเองโต้งๆ อย่างเช่น 51 หรือ PIC ง่ายกว่า ไม่อ้อมค้อมดีครับ



    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 


ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า



SIM900 ส่วนใหญ่เอามาส่ง SMS ครับ แต่เรื่องโทรออกไม่แน่ใจ ถ้าโทรได้หล่ะเยี่ยมเลยครับ

SIM900 เฉพาะโมดูลมันไม่แพงอย่างที่คิดครับ  ;D ราคาหารสามกว่าของที่ทำสำเร็จเลยครับ
You can make it by your self
If you try it again!!!

รับออกแบบแผ่น PCB
รับติดตั้งและออกแบบระบบ Linux/Unix/Windows Server ทั้ง Internet, Firewall, Proxy, DHCP, DNS , ระบบ IP Phone, Call Center
รับเขียนโปรแกรมตามสั่งทุกประเภท


ออฟไลน์ เหลาFC

  • ***
    • กระทู้: 182
เทียบกับตอนเล่น MCS51 กับ PIC แล้ว ทำให้ชีวิตง่ายขึ้นเยอะเลยครับ
  :) คิดถึง8051 เเล้วน้ำตาจะไหล ตอนทำโปรเจคใช้ arduino นี่เเหละครับ เเต่เวลาไป set ค่า timer ในregister ของมันเองก็ต้องกลับเขียนคล้ายๆ51 เหมือนเดิม  ;D
 :drunk
« แก้ไขครั้งสุดท้าย: 11 เมษายน, 2013, 02:28:28 pm โดย เหลาFC »


ออฟไลน์ XMan

  • E29CRZ
  • ****
    • กระทู้: 416
    • รับออกแบบแผ่น PCB สนใจติดต่อมาได้เลยครับ
เทียบกับตอนเล่น MCS51 กับ PIC แล้ว ทำให้ชีวิตง่ายขึ้นเยอะเลยครับ
You can make it by your self
If you try it again!!!

รับออกแบบแผ่น PCB
รับติดตั้งและออกแบบระบบ Linux/Unix/Windows Server ทั้ง Internet, Firewall, Proxy, DHCP, DNS , ระบบ IP Phone, Call Center
รับเขียนโปรแกรมตามสั่งทุกประเภท


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com
ผมกำลังลองทำอยู่  เอามาคุมDAC เดี๋ยวถ้าเสร็จจะเอามาให้ดูกันครับ ขอ งมหาความรู้ก่อน

volt amp meter สำหรับมอนิเตอร์สวิตชิ่งเพาเวอร์ซัพพลายครับ


มีเพื่อนเล่นเยอะดีครับ   :clap

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


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com


    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 


ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า



SIM900 ส่วนใหญ่เอามาส่ง SMS ครับ แต่เรื่องโทรออกไม่แน่ใจ ถ้าโทรได้หล่ะเยี่ยมเลยครับ

กำลังหาข้อมูลอยู่ ดู ๆ แล้วน่าจะทำได้ครับ

 K)

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


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

  • *****
    • กระทู้: 893
    • เพศ:ชาย
volt amp meter สำหรับมอนิเตอร์สวิตชิ่งเพาเวอร์ซัพพลายครับ


ออฟไลน์ Withaya

  • Super Star
  • *
    • กระทู้: 1,390
ผมกำลังลองทำอยู่  เอามาคุมDAC เดี๋ยวถ้าเสร็จจะเอามาให้ดูกันครับ ขอ งมหาความรู้ก่อน


ออฟไลน์ Syslox

  • **
    • กระทู้: 55
อ่านๆดูแล้วน่าสนใจดีครับ ต่อยอดได้อีกเยอะเลย สงสัยต้องหามาลองบ้างสักชุด  :clap


ออฟไลน์ Jakaman

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


    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 


ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า



SIM900 ส่วนใหญ่เอามาส่ง SMS ครับ แต่เรื่องโทรออกไม่แน่ใจ ถ้าโทรได้หล่ะเยี่ยมเลยครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com


    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 

ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 

เคยลองเล่นกับ Module GSM ใหมครับ จะทดลองให้มันโทรออก เห็นมีขายอยู่สามพันกว่า

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


ออฟไลน์ Jakaman

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


    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

 

ง่ายกว่า Z80 มากมายครับ เพราะเมื่อเราเขียนแอสแซมบลีเสร็จแล้วต้องมา Complile เป็น Machine code เองทีละบรรทัด แต่อันนี้เขียน C บนคอมพิวเตอร์แล้ว Complie มันก็จะวิ่งเข้าบอร์ดได้เลยครับไม่ยุ่งยาก แถมมี Library เพียบสำหรับการติดต่ออุปกรณ์เพียงรู้วิธีใช้คลาสแค่นั้นเองครับ
 
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com

เจอแล้ว โปรแกรมน่าจะถูกเขียนบนชิพบนบอร์ดเลย  Y]

ท่าทางจะดีนะ สมัยนู้นต้องเขียนเป็นโปรแกรมภาษาที่อ่านยาก ๆ   ;D



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


ออฟไลน์ pisit

  • ผู้สนับสนุน web ......
  • ******
    • กระทู้: 715
    • เพศ:ชาย
    • www.audio-hobby.com


    เวลาใช้งานนี่ ตัวโปรแกรมนี่จะถูกเขียนลงบนบอร์ดเลยรึเปล่าครับ  หรือว่าต้องต่อกับคอมพิวเตอร์ด้วยครับ

    ไม่ได้เล่นมานานแล้วพวกนี้ หลังสุดที่ใช้ Z80   :D

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


ออฟไลน์ Goda Takeshi

  • *****
    • กระทู้: 656
    • เพศ:ชาย
ตั้งแต่ได้ auduino บอร์ดยังไม่ได้แกะออกมาลองเลย แต่ค้นไปค้นมาเจอ module สำหรับ bluetooth เข้าให้แล้ว

http://www.arduino.in.th/product/145/audio-bluetooth-speaker-module-ovc3860


ออฟไลน์ Jakaman

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

 d_d
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jiang

  • ***
    • กระทู้: 110
    • เพศ:ชาย
  • หัวเราะไม่ไหว ยิ้มได้ก็ยังดี
    • http://www.htg2.net/index.php/topic,59030.msg723640.html#msg723640

ออฟไลน์ Mr.so-nE

  • ผู้ดูเวบ (ดูอย่างเดียวทำไรไม่ได้)
  • Super Star.
  • **
    • กระทู้: 2,682
  • 086 7332905

ออฟไลน์ Goda Takeshi

  • *****
    • กระทู้: 656
    • เพศ:ชาย
ของผมเพิ่งมาถึง ยังไม่ได้แกะเลย ไว้งานหายยุ่งจะเอามาหัดเล่นดูครับ


ออฟไลน์ headjoke

  • *
    • กระทู้: 22

ออฟไลน์ Jakaman

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

*ปกติงานผมจะใช้ pic หรือ avr อยู่แล้ว ตอนแรกกะว่าจะเอา arduino มาช่วยลดเวลาในการพัฒนา
หรือเทสไอเดีย แต่ด้วยความขี้เกียจเลยใช้ pic หรือ avr ทำไปเลย  ;D ;D ;D

Arduino มันดีตรงที่มันมี Shield นี่แหละครับ ลดขั้นตอนในการพัฒนา Hardware ไปได้เยอะ มันมี Lib สำหรับเอาไว้เรียกใช้งานง่ายๆเลยครับ ต่างกับ MCU เพียวๆ ยกตัวอย่างถ้าเราจะพัฒนา MCU ให้เป็น Web server มันจะยุ่งยากมากๆ แต่ Arduino ทำบอร์ด Eternet Shield (W5100) ออกมาแล้วเขียนฟังก์ชั่นต่างๆเอาไว้บนบอร์ด เราเพียงเรียกใช้อย่างเดียวทำให้ลดขั้นตอนพัฒนาไปได้เยอะทีเดียว ซึ่งตอนแรกผมทำตัวเปิดปิดเครื่องใช้ไฟฟ้าผ่านอินเตอร์เน็ตใช้เวลาพัฒนาตั้งแต่แกะซองห่อบอร์ดจากไปรษณีย์และไม่มีความรู้เรื่อง Arduino มาก่อนเลย แต่ใช้เวลาเรียนรู้และเขียนจนเสร็จแค่ 1 ชั่วโมงเท่านั้น!! นี่เลยเป็นเหตุผลที่เลิกใช้ PIC และ AVR ไปเลยครับ

ผมเห็นด้วยกับคุณ Jakaman ครับ และขอบคุณสำหรับความรู้ดีๆ ที่แบ่งปันให้กันครับ

ผมขอเสริมในมุมมองของผมนิดนึงครับ เนื่องจากลักษณะงานของผมเป็นงานผลิตสินค้าอิเล็กฯ ตามที่ลูกค้าต้องการ
ราคาจะมีผลต่อการตัดสินใจของลูกค้า ดังนั้นการออกแบบต้องปรับเปลี่ยน mcu ให้เหมาะสมกับราคาที่ลูกค้าต้องการ
ถ้าเป็นลูกค้าที่ต้องการงานด่วน ยอมรับสินค้าในราคาที่สูงกว่าได้ ผมเห็นว่าการใช้ arduino จะเหมาะสมกับเคสนี้เป็นอย่างมาก
แต่ถ้าลูกค้าที่ต้องการราคาต่ำ (มากๆ) การใช้ arduino อาจไม่เหมาะสม ถือว่าเป็นการแลกเปลี่ยนความคิดเห็นกันนะครับ

 K] K] K] โอ้ว...ลืมคิดถึงตรงนี้ไปเลยครับ  :giveup :giveup :giveup
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ headjoke

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

*ปกติงานผมจะใช้ pic หรือ avr อยู่แล้ว ตอนแรกกะว่าจะเอา arduino มาช่วยลดเวลาในการพัฒนา
หรือเทสไอเดีย แต่ด้วยความขี้เกียจเลยใช้ pic หรือ avr ทำไปเลย  ;D ;D ;D

Arduino มันดีตรงที่มันมี Shield นี่แหละครับ ลดขั้นตอนในการพัฒนา Hardware ไปได้เยอะ มันมี Lib สำหรับเอาไว้เรียกใช้งานง่ายๆเลยครับ ต่างกับ MCU เพียวๆ ยกตัวอย่างถ้าเราจะพัฒนา MCU ให้เป็น Web server มันจะยุ่งยากมากๆ แต่ Arduino ทำบอร์ด Eternet Shield (W5100) ออกมาแล้วเขียนฟังก์ชั่นต่างๆเอาไว้บนบอร์ด เราเพียงเรียกใช้อย่างเดียวทำให้ลดขั้นตอนพัฒนาไปได้เยอะทีเดียว ซึ่งตอนแรกผมทำตัวเปิดปิดเครื่องใช้ไฟฟ้าผ่านอินเตอร์เน็ตใช้เวลาพัฒนาตั้งแต่แกะซองห่อบอร์ดจากไปรษณีย์และไม่มีความรู้เรื่อง Arduino มาก่อนเลย แต่ใช้เวลาเรียนรู้และเขียนจนเสร็จแค่ 1 ชั่วโมงเท่านั้น!! นี่เลยเป็นเหตุผลที่เลิกใช้ PIC และ AVR ไปเลยครับ

ผมเห็นด้วยกับคุณ Jakaman ครับ และขอบคุณสำหรับความรู้ดีๆ ที่แบ่งปันให้กันครับ

ผมขอเสริมในมุมมองของผมนิดนึงครับ เนื่องจากลักษณะงานของผมเป็นงานผลิตสินค้าอิเล็กฯ ตามที่ลูกค้าต้องการ
ราคาจะมีผลต่อการตัดสินใจของลูกค้า ดังนั้นการออกแบบต้องปรับเปลี่ยน mcu ให้เหมาะสมกับราคาที่ลูกค้าต้องการ
ถ้าเป็นลูกค้าที่ต้องการงานด่วน ยอมรับสินค้าในราคาที่สูงกว่าได้ ผมเห็นว่าการใช้ arduino จะเหมาะสมกับเคสนี้เป็นอย่างมาก
แต่ถ้าลูกค้าที่ต้องการราคาต่ำ (มากๆ) การใช้ arduino อาจไม่เหมาะสม ถือว่าเป็นการแลกเปลี่ยนความคิดเห็นกันนะครับ


ออฟไลน์ Jakaman

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

คำสั่งภายใน

เป็นคำสั่งหลักที่จำเป็นต้องใช้ เช่นคำสั่งที่ใช้ในการวนลูป หรือ ใช้สำหรับตรวจสอบเงื่อนไขเป็นต้น

คำสั่งแรก for

for นั้นเป็นชนิดในการวนลูป รูปแบบคือ
โค๊ด: [Select]
for(int [ตัวแปร] = [ค่าเริ่มต้น];[ตัวแปร] [<,>] [ค่าสิ้นสุด]; [ตัวแปร] [++,+=,-=])
{
   ....
}

ตัวอย่าง
โค๊ด: [Select]
for(int i=0;i<10;i++)
{
   Serial.println(i);
}

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

แล้วจะใช้เมื่อใด
ผมขอยกตัวอย่างโปรแกรมนี้ครับ

โค๊ด: [Select]
Serial.println(1);
Serial.println(2);
Serial.println(3);
Serial.println(4);
Serial.println(5);
Serial.println(6);
Serial.println(7);
Serial.println(8);
Serial.println(9);
Serial.println(10);

จากโปรแกรมจะเห็นได้ว่าเราต้องการส่งค่าออกไปที่ Serial เป็นจำนวน 10 ครั้งและแต่ละครั้งเป็นเลขที่เรียงกัน ซึ่งเราต้องเขียนโปรแกรมถึง 10 บรรทัดเพื่อใช้ในการส่งค่า แล้วหากเราต้องส่งค่าตั้งแต่ 1-100 หรือ 1-1000 หล่ะ เราไม่ต้องเขียนโค๊ดยาวเยียดเลยใช่หรือไม่ครับ คงพิมพ์กันมือหงิกแน่ งั้นคราวนี้เรามาดูว่าจะใช้ลูปในการแก้ปัญหานี้อย่างไร

โค๊ด: [Select]
for(int i=1;i<=10;i++)
{
   Serial.println(i);  
}

เห็นมะครับ สั้นกว่าเยอะเลย แล้วกรณี 1-1000 หล่ะ โอ้วต้องเขียนโค๊ดยาวขึ้นมั้ย ไม่เลยครับ ลองดูนี่

โค๊ด: [Select]
for(int i=1;i<=1000;i++)
{
   Serial.println(i);  
}

เห็นมะครับ แค่เปลี่ยนจาก 10 เป็น 1000 เท่านี้เอง อยากได้เท่าไหร่ก็ใส่ไปตามนั้น

คราวนี้่ถ้าโจทย์คือให้ส่งค่าไม่เริ่มต้นที่ 1 หล่ะ สมมุติว่าค่าเริ่มตั้งแต่ 5-15 จะเขียนยังไงมาดูครับ

โค๊ด: [Select]
for(int i=5;i<=15;i++)
{
   Serial.println(i);  
}

แค่นี้เองครับ แค่เปลี่ยนตัวเลขเริ่มต้นและสุดท้าย อ่ะโจทย์ใหม่ ถ้าผมต้องการส่งค่าเลขคี่ตั้งแต่ 1-15 โดยให้ส่งเป็นจำนวนคี่คือ 1,3,5,7,9,...15 ทำไงมาดูกัน
โค๊ด: [Select]
for(int i=1;i<=15;i+=2)
{
   Serial.println(i);  
}
ก็เปลี่ยนจากที่ i++ (แปลว่าบวกทีละ 1) เป็นบวกทีละ 2 ก็คือ i+=2 แค่นี้เองครับ ง่ายใช่มั้ยครับ

คราวนี้มาลองโจทย์การนับถอยหลังกันบ้างครับ สมมุติว่าถ้าต้องการนับถอยหลังตั้งแต่ 100-1 ทำไงมาดูกัน

โค๊ด: [Select]
for(int i=100;i>=1;i-=1)
{
   Serial.println(i);  
}

ก็ให้เซ็ตค่าเริ่มต้นเป็น 100 และค่าสิ้นสุดเป็น 1 จากนั้นให้ i-=1 คือให้ให้ 100 นับลดลงทีละ 1 แค่นี้เองครับ ถ้าต้องการให้นับเป็นเลขคู่ก็ i-=2 มันก็จะลดเป็นคู่แล้วครับ ง่ายใช่มั้ยครับ

ลองฝึกเปลี่ยนค่าดูนะครับ แล้วดูผลลัพท์ไปเกิดขึ้นใน Serial ดู จากนั้นลองเปลี่ยนค่าไปๆมาๆเพื่อเพิ่มความชำนาญและความเข้าใจครับ

การทดสอบผ่าน Arduino ให้ไปโหลดโปรแกรมที่ชื่อว่า Putty.exe ตามลิ้ง http://www.putty.org/ ครับ

« แก้ไขครั้งสุดท้าย: 05 มกราคม, 2013, 07:10:55 pm โดย Jakaman »
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

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

*ปกติงานผมจะใช้ pic หรือ avr อยู่แล้ว ตอนแรกกะว่าจะเอา arduino มาช่วยลดเวลาในการพัฒนา
หรือเทสไอเดีย แต่ด้วยความขี้เกียจเลยใช้ pic หรือ avr ทำไปเลย  ;D ;D ;D

Arduino มันดีตรงที่มันมี Shield นี่แหละครับ ลดขั้นตอนในการพัฒนา Hardware ไปได้เยอะ มันมี Lib สำหรับเอาไว้เรียกใช้งานง่ายๆเลยครับ ต่างกับ MCU เพียวๆ ยกตัวอย่างถ้าเราจะพัฒนา MCU ให้เป็น Web server มันจะยุ่งยากมากๆ แต่ Arduino ทำบอร์ด Eternet Shield (W5100) ออกมาแล้วเขียนฟังก์ชั่นต่างๆเอาไว้บนบอร์ด เราเพียงเรียกใช้อย่างเดียวทำให้ลดขั้นตอนพัฒนาไปได้เยอะทีเดียว ซึ่งตอนแรกผมทำตัวเปิดปิดเครื่องใช้ไฟฟ้าผ่านอินเตอร์เน็ตใช้เวลาพัฒนาตั้งแต่แกะซองห่อบอร์ดจากไปรษณีย์และไม่มีความรู้เรื่อง Arduino มาก่อนเลย แต่ใช้เวลาเรียนรู้และเขียนจนเสร็จแค่ 1 ชั่วโมงเท่านั้น!! นี่เลยเป็นเหตุผลที่เลิกใช้ PIC และ AVR ไปเลยครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ nattawat

  • ***
    • กระทู้: 165
แจ่มเลยครับชอบๆ ขอบคุณที่นำมาแบ่งปันนะครับ :clap :clap :clap :clap


ออฟไลน์ Jakaman

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

โค๊ด: [Select]
//Timer controls by Kongphat

#include <LiquidCrystal.h>

// initialize the interface pins
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
byte LT[8] =
{
  B00111,
  B01111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte UB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};
byte RT[8] =
{
  B11100,
  B11110,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte LL[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B01111,
  B00111
};
byte LB[8] =
{
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111
};
byte LR[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11110,
  B11100
};
byte MB[8] =
{
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111
};
byte block[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};



void custom0(int col)
{ // uses segments to build the number 0
  lcd.setCursor(col,0); // set cursor to column 0, line 0 (first row)
  lcd.write(8);  // call each segment to create
  lcd.write(1);  // top half of the number
  lcd.write(2);
  lcd.setCursor(col, 1); // set cursor to colum 0, line 1 (second row)
  lcd.write(3);  // call each segment to create
  lcd.write(4);  // bottom half of the number
  lcd.write(5);
}

void custom1(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col,1);
  lcd.write(4);
  lcd.write(7);
  lcd.write(4);
}

void custom2(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(4);
}

void custom3(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom4(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(4);
  lcd.write(7);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom5(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom6(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom7(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom8(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom9(int col)
{
  lcd.setCursor(col,0);
  lcd.write(3);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void clearnumber(int col)
{ // clears the area the custom number is displayed in
 lcd.setCursor(col,0);
 lcd.print("   ");
 lcd.setCursor(col,1);
 lcd.print("   ");
}
// loop counter
int count = 0;
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

// Convert ADC value to key number
int get_key(unsigned int input)
{
    int k;
  
    for (k = 0; k < NUM_KEYS; k++)
    {
      if (input < adc_key_val[k])
      {
            return k;
      }
   }
  
    if (k >= NUM_KEYS)k = -1;  // No valid key pressed
    return k;
}

void setup()
{
  lcd.clear();
  // assignes each segment a write number
  lcd.createChar(8,LT);
  lcd.createChar(1,UB);
  lcd.createChar(2,RT);
  lcd.createChar(3,LL);
  lcd.createChar(4,LB);
  lcd.createChar(5,LR);
  lcd.createChar(6,MB);
  lcd.createChar(7,block);  
  lcd.begin(16, 2);
  pinMode(39,OUTPUT);
  pinMode(41,OUTPUT);
  pinMode(43,OUTPUT);
  pinMode(45,OUTPUT);
  digitalWrite(39,LOW);
  digitalWrite(41,LOW);
  digitalWrite(43,LOW);
  digitalWrite(45,LOW);  
}
void loop()
{
   //printBigInt(analogRead(1),3);
   for(int h=0;h<24;h++)
   {
     lcd.clear();
     for(int m=0;m<60;m++)
     {
       for(int s=0;s<60;s++)
       {
         adc_key_in = analogRead(0);
         key = get_key(adc_key_in);          
         if(key==1){ //UP
           h+=1;
           if(h>23) h=0;
           printNum2Len(h,0);
         }
         if(key==2){ //DOWN
           h-=1;
           if(h<0) h=23;
           printNum2Len(h,0);
         }  
         if(key==3){ //LEFT
           m-=1;
           if(m<0) m=59;
           printNum2Len(m,7);
         }        
         if(key==0){ //RIGHT
           m+=1;
           if(m>59) m=0;
           printNum2Len(m,7);
         }    
         if(key==4){ //SELECT
           digitalWrite(39,LOW);
           digitalWrite(41,LOW);
           digitalWrite(43,LOW);
           digitalWrite(45,LOW);        
         }          

         lcd.setCursor(13,0);
         lcd.print("SEC");
         lcd.setCursor(14,1);
         lcd.print("  ");
         lcd.setCursor(14,1);
         lcd.print(s);        

         if(h==6 && m==0)
         {
           digitalWrite(39,LOW);
           digitalWrite(41,LOW);
           digitalWrite(43,LOW);
           digitalWrite(45,LOW);
         }
         if(h==18 && m==0)
         {
           digitalWrite(39,HIGH);
           digitalWrite(41,LOW);
           digitalWrite(43,LOW);
           digitalWrite(45,LOW);
         }    
         if(h==20 && m==30)
         {
           digitalWrite(39,LOW);
           digitalWrite(41,HIGH);
           digitalWrite(43,HIGH);
           digitalWrite(45,LOW);
         }            
         if(h==0 && m==0)
         {
           digitalWrite(39,HIGH);
           digitalWrite(41,HIGH);
           digitalWrite(43,HIGH);
           digitalWrite(45,HIGH);
         }            
         if(s==0){
           lcd.setCursor(6,0);
           lcd.print("o");
           lcd.setCursor(6,1);
           lcd.print("o");          
           printNum2Len(h,0);
           printNum2Len(m,7);
         }
        
         delay(1000);
       }
     }
   }
}
void printNum2Len(int num,int col)
{
  int space = 3;
  clearnumber(col);
  clearnumber(col+space);
  printBigInt(0,col,space);
  printBigInt(0,col+space,space);
  if(num<10) printBigInt(num,col+space,space);
  if(num>9) printBigInt(num,col,space);
}
void printBigInt(int num,int col,int space)
{
  int data = num;
  String str = String(data);
  char inp[4];
  str.toCharArray(inp, 4);
  printBigNumber(inp[0],col);
  if(data>9){
    printBigNumber(inp[1],col+space);      
  }
  if(data>99){
    printBigNumber(inp[2],col+(space*2));
  }
}
void printBigNumber(char num,int col)
{
  clearnumber(col);
  switch (num){
    case '1':
    custom1(col);
    break;
    case '2':
    custom2(col);
    break;  
    case '3':
    custom3(col);
    break;
     case '4':
    custom4(col);
    break;
     case '5':
    custom5(col);
    break;
     case '6':
    custom6(col);
    break;
     case '7':
    custom7(col);
    break;
     case '8':
    custom8(col);
    break;
     case '9':
    custom9(col);
    break;
     case '0':
    custom0(col);
    break;  
  }
}
« แก้ไขครั้งสุดท้าย: 05 มกราคม, 2013, 01:21:58 pm โดย Jakaman »
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ headjoke

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

*ปกติงานผมจะใช้ pic หรือ avr อยู่แล้ว ตอนแรกกะว่าจะเอา arduino มาช่วยลดเวลาในการพัฒนา
หรือเทสไอเดีย แต่ด้วยความขี้เกียจเลยใช้ pic หรือ avr ทำไปเลย  ;D ;D ;D


ออฟไลน์ Saroj63

  • **
    • กระทู้: 84
    • เพศ:ชาย
เพื่งเข้ามาครับ น่าสนใจมาก เอนกประสงค์จริงๆ คงต้องเริ่มศึกษาบ้างแล้หละครับ
ข้อมูลส่วนตัวครับ
http://www.htg2.net/index.php?topic=82754.0


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

  • *****
    • กระทู้: 893
    • เพศ:ชาย
เห็นโค้ทแล้วจะเป็นลม 5555 (ไม่เคยเขียนจริงจังขนาดนี้)


ออฟไลน์ audiomania

  • ***
    • กระทู้: 191
    • เพศ:ชาย
จริงๆ แล้วเบื้องหลัง Arduino IDE ก็เป็น avr-gcc ตัวเดียวกันครับ จะเขียนเข้ารีจิสเตอร์ลึกๆ แบบที่ทำใน Eclipse + AVR เพื่อเขียน C/C++ ก็ได้ครับ ไม่ต้องเรียกฟังก์ชัน build-in ของ arduino ก็ได้ คือจะเรียกผสมกันแบบนี้ได้เลยครับ ฟรีสไตล์มากๆ
โค๊ด: [Select]
//
// PORTD 8 LED Demo
// connect 8 LED to PD0-PD7 (active LOW)
// Arduino : direct PORT register
//

void setup() {                
  PORTD=0xff; // initial PORTD OUT register "1"
  DDRD=0xff;  // config port as OUTPUT
}

void loop() {
  unsigned int i;
  for (i=0;i<7;i++){
    PORTD=~(0x01<<i);
    delay(200);               // wait for 0.2 seconds
  }
}
« แก้ไขครั้งสุดท้าย: 04 มกราคม, 2013, 11:54:15 am โดย audiomania »


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย
ขออนุญาติเอาโค๊ดของคุณ tewmax มาต่อยอดเพื่อให้ใช้งานง่ายขึ้นอีกนิดครับ




 O0 ผมขออนุญาตนำไปใช้นะครับ
« แก้ไขครั้งสุดท้าย: 02 มกราคม, 2013, 05:50:02 pm โดย tewmax »
ที่อยู่ครับ http://www.htg2.net/index.php?topic=41722.0


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
ชอบจริงกระทู้นี้  d_d  ผมยังใช้PIC877   อยู่ครับเล่นแบบบ้านๆ เดี๋ยวมาเป็นสาวกเล่นตัว Arduino ด้วยคนครับ like



เมื่อก่อนใช้ PIC มาเหมือนกันครับ พอมาเจอ AVR ก็ถูกใจเลยเปลี่ยน ตอนหลังมาเจอ Arduino คราวนี้รักเลย เพราะฟังก์ชั่นในการใช้งานง่ายสุดๆ แต่ก็ยังแอบใช้ AVR เพียวๆอยู่บ้างเวลาที่ต้องการ Speed ในการเขียนแบบ Multi sesstion ครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว



ออฟไลน์ audiomania

  • ***
    • กระทู้: 191
    • เพศ:ชาย
ขออนุญาตจัดแท็ก CODE อีกทีครับ

โค๊ด: [Select]
#include <LiquidCrystal.h>

// initialize the interface pins
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

byte LT[8] =
{
  B00111,
  B01111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte UB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};
byte RT[8] =
{
  B11100,
  B11110,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte LL[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B01111,
  B00111
};
byte LB[8] =
{
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111
};
byte LR[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11110,
  B11100
};
byte MB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111
};
byte block[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};



void custom0(int col)
{ // uses segments to build the number 0
  lcd.setCursor(col,0); // set cursor to column 0, line 0 (first row)
  lcd.write(8);  // call each segment to create
  lcd.write(1);  // top half of the number
  lcd.write(2);
  lcd.setCursor(col, 1); // set cursor to colum 0, line 1 (second row)
  lcd.write(3);  // call each segment to create
  lcd.write(4);  // bottom half of the number
  lcd.write(5);
}

void custom1(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col,1);
  lcd.write(4);
  lcd.write(7);
  lcd.write(4);
}

void custom2(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(4);
}

void custom3(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom4(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(4);
  lcd.write(7);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom5(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom6(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom7(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom8(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom9(int col)
{
  lcd.setCursor(col,0);
  lcd.write(3);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void clearnumber(int col)
{ // clears the area the custom number is displayed in
 lcd.setCursor(col,0);
 lcd.print("   ");
 lcd.setCursor(col,1);
 lcd.print("   ");
}
// loop counter
int count = 0;
 
void setup()
{
  lcd.clear();
  // assignes each segment a write number
  lcd.createChar(8,LT);
  lcd.createChar(1,UB);
  lcd.createChar(2,RT);
  lcd.createChar(3,LL);
  lcd.createChar(4,LB);
  lcd.createChar(5,LR);
  lcd.createChar(6,MB);
  lcd.createChar(7,block); 
  lcd.begin(16, 2);
}
void loop()
{
   printBigInt(analogRead(1),3);
   delay(500);
}

void printBigInt(int num,int col)
{
  int data = num;
  String str = String(data);
  char inp[4];
  str.toCharArray(inp, 4);
  printBigNumber(inp[0],col);
  if(data>9){
    printBigNumber(inp[1],col+4);     
  }
  if(data>99){
    printBigNumber(inp[2],col+8);
  }
}
void printBigNumber(char num,int col)
{
  clearnumber(col);
  switch (num){
    case '1':
    custom1(col);
    break;
    case '2':
    custom2(col);
    break;   
    case '3':
    custom3(col);
    break;
     case '4':
    custom4(col);
    break;
     case '5':
    custom5(col);
    break;
     case '6':
    custom6(col);
    break;
     case '7':
    custom7(col);
    break;
     case '8':
    custom8(col);
    break;
     case '9':
    custom9(col);
    break;
     case '0':
    custom0(col);
    break;   
  }
}


ออฟไลน์ harn

  • *****
    • กระทู้: 780
  • ..ความแตกต่างคือความสวยงาม
ชอบจริงกระทู้นี้  d_d  ผมยังใช้PIC877   อยู่ครับเล่นแบบบ้านๆ เดี๋ยวมาเป็นสาวกเล่นตัว Arduino ด้วยคนครับ like



ออฟไลน์ Jakaman

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


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
ขออนุญาติเอาโค๊ดของคุณ tewmax มาต่อยอดเพื่อให้ใช้งานง่ายขึ้นอีกนิดครับ

โค๊ด: [Select]
#include <LiquidCrystal.h>

// initialize the interface pins
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

byte LT[8] =
{
  B00111,
  B01111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte UB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};
byte RT[8] =
{
  B11100,
  B11110,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte LL[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B01111,
  B00111
};
byte LB[8] =
{
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111
};
byte LR[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11110,
  B11100
};
byte MB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111
};
byte block[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};



void custom0(int col)
{ // uses segments to build the number 0
  lcd.setCursor(col,0); // set cursor to column 0, line 0 (first row)
  lcd.write(8);  // call each segment to create
  lcd.write(1);  // top half of the number
  lcd.write(2);
  lcd.setCursor(col, 1); // set cursor to colum 0, line 1 (second row)
  lcd.write(3);  // call each segment to create
  lcd.write(4);  // bottom half of the number
  lcd.write(5);
}

void custom1(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col,1);
  lcd.write(4);
  lcd.write(7);
  lcd.write(4);
}

void custom2(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(4);
}

void custom3(int col)
{
  lcd.setCursor(col,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom4(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(4);
  lcd.write(7);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom5(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}

void custom6(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom7(int col)
{
  lcd.setCursor(col,0);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void custom8(int col)
{
  lcd.setCursor(col,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void custom9(int col)
{
  lcd.setCursor(col,0);
  lcd.write(3);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(col+2, 1);
  lcd.write(7);
}

void clearnumber(int col)
{ // clears the area the custom number is displayed in
 lcd.setCursor(col,0);
 lcd.print("   ");
 lcd.setCursor(col,1);
 lcd.print("   ");
}
// loop counter
int count = 0;
  
void setup()
{
  lcd.clear();
  // assignes each segment a write number
  lcd.createChar(8,LT);
  lcd.createChar(1,UB);
  lcd.createChar(2,RT);
  lcd.createChar(3,LL);
  lcd.createChar(4,LB);
  lcd.createChar(5,LR);
  lcd.createChar(6,MB);
  lcd.createChar(7,block);  
  lcd.begin(16, 2);
}
void loop()
{
   printBigInt(analogRead(1),3);
   delay(500);
}

void printBigInt(int num,int col)
{
  int data = num;
  String str = String(data);
  char inp[4];
  str.toCharArray(inp, 4);
  printBigNumber(inp[0],col);
  if(data>9){
    printBigNumber(inp[1],col+4);      
  }
  if(data>99){
    printBigNumber(inp[2],col+8);
  }
}
void printBigNumber(char num,int col)
{
  clearnumber(col);
  switch (num){
    case '1':
    custom1(col);
    break;
    case '2':
    custom2(col);
    break;  
    case '3':
    custom3(col);
    break;
     case '4':
    custom4(col);
    break;
     case '5':
    custom5(col);
    break;
     case '6':
    custom6(col);
    break;
     case '7':
    custom7(col);
    break;
     case '8':
    custom8(col);
    break;
     case '9':
    custom9(col);
    break;
     case '0':
    custom0(col);
    break;  
  }
}

จากโค๊ดสามารถเรียกใช้ฟังก์ชั่น printBigInt(int num,int col) ได้เลยครับ
« แก้ไขครั้งสุดท้าย: 05 มกราคม, 2013, 01:41:02 pm โดย Jakaman »
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ -=(หวาก)=-

  • ****
    • กระทู้: 260
ดูๆวิธีเขียนโปรแกรมก็คล้ายๆกับ PICC นะครับเนี่ย เดี๋ยวว่างๆจะลองเอามาเล่นดูครับ  ;)
-=(เสียงที่ดี คือ เสียงที่ชอบ)=-


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย
คุณ tewmax เทพมากเลยครับ มีเทคนิคอะไรดีๆนำเสนอได้นะครับ กระทู้นี้เปิดเต็มที่เลยครับ

ผมยังอ่อนหัดนัก :) คุณJakaman ว่าต่อเลยครับ O0

เขียนจากใจจริงครับ ตอนนี้ผมก็เอาเทคนิคตัวอักษรของน้ามาใช้ในงานผมด้วย ขอบคุณที่แบ่งปันสิ่งดีๆให้ครับ
ดีใจครับทึ่มีคนนำไปใช้ประโยชน์ได้ครับ
ที่อยู่ครับ http://www.htg2.net/index.php?topic=41722.0


ออฟไลน์ Withaya

  • Super Star
  • *
    • กระทู้: 1,390
ราคา 1500-2000 พอๆกับบอร์ด raspberry pi เลยนะครับ แต่อันนั้นเป็น Linux


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
มีรุ่นน้องฝากให้ผมสั่ง robot control ไปตอนต้นปี เดี๋ยวนี้ 2000 กว่าๆ ก็มีของเล่นแหล่มๆ กันแล้ว สงสัยจะเอาไปทำโปรเจ็คต์จบ เด็กสมัยนี้ชอบเล่นทางลัด  ;D

ต่อไป hardware ทุกอย่างจะเขียนโปรแกรมได้หมดแล้วครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

  • เล่นมาเย้อ เจ็บมาเย้อ
  • ****
    • กระทู้: 284
    • เพศ:ชาย
  • เราวางใจในพระเจ้า
    • AudioDevelop
คุณ tewmax เทพมากเลยครับ มีเทคนิคอะไรดีๆนำเสนอได้นะครับ กระทู้นี้เปิดเต็มที่เลยครับ

ผมยังอ่อนหัดนัก :) คุณJakaman ว่าต่อเลยครับ O0

เขียนจากใจจริงครับ ตอนนี้ผมก็เอาเทคนิคตัวอักษรของน้ามาใช้ในงานผมด้วย ขอบคุณที่แบ่งปันสิ่งดีๆให้ครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ nut_ty

  • คนดีคือคนที่ไม่เอาเปรียบผู้อื่น ทั้งในทางตรงและทางอ้อม
  • ผู้สนับสนุน web 1ปี
  • Super Star
  • *
    • กระทู้: 1,901
    • เพศ:ชาย
มีรุ่นน้องฝากให้ผมสั่ง robot control ไปตอนต้นปี เดี๋ยวนี้ 2000 กว่าๆ ก็มีของเล่นแหล่มๆ กันแล้ว สงสัยจะเอาไปทำโปรเจ็คต์จบ เด็กสมัยนี้ชอบเล่นทางลัด  ;D
นายวัชระ สลัดแก้ว
โทร 083 1214445


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย
คุณ tewmax เทพมากเลยครับ มีเทคนิคอะไรดีๆนำเสนอได้นะครับ กระทู้นี้เปิดเต็มที่เลยครับ

ผมยังอ่อนหัดนัก :) คุณJakaman ว่าต่อเลยครับ O0
ที่อยู่ครับ http://www.htg2.net/index.php?topic=41722.0


ออฟไลน์ Jakaman

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

http://www.facebook.com/pages/Arduino-Thai-Project/205375546266456
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ Jakaman

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


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย
อันนี้ ก็ Arduino ผมทำใช้วัดอุณหภูมิ Amp Camp สั่งพัดลมทำงานเมื่ออุณหภูมิเกินที่ตั้งไว้ :)

<a href="http://www.youtube.com/v/rKe1AR-DJ6s" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.youtube.com/v/rKe1AR-DJ6s</a>
ที่อยู่ครับ http://www.htg2.net/index.php?topic=41722.0


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย
อันนี้ลองเ่ล่นกะ iphone
<a href="http://www.youtube.com/v/g6GNJSE2XRk" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.youtube.com/v/g6GNJSE2XRk</a>
ที่อยู่ครับ http://www.htg2.net/index.php?topic=41722.0


ออฟไลน์ tewmax

  • Super Star
  • *
    • กระทู้: 1,759
    • เพศ:ชาย

ออฟไลน์ Jakaman

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

เช่น โปรแกรมไล่ลำดับการเปิดปิดเครื่องเสียงเพื่อป้องกันลำโพงเสียหายครับ เช่น ตอนเปิด ไล่จาก ปรี เครื่องเล่น พาวเวอร์, ตอนปิดก็ พาวเวอร์ หน่วงไว้ 10 วินาที แล้วค่อยปิด ปรี และ Player ตามลำดับครับ มันจะได้ไม่มีเสียงตุ๊บๆเข้าลำโพงไงครับ หรือเอาส่วนขาลำโพงมาต่อกับรีเลย์อีกทีก็จะป้องกันลำโพงได้ดีมากเลยครับ

ถ้าพวก Andriod เอามาเป็น Display เพื่อบังคับผ่าน Wifi ก็ได้นะครับ เอามาต่อกับ Eternet shield W5100 เล่นอะไรได้อีกเยอะครับ  c)
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ gapong2512

  • ***
    • กระทู้: 118
ADK จะต่างจากรุ่นอื่นๆพอดู ตรงที่เอาไว้เป็นบอร์ดต่อเชื่อมกับ Smart Device พวก Tablet , Android phone เพื่อเป็น I/O ให้กับ Android OS โดยหลักไม่ได้ทำงานแบบ stand alone ครับ

ส่วน Mega 2560 ข้อดีคือพอร์ตเยอะมาก แต่ยังไม่มี USB engine ในตัวครับ

อืม..  ตรงนี้น่าสนนะครับ ถ้าต่อก้บพวก android ได้น่าจะมีอะไรให้เล่นเยอะ กำลังคิดก่อนว่าจะทำอะไรดีครับ  O0

แต่ราคามันต่างกันเท่าตัวเลยนะครับ mega 2560 ราคา 700 บาท
ขอบคุณมากครับ
รติวัฒน์ เรือนศรี (ร้านโปรฟิชชิ่ง)
 290/19 ถ.พหลโยธิน ต.หัวเวียง อ.เมือง
 จ.ลำปาง 52000
เบอร์โทร 08-69150733


ออฟไลน์ audiomania

  • ***
    • กระทู้: 191
    • เพศ:ชาย
ADK จะต่างจากรุ่นอื่นๆพอดู ตรงที่เอาไว้เป็นบอร์ดต่อเชื่อมกับ Smart Device พวก Tablet , Android phone เพื่อเป็น I/O ให้กับ Android OS โดยหลักไม่ได้ทำงานแบบ stand alone ครับ

ส่วน Mega 2560 ข้อดีคือพอร์ตเยอะมาก แต่ยังไม่มี USB engine ในตัวครับ


ออฟไลน์ gapong2512

  • ***
    • กระทู้: 118
ตัวนี้เป็นไงบ้างครับ



จากเวปนี้ครับ

http://www.arduino.in.th/product/70/arduino-mega-adk-r3

ราคา 1,450 บาทครับ

ไม่ทราบว่าต่างจากรุ่น mega 2560 R3 อย่างไรบ้างครับ
รติวัฒน์ เรือนศรี (ร้านโปรฟิชชิ่ง)
 290/19 ถ.พหลโยธิน ต.หัวเวียง อ.เมือง
 จ.ลำปาง 52000
เบอร์โทร 08-69150733


ออฟไลน์ audiomania

  • ***
    • กระทู้: 191
    • เพศ:ชาย
ถ้าจำไม่ผิด Arduino สามารถเขียน Code ลงไปให้เป็นอุปกรณ์ USB to I2S ได้ใช่มั้ยครับ
Arduino ตัวปกติยังไม่ได้ครับ AVR ตัวนี้ยังไม่แรงและมีกลไกฮาร์ดแวร์ยังไม่เพียงพอที่จะทำงานได้ครับ
อย่างตอนนี้ตัวที่ผมเล่นอยู่เป็นบอร์ด Unicon (Arduino Leonardo compatible) ที่เป็น ATMega32U4 ที่มี USB Interface ในตัวก็ตาม ทำหน้าที่เป็น Composite device แบ่งเป็น CDC Compunication Device (Virtual COM port) และ HID Human Interface Device ไว้ทำคีย์บอร์ด เมาส์ จอยสติ๊ก หรือทำเป็น I/O interface ความเร็วไม่สูงนักน่ะครับ

ยังไม่ถึงกับทำ Isochronous ที่จัดการงานด้านเสียงได้แม่นยำดีเหมือนกับชิพแรงๆ แบบ ARM ตัวใหม่ อย่างเช่น Arduino Due ตัวใหญ่ หรือไม่ก็ข้ามไประดับไมโครพันธุ์ไฮเปอร์อย่าง XMOS น่ะครับ แน่นอนที่สุดครับ
« แก้ไขครั้งสุดท้าย: 29 ธันวาคม, 2012, 01:53:02 pm โดย audiomania »


ออฟไลน์ nut_ty

  • คนดีคือคนที่ไม่เอาเปรียบผู้อื่น ทั้งในทางตรงและทางอ้อม
  • ผู้สนับสนุน web 1ปี
  • Super Star
  • *
    • กระทู้: 1,901
    • เพศ:ชาย
ถ้าจำไม่ผิด Arduino สามารถเขียน Code ลงไปให้เป็นอุปกรณ์ USB to I2S ได้ใช่มั้ยครับ
นายวัชระ สลัดแก้ว
โทร 083 1214445


ออฟไลน์ Jakaman

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

คำสั่ง

คำว่าคำสั่งนั้นแบ่งออกเป็นสองประเภทคือ
1. คำสั่งภายใน
2. คำสั่งภายนอก

คำสั่งภายนอกส่วนใหญ่จะเขียนสำเร็จรูปไว้แล้ว ทั้งใน Complier เองและในการอ้างมาจากที่อื่น(จาก CLass)ซึ่งจะอยู่ในรูปแบบของ Function นั้นเองครับ

ตัวอย่างการอ้างมาจากข้างนอก
#include <LiquidCrystal.h>
สั่งเกตุว่าเราจะใช้คำสั่ง #include แล้วตามด้วยไฟล์ที่อยู่ใน Folder ชื่อ Libraries นั้นเอง

วิธีการเพิ่ม Library ลงใน Arduino
หากเราต้องการให้ Arduino มีความสามารถมากขึ้นให้เราก๊อป Lib folder มาจากที่อื่น แล้วให้เอามาวางลงใน Folder นี้แล้วรีสตาร์ท IDE มันก็จะเข้ามาอยู่ในเมนูทั่ง File->Example และ Sketch->Import Library แล้วครับ

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

[ชื่อ Class] [ชื่อ Object];

หรือกรณีมีตัวแปรเริ่มต้น(Constructor) ให้กำหนดแบบนี้

[ชื่อ Class] [ชื่อ Object](param1,param2...);

ตัวอย่าง

BettleCar car1;

หรือแบบมี Constructor

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

เท่านี้เราก็สามารถที่จะเอา Object ไปใช้งานได้เลยครับ

วิธีการใช้งาน Object

[ชื่อ Object].[ชื่อ Function](Parameter,..,..);

ซึ่งชื่อ Function จะเป็นอะไรนั้นก็ขึ้นอยู่กับผู้ที่เขียนคลาสครับ เราสามารถดูได้จากเวปต่างๆที่เราไปก๊อปคลาสนั้นมาใช้งานครับ หรือไม่ก็ให้ดูใน *.h ที่เราก๊อปมาก็ได้ครับ

ตัวอย่างการนำไปใช้งานคือ

car1.Run(30);

วันนี้ไม่ไหวแล้วครับพิมพ์เหมื่อยมากเลย ขอตัวไปอาบน้ำก่อนครับ
เมื่อก่อนข้าเคยตาบอด แต่บัดนี้ตาข้าเห็นแล้ว


ออฟไลน์ makham

  • *
    • กระทู้: 29

ออฟไลน์ Johnney_por

  • ***
    • กระทู้: 185
    • เพศ:ชาย
ตอนนี้กำลังศึกษาอยู่ครับ เกิดความสนใจที่เห็นเค้าเอามาทำเป็นนาฬิกากัน เลยอยากลองทำเป็นตัวหนังสือมั่ง แต่ตอนนี้ยังไม่คืบหน้าเพราะว่ายังไม่ว่างเลยไม่มีเวลาศึกษาต่อ เข้ามาขอคำแนะนำครับ...... c)
ติดต่อที่อยู่ครับ.....http://www.htg2.net/index.php?topic=83877.0


ออฟไลน์ Goda Takeshi

  • *****
    • กระทู้: 656
    • เพศ:ชาย
ผมเพิ่งสั่งจาก ebay เป็น mega แต่ต่อกับ android ADK ได้ ราคาประมาณ 53 us

ถ้าเป็น mega ธรรมดา ก็ 18-20+ us ครับ

หนังสือ http://www.futurlec.com/Arduino_Books.shtml เห็นเล่มนี้ฝรั่งอ้างถึงบ่อยๆครับ
« แก้ไขครั้งสุดท้าย: 28 ธันวาคม, 2012, 05:02:00 pm โดย Goda Takeshi »