เนมินทร์ ไลฟ์สไตล์ ทุกอย่างสนใจ เช่น การเขียนโปรแกรมคอมพิวเตอร์ ข่าววงการไอที กิจกรรมยามว่าง ฯลฯ
22 ตุลาคม 2552
ควบคุม RoboBuilder ด้วย Microsoft Rob...
13 ตุลาคม 2552
รีวิว Microsoft PowerShell / PowerShe...
สรุป งานนี้ไมโครซอฟท์สร้าง shell ออกมาได้ดีสมกับที่รอคอยจริงๆ แต่เท่าที่ใช้ดูแล้วไม่คุ้นเท่าไหร่
แต่จะเห็นได้ว่าชื่อคำสั่งโดยเฉพาะคำสั่งแบบ Comlet ชื่อที่ใช้สื่อความหมายดีมากๆ แต่ก็อย่างว่า มันไม่คุ้นนี่หน่า
แต่ตอนนี้ก็ยังไม่มีโอกาสได้ใช้งานจริงจัง เลยยังไม่ได้ลองจนถึงขีดจำกัดเท่าไหร่
แต่มีอย่างนึงที่คนไทยต้องไม่ชอบมากๆแน่นอนมันมีsystax '`' ซึ่งต้องใช้ปุ่มยึกยือ~ที่ใช้เปลี่ยนระหว่างภาษาไทยกับอังกฤษ
งานนี้อาจจะมีแต่โปรแกรมเมอร์ชาวไทยก็ไ้ด้ที่ต้องปวดหัว
11 ตุลาคม 2552
ชีทสรุปสำหรับโปรแกรมเมอร์และนักเล่นคอมฯ
เป็นเว็บรวม สรุปคำสั่งพื้นฐาน คอนเซ็ป แล้วก็สิ่งที่ใช้บ่อย ที่เค้าเรียกว่า Cheat Sheet คล้ายๆตารางสรุปสรูปเคมี ชีวะ
ที่เคยซื้อมาอ่านตอนม.ปลาย ก่อนสอบเอ็นยังไงอย่างนั้นเลย เึข้าไปเจอเว็บนี้เพราะว่ากำลังอยากศึกษา PowerShell ของ
Microsoft อยู่พอดีเลย ได้มาอ่านไม่ทันไรก็พอเ้ข้าใจบ้างแล้ว
ลองเข้าไปโหลดกันดูได้ที่ http://refcardz.dzone.com/
ต้องลงทะเบียนก่อนถึงจะโหลดได้นะครับ
Multitouch Keyboard and Mouse
http://docs.google.com/Doc?id=dcntsjcf_294cc65krfs
Microsoft Research shows off 5 craziest Next Gen Multi Touch Mouse Prototypes
http://www.youtube.com/watch?v=bRHFvznyZQM
BMW augmented reality
http://www.youtube.com/watch?v=P9KPJlA5yds
Noah Book Multi-Touch Keyboard in Action 1 (unwirelife.com)
http://www.youtube.com/watch?v=D-3f-q6dZxQ
Noah Book Multi-Touch Keyboard in Action 2 (unwirelife.com)
http://www.youtube.com/watch?v=RO0eqNCbNxM
Noah Book Multi-Touch Keyboard in Action 3 (unwirelife.com)
http://www.youtube.com/watch?v=kOc4VWg1gd4
Noah Book Multi-Touch Keyboard in Action 4 (unwirelife.com)
http://www.youtube.com/watch?v=SSXYWuwT3Gk
DGTS by t2i.se & eta.chalmers.se, Chalmers (cap sensing multi pointer input device and keyboard)
http://www.youtube.com/watch?v=ltNSCOzxbvY
09 ตุลาคม 2552
แนวคิดสร้าง tactile display จาก น้ำตา...
แนวคิดสร้าง tactile มี 3 แนวคิด
1.สร้าง pin แล้วสั่งให้ยกตัวด้วยแรงเหนี่ยวนำแม่เหล็ก
2.สร้าง อัลตร้าโซนิค แล้วยิงขึ้นมาเป็นช่องๆ
3.ใช้จุดที่สั่นได้โดยใช้เปียโซ ซึ่งนี่เป็นแนวคิดที่เราจะพูดถึง
สำรวจไปก็พบว่า ปรากฏการณ์เปียโซ คือเมื่อเราให้กระแสไปในผลึก ผลึกบางชนิดจะเกิดการหดตัว
และขยายตัว ซึ่งหนึ่งในผลึกที่เกิดปรากฏการณ์นี้ก็คือน้ำตาลธรรมดานี่เอง
ตอนนี้กำลังคิดว่าจะลองเอาลูกอมมาจ่อขั๋วไฟบวกลบแล้วดูว่ามันจะสั่นได้หรือไม่
อ้างอิงได้จาก
http://en.wikipedia.org/wiki/Electronic_visual_display
http://en.wikipedia.org/wiki/Refreshable_Braille_display
http://en.wikipedia.org/wiki/Piezo_effect
02 ตุลาคม 2552
Graphic User Interface (GUI) For Maze Car
Graphic User Interface (GUI) For Maze Car
GUI สำหรับควบคุมรถ Solve Maze ประกอบไปด้วย 7 ส่วน ดังภาพ
ส่วนที่ 1 ส่วนจัดการ การเชื่อมต่อ Port
ในส่วนนี้ใช้ควบคุมการจัดการ การเชื่อมต่อระหว่าง Bluetoothที่ติดอยู่กับตัวรถและคอมพิวเตอร์หลักโดยผู้ใช้งานสามารถ กำหนด Port ที่ต้องการเชื่อมต่อได้จากช่อง COM Port จากนั้นกด Open Port เมื่อเชื่อมต่อสำเร็จแล้วโปรแกรมจะแสดงผลออกมาในส่วนของ Status (7) โดยจะปรากฏข้อความว่า “Terminator Maze Start” แต่หากทำการเชื่อมต่อไม่สำเร็จจะปรากฏข้อความว่า “Terminator Can’t Start Maze” ส่วนปุ่ม Close Port ใช้เมื่อต้องการยกเลิกการติดต่อและปุ่ม Reset ใช้เมื่อต้องทำการติดต่อกับหุ่นใหม่อีกครั้งหากเกิดปัญหาขัดข้อง
ส่วนที่ 2 ส่วนแสดงแผนที่ของเขาวงกต
ในส่วนนี้จะแสดงแผนที่ของเขาวงกตที่รถได้วิ่งผ่านไปแล้วออกมาเพิ่อนำไปทำการคำนวณหาเส้นทางที่ใกล้ที่สุดออกมาได้ และสามารถเปิดแผนที่ ที่บันทึกไว้แล้วได้ด้วยปุ่ม [:-)]
ส่วนที่ 3 ส่วนกำหนดจุดเริ่ม และจุดสิ้นสุดของแผนที่
ในส่วนนี้จะใช้ในการกำหนดจุดเริ่มโดยสามารถกำหนดได้ที่ Start Point โดยใส่เป็นพิกัด x,y และจุดสิ้นสุดหรือทางออกของแผนที่ สามารถกำหนดได้ที่ End Point โดยกำหนดเป็นพิกัด x,y เช่นเดียวกัน
ส่วนที่ 4 กำหนดทิศของรถที่หันอยู่ขณะเริ่ม
ในส่วนนี้จะใช้กำหนดตำแหน่งของหน้ารถปัจจุบันที่รถหันไปอยุ่โดยแบ่งออกไปเป็น 4 ทิศ คือเหนือ ทิศใต้ ทิศตะวันออก ทิศตะวันตก
ส่วนที่ 5 ส่วนเลือกรูปแบบการทำงานของรถ
ในส่วนนี้จะใช้กำหนดรูปแบบการเดินรถโดยมีทั้งหมด 2 รูปแบบคือ 1.แบบสำรวจแผนที่ทั้งหมด และ 2.แบบทำการค้นหาเส้นทางออกจากแผนที่ที่มีอยู่แล้วให้เร็วที่สุด
ส่วนที่ 6 ส่วนแก้ไขแผนที่
ในส่วนนี้จะใช้สำหรับแก้ใขแผนที่หากรถทำการส่งค่ากลับมาแล้วผิด ผู้ใช้สามารถแก้ไขในส่วนที่ผิดนั้นได้โดยการกำหนดจุด x,y ที่ผิดจากนั้นใส่ค่าลงไป 0 คือไปได้และ 1 คือไปไม่ได้
ส่วนที่ 7 ส่วนแสดงผลสถานะของโปรแกรม
ในส่วนนี้จะแสดงค่าสถานะต่างๆของโปรแกรมและการติดต่อสื่อสารระหว่าง Bluetooth กับคอมพิวเตอร์หลักทั้งหมดจะแสดงสถานะอยู่ในหน้าต่าง Status
Enter Post Title Her2(1)
Graphic User Interface (GUI) For Maze Car
GUI สำหรับควบคุมรถ Solve Maze ประกอบไปด้วย 7 ส่วน ดังภาพ
ส่วนที่ 1 ส่วนจัดการ การเชื่อมต่อ Port
ในส่วนนี้ใช้ควบคุมการจัดการ การเชื่อมต่อระหว่าง Bluetoothที่ติดอยู่กับตัวรถและคอมพิวเตอร์หลักโดยผู้ใช้งานสามารถ กำหนด Port ที่ต้องการเชื่อมต่อได้จากช่อง COM Port จากนั้นกด Open Port เมื่อเชื่อมต่อสำเร็จแล้วโปรแกรมจะแสดงผลออกมาในส่วนของ Status (7) โดยจะปรากฏข้อความว่า “Terminator Maze Start” แต่หากทำการเชื่อมต่อไม่สำเร็จจะปรากฏข้อความว่า “Terminator Can’t Start Maze” ส่วนปุ่ม Close Port ใช้เมื่อต้องการยกเลิกการติดต่อและปุ่ม Reset ใช้เมื่อต้องทำการติดต่อกับหุ่นใหม่อีกครั้งหากเกิดปัญหาขัดข้อง
ส่วนที่ 2 ส่วนแสดงแผนที่ของเขาวงกต
ในส่วนนี้จะแสดงแผนที่ของเขาวงกตที่รถได้วิ่งผ่านไปแล้วออกมาเพิ่อนำไปทำการคำนวณหาเส้นทางที่ใกล้ที่สุดออกมาได้ และสามารถเปิดแผนที่ ที่บันทึกไว้แล้วได้ด้วยปุ่ม [:-)]
ส่วนที่ 3 ส่วนกำหนดจุดเริ่ม และจุดสิ้นสุดของแผนที่
ในส่วนนี้จะใช้ในการกำหนดจุดเริ่มโดยสามารถกำหนดได้ที่ Start Point โดยใส่เป็นพิกัด x,y และจุดสิ้นสุดหรือทางออกของแผนที่ สามารถกำหนดได้ที่ End Point โดยกำหนดเป็นพิกัด x,y เช่นเดียวกัน
ส่วนที่ 4 กำหนดทิศของรถที่หันอยู่ขณะเริ่ม
ในส่วนนี้จะใช้กำหนดตำแหน่งของหน้ารถปัจจุบันที่รถหันไปอยุ่โดยแบ่งออกไปเป็น 4 ทิศ คือเหนือ ทิศใต้ ทิศตะวันออก ทิศตะวันตก
ส่วนที่ 5 ส่วนเลือกรูปแบบการทำงานของรถ
ในส่วนนี้จะใช้กำหนดรูปแบบการเดินรถโดยมีทั้งหมด 2 รูปแบบคือ 1.แบบสำรวจแผนที่ทั้งหมด และ 2.แบบทำการค้นหาเส้นทางออกจากแผนที่ที่มีอยู่แล้วให้เร็วที่สุด
ส่วนที่ 6 ส่วนแก้ไขแผนที่
ในส่วนนี้จะใช้สำหรับแก้ใขแผนที่หากรถทำการส่งค่ากลับมาแล้วผิด ผู้ใช้สามารถแก้ไขในส่วนที่ผิดนั้นได้โดยการกำหนดจุด x,y ที่ผิดจากนั้นใส่ค่าลงไป 0 คือไปได้และ 1 คือไปไม่ได้
ส่วนที่ 7 ส่วนแสดงผลสถานะของโปรแกรม
ในส่วนนี้จะแสดงค่าสถานะต่างๆของโปรแกรมและการติดต่อสื่อสารระหว่าง Bluetooth กับคอมพิวเตอร์หลักทั้งหมดจะแสดงสถานะอยู่ในหน้าต่าง Status
Graphic User Interface (GUI) For Maze Car
Graphic User Interface (GUI) For Maze Car
GUI สำหรับควบคุมรถ Solve Maze ประกอบไปด้วย 7 ส่วน ดังภาพ
ส่วนที่ 1 ส่วนจัดการ การเชื่อมต่อ Port
ในส่วนนี้ใช้ควบคุมการจัดการ การเชื่อมต่อระหว่าง Bluetoothที่ติดอยู่กับตัวรถและคอมพิวเตอร์หลักโดยผู้ใช้งานสามารถ กำหนด Port ที่ต้องการเชื่อมต่อได้จากช่อง COM Port จากนั้นกด Open Port เมื่อเชื่อมต่อสำเร็จแล้วโปรแกรมจะแสดงผลออกมาในส่วนของ Status (7) โดยจะปรากฏข้อความว่า “Terminator Maze Start” แต่หากทำการเชื่อมต่อไม่สำเร็จจะปรากฏข้อความว่า “Terminator Can’t Start Maze” ส่วนปุ่ม Close Port ใช้เมื่อต้องการยกเลิกการติดต่อและปุ่ม Reset ใช้เมื่อต้องทำการติดต่อกับหุ่นใหม่อีกครั้งหากเกิดปัญหาขัดข้อง
ส่วนที่ 2 ส่วนแสดงแผนที่ของเขาวงกต
ในส่วนนี้จะแสดงแผนที่ของเขาวงกตที่รถได้วิ่งผ่านไปแล้วออกมาเพิ่อนำไปทำการคำนวณหาเส้นทางที่ใกล้ที่สุดออกมาได้ และสามารถเปิดแผนที่ ที่บันทึกไว้แล้วได้ด้วยปุ่ม [:-)]
ส่วนที่ 3 ส่วนกำหนดจุดเริ่ม และจุดสิ้นสุดของแผนที่
ในส่วนนี้จะใช้ในการกำหนดจุดเริ่มโดยสามารถกำหนดได้ที่ Start Point โดยใส่เป็นพิกัด x,y และจุดสิ้นสุดหรือทางออกของแผนที่ สามารถกำหนดได้ที่ End Point โดยกำหนดเป็นพิกัด x,y เช่นเดียวกัน
ส่วนที่ 4 กำหนดทิศของรถที่หันอยู่ขณะเริ่ม
ในส่วนนี้จะใช้กำหนดตำแหน่งของหน้ารถปัจจุบันที่รถหันไปอยุ่โดยแบ่งออกไปเป็น 4 ทิศ คือเหนือ ทิศใต้ ทิศตะวันออก ทิศตะวันตก
ส่วนที่ 5 ส่วนเลือกรูปแบบการทำงานของรถ
ในส่วนนี้จะใช้กำหนดรูปแบบการเดินรถโดยมีทั้งหมด 2 รูปแบบคือ 1.แบบสำรวจแผนที่ทั้งหมด และ 2.แบบทำการค้นหาเส้นทางออกจากแผนที่ที่มีอยู่แล้วให้เร็วที่สุด
ส่วนที่ 6 ส่วนแก้ไขแผนที่
ในส่วนนี้จะใช้สำหรับแก้ใขแผนที่หากรถทำการส่งค่ากลับมาแล้วผิด ผู้ใช้สามารถแก้ไขในส่วนที่ผิดนั้นได้โดยการกำหนดจุด x,y ที่ผิดจากนั้นใส่ค่าลงไป 0 คือไปได้และ 1 คือไปไม่ได้
ส่วนที่ 7 ส่วนแสดงผลสถานะของโปรแกรม
ในส่วนนี้จะแสดงค่าสถานะต่างๆของโปรแกรมและการติดต่อสื่อสารระหว่าง Bluetooth กับคอมพิวเตอร์หลักทั้งหมดจะแสดงสถานะอยู่ในหน้าต่าง Status
Enter Post Title Her2
Graphic User Interface (GUI) For Maze Car
GUI สำหรับควบคุมรถ Solve Maze ประกอบไปด้วย 7 ส่วน ดังภาพ
ส่วนที่ 1 ส่วนจัดการ การเชื่อมต่อ Port
ในส่วนนี้ใช้ควบคุมการจัดการ การเชื่อมต่อระหว่าง Bluetoothที่ติดอยู่กับตัวรถและคอมพิวเตอร์หลักโดยผู้ใช้งานสามารถ กำหนด Port ที่ต้องการเชื่อมต่อได้จากช่อง COM Port จากนั้นกด Open Port เมื่อเชื่อมต่อสำเร็จแล้วโปรแกรมจะแสดงผลออกมาในส่วนของ Status (7) โดยจะปรากฏข้อความว่า “Terminator Maze Start” แต่หากทำการเชื่อมต่อไม่สำเร็จจะปรากฏข้อความว่า “Terminator Can’t Start Maze” ส่วนปุ่ม Close Port ใช้เมื่อต้องการยกเลิกการติดต่อและปุ่ม Reset ใช้เมื่อต้องทำการติดต่อกับหุ่นใหม่อีกครั้งหากเกิดปัญหาขัดข้อง
ส่วนที่ 2 ส่วนแสดงแผนที่ของเขาวงกต
ในส่วนนี้จะแสดงแผนที่ของเขาวงกตที่รถได้วิ่งผ่านไปแล้วออกมาเพิ่อนำไปทำการคำนวณหาเส้นทางที่ใกล้ที่สุดออกมาได้ และสามารถเปิดแผนที่ ที่บันทึกไว้แล้วได้ด้วยปุ่ม [:-)]
ส่วนที่ 3 ส่วนกำหนดจุดเริ่ม และจุดสิ้นสุดของแผนที่
ในส่วนนี้จะใช้ในการกำหนดจุดเริ่มโดยสามารถกำหนดได้ที่ Start Point โดยใส่เป็นพิกัด x,y และจุดสิ้นสุดหรือทางออกของแผนที่ สามารถกำหนดได้ที่ End Point โดยกำหนดเป็นพิกัด x,y เช่นเดียวกัน
ส่วนที่ 4 กำหนดทิศของรถที่หันอยู่ขณะเริ่ม
ในส่วนนี้จะใช้กำหนดตำแหน่งของหน้ารถปัจจุบันที่รถหันไปอยุ่โดยแบ่งออกไปเป็น 4 ทิศ คือเหนือ ทิศใต้ ทิศตะวันออก ทิศตะวันตก
ส่วนที่ 5 ส่วนเลือกรูปแบบการทำงานของรถ
ในส่วนนี้จะใช้กำหนดรูปแบบการเดินรถโดยมีทั้งหมด 2 รูปแบบคือ 1.แบบสำรวจแผนที่ทั้งหมด และ 2.แบบทำการค้นหาเส้นทางออกจากแผนที่ที่มีอยู่แล้วให้เร็วที่สุด
ส่วนที่ 6 ส่วนแก้ไขแผนที่
ในส่วนนี้จะใช้สำหรับแก้ใขแผนที่หากรถทำการส่งค่ากลับมาแล้วผิด ผู้ใช้สามารถแก้ไขในส่วนที่ผิดนั้นได้โดยการกำหนดจุด x,y ที่ผิดจากนั้นใส่ค่าลงไป 0 คือไปได้และ 1 คือไปไม่ได้
ส่วนที่ 7 ส่วนแสดงผลสถานะของโปรแกรม
ในส่วนนี้จะแสดงค่าสถานะต่างๆของโปรแกรมและการติดต่อสื่อสารระหว่าง Bluetooth กับคอมพิวเตอร์หลักทั้งหมดจะแสดงสถานะอยู่ในหน้าต่าง Status
01 ตุลาคม 2552
เอกสารอ้างอิง
Arduinoกับอุปกรณ์ SPI เรียนรู้เข้าใจใช้งานไมโครคอนโทรลเลอร์ตระกูล AVR ด้วย Arduino บริษัท อีทีที จำกัด
Interfacing a Serial EEPROM Using SPI,http://www.arduino.cc/en/Tutorial/SPIEEPROM
Controlling a Digital Potentiometer Using SPI, http://www.arduino.cc/en/Tutorial/SPIDigitalPot
Serial Peripheral Interface Bus, http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
"How Do I?" Videos for Native Coding, http://msdn.microsoft.com/th-th/visualc/bb496952(en-us).aspx#gettingstarted
การถดถอยแบบเชิงเส้น (linear regression), http://www.sorakarn-kmutnb.com/subject/LinearRegression.pdf
Cardinal direction, http://en.wikipedia.org/wiki/Cardinal_direction
Relative direction, http://en.wikipedia.org/wiki/Relative_direction
การใช้งาน OpenCV Library เบื้องต้นเพื่อการประมวลผลภาพจากกล้อง (สำหรับ MS Windows), http://fibo.kmutt.ac.th/blog/humanoid/2009/09/23/opencv_tutorial_mswindow/
การทำ SPI Interface http://www.arduino.cc/playground/Code/Spi
Encoder http://itp.nyu.edu/physcomp/sensors/Reoprts/QRD1114IRSensor
www.es.co.th
www.inex.co.th
ภาพรวมของโปรแกรม
ภาพรวมของโปรแกรม
โปรแกรมแบ่งออกเป็น 2 ส่วนใหญ่ๆคือโปรแกรมบนรถ ที่เขียนด้วยภาษาซีสำหรับบอร์ดอาร์ดูโน(Arduino Board)
ส่วนโปรแกรมอีกส่วนคือโปรแกรมบนคอมพิวเตอร์ที่ใช้สร้างแผนที่(Map Generator)นอกจากนี้ยังหาเส้นทางที่สั้นที่สุดอีกด้วย
ผังงานโปรแกรมบนรถ
เมื่อโปรแกรมเริ่มทำงาน จะทำการตั้งค่าพอร์ตต่างๆด้วยฟังก์ชัน Setup Port และ
โปรโตคอลSPI ด้วยฟังก์ชัน Setup SPI และตัวรถจะรถการส่งการจากคอมพิวเตอร์
ว่าจะเลือกโหมดใดให้รถทำงานแบ่งได้เป็น 2 mode คือ
- Explore คือให้รถเดินสำรวจเพื่อสร้างแผนที่ โดยรถจะพยายามเดินให้ทั่วพื้นที่
- GetAnswer เมื่ือสร้างแผนที่เสร็จ คอมพิวเตอร์จะประมวลผลเส้นที่ที่สั้นที่สุดในการออกจากเขาวงกต
แผนผังคลาสโปรแกรมบนคอมพิวเตอร์
เนื่องจากโปรแกรมเป็นแบบ Event-Drive จึงไม่เหมาะที่จะแสดงด้วยผังงาน เนื่องจากการทำงานจะไม่ชัดเจน
ขึ้นอยู่กับ เหตุการณ์ที่เกิดขึ้นบนฟอร์ม ดังนั้นจึงแสดงด้วยแผนผังความสัมพันธ์ของคลาส ซึ่งประกอบด้วย 4 คลาสดังนี้
- คลาสเขาวงกต(Maze Class) เป็นคลาสหลักของโปรแกรมภายในประกอบด้วยอัลกอริทึม จำนวนมากดังนี้
- mapGenerator สร้างแผนที่จากค่าการเดินของตัวรถ
- solveMaze หาเส้นทางเดินทุกทางที่เป็นไปได้ในการออกจากเขาวงกตจากแผนที่
- solveMaze Shortest Path หาเส้นทางเดินที่สั้นที่สุดจากเส้นทางทั้งหมดที่เป็นไปได้
- sendAnswer แปลงคำตอบจาก พิกัดระนาบ เป็นทิศทาง และแปลงอีกครั้งเป็นทิศทางแบบสัมพัทธ์กับตัวหุ่น
- sendAnswerToBluetooth ส่งค่าทิศทางแบบสัมพัทธ์ ผ่านบลูทูธ โดยมีการจัดการกับสัญญาณรบกวนที่เกิดขึ้น
- คลาส จุด (Point Class) เป็นที่เก็บพิกัด (X,Y) ในระนาบ 2 มิติ
- คลาสบลูทูธ จัดการการรับส่ง การเปิดปิดพอร์ต สืบทอดคุณสมบัติมากจากคลาสอนุกรม