วันพฤหัสบดีที่ 27 สิงหาคม พ.ศ. 2558

เกร็ดเล็ก เกร็ดน้อย เกี่ยวกับ การเพิ่มโมดูลต่างๆใน Qt และ การเรียกใช้ ไลบราลี่

เรียนรู้โมดูลต่างๆ ใน Qt เพิ่มเติมได้ที่
http://doc.qt.io/qt-5/qtmodules.html








วันพุธที่ 5 สิงหาคม พ.ศ. 2558

การต่อ MAX 232

จั้มขา 7-8 ถึงกัน







ภาพจาก http://www.thaieasyelec.com/component/content/article/11-basic-electronics/25-uart-ttl-rs232-max232-max3232.html

การคัดลอกไดรเร็กเทอรี่ใน Linux ไปไว้ใน USB ด้วย Command

การคัดลอกไดรเร็กเทอรี่ใน Linux ไปไว้ใน USB ด้วย Command



1. ถ้าใช้คำสั่งแล้วมีการแจ้งเตือนมาว่า no such file directory
2.และถ้ามั่นใจแล้วว่า พาร์ทต้นทาง และ ปลายทาง ของเราถูกต้องแน่นอน
3. ให้ รีบูต 1 ครั้ง (sudo reboot)
4.ดูชื่อของแฟลชไดร์อีกครั้ง ว่าชื่อเดิม หรือ ไม่ แล้วกำหนดปลายทางให้ตรงกับชื่อแฟลชไดร์
5.ใช้คำสั่ง cp -r /ต้นทาง /ปลายทาง (อีกครั้ง)



-----------------------

การลบ ไดเรกเทอรี่  sudo rm -r /use/share/arduinol/ibrary/grbl

Raspberry pi load bit

1.ติดตั้งโปรแกรม Screen โดยการพิมพ์คำสั่ง     sudo apt-get install screen



2.ลงโปรแกรมโหลดบิท โดยการพิมพ์คำสั่ง sudo apt-get install deluged





3. Web Ui   โดยการพิมพ์คำสั่ง  sudo apt-get install deluge-web






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



4.พิมพิ์คำสั่ง pwd  กดปุ่ม Enter  เพื่อตรวจดูว่าในขณะนี้เราอยู่ในไดเร็กทอรี่ใด
จากภาพไดเรกเทอรี่ปัจจุบันคือ /home/pi






5.เมื่อต้องการเก็บไฟล์ไว้ใน ไดเร็กทอรี่ /home/pi  (สามารถเก็บไว้ในที่ใดก็ได้ ไม่จำเป็นว่าต้องไว้ใน /home/pi ได้อย่างเดียว) ให้ทำการสร้างโฟลเดอร์ขึ้นมา 1 โฟลเดอร์ ตั้งชื่อเป็นอะไรก็ได้
ดังตัวอย่าง เป็นโฟลเดอร์ชื่อ download_bit

พิมพ์คำสั่ง sudo mkdir download_bit   เพื่อทำการสร้างโฟลดเดอร์ชื่อ download_bit




6.พิมพ์คำสั่ง ls  กดปุ่ม Enter 
เพื่อเรียกดูไฟล์ หรือ โฟลเดอร์ต่างๆใน ไดเร็กทอรี่ปัจจุบัน ( /home/pi )
จะเห็นได้ว่า มีโฟลเดอร์ download_bit เกิดขึ้นมาแล้ว





7.พิมพ์สั่ง deluge-web  กดปุ่ม Enter 
เพื่อพิมพ์คำสั่งเสร็จแล้ว ก่อนปิด Terminal ให้กดปุ่ม  Ctrl + a  + d
เป็นคำสั่งที่กำหนดให้ทำงานอยู่เบื้องหลัง ถึงแม้เราจะเปิด Terminal ไปก็ตาม แต่โปรแกรมก็ยังทำงานอยู่ ปิดหน้า terminal ได้เลย หรือ ไม่ปิดก็ได้




8.เปิดเว็บเบราเซอร์ในคอมพิวเตอร์ แล้วพิมพ์ในช่อง url ด้วย IP ของบอร์ด ราสเบอรี่
แล้วตามด้วยพอร์ต 8112
ดังตัวอย่างในที่นี้ IP คือ 192.168.1.137 ตามด้วยพอร์ต 8112 จะได้
192.168.1.137:8112  กดปุ่ม Enter




9.เมื่อเข้าสู่หน้าเว็บโหลดบิทได้จะมีหน้าตาแบบนี้





10. มีหน้า Login ให้ใส่รหัส  deluge ลงไปในช่อง password กดปุ่ม Login




11.มีหน้า connection Manager เด้งขึ้นมา ซึ่งจะมี IP ของ Rasberry pi ของเราอยู่
คลิกที่ IP และ คลิกปุ่ม Start Daemon






12. รอสักครู่...  กดปุ่ม Connect






13. คลิกที่ Preferentes





14. เลืกหัวข้อ Downloads
      พิมพ์ ไดเรกทอรี่ปลายทางที่จะเก็บไฟล์ดาวน์บิท ในช่อง Download to ตามที่เราได้สร้าง โฟลเดอร์ไว้ในขั้นตอนที่ 5
        พิมพ์เสร็จแล้ว กดปุ่ม Apply และ กดปุ่ม OK





15.กดปุ่ม Add





16.กดปุ่ม File





17.กดปุ่ม  Browse


 

18. เลือกไฟล์ .turrent  กดปุ่ม Open





19.กดปุ่ม Add





20.กดปุ่ม Add







21.รอดาวน์โหลดเสร็จ









22.เมื่อดาวน์โหลดเสร็จแล้ว สามารถเข้าไปดูไฟล์ใน Raspberry pi ได้เลย
ยกตัวอย่าง
วิธีที่ 1 ดูไฟล์ด้วย terminal

        1.1เปิด terminal พิมพ์คำสั่ง cd /home/pi/download_bit





        1.2 พิมพ์คำสั่ง ls เพื่อเรียกดูไฟล์ภายในไดเร็กเทอรี่ ก็จะเห็นไฟล์ที่เราดาวน์โหลดมา     






วิธีที่ 2 ดูไฟล์ และ คัดลอกไฟล์จาก Raspberry pi มาไว้ในคอมพิวเตอร์ด้วย WinSCP
        2.1 ดาวน์โปรแกรมได้ที่นี้ http://winscp.net/eng/download.php
        2.2 ติดตั้งโปรแกรม
2.3 เปิดโปรแกม เลือก session
2.4 พิมพ์  IP ในช่อง Hostname
2.5 พิมพ์ pi ในช่อง user หรือ root ก็ได้
** root เพื่อใช้งานในสิทธิ์ของ super user สามารถ เพิ่ม ลบ แก้ไข ไฟล์ ต่างๆได้
2.6 พิมพ์ raspberry ในช่อง password
** หากมีการเปลี่ยนแปลงรหัสแล้ว ก็ให้ใส่รหัสที่เราได้ทำการตั้งขึ้นใหม่ได้เลย
2.7 กดปุ่ม Login


 



2.8 ซีกด้านซ้ายจะเป็นส่วนจัดการไฟล์ในคอมพิวเตอร์
     ซีกด้านขวาจะเป็นส่วนจัดการไฟล์ใน Raspberry pi







2.9 เลือกไดเร็กทอรี่ไปที่ /home/pi
2.10 ดับเบิ้ลคลิกที่โฟลเดอร์ download_bit


 

2.11ก็จะเห็นไฟล์ หรือ โฟลเดอร์ ที่เราดาวน์โหลดบิทมา

 

2.12 คลิกขวาที่โฟลเดอร์ ที่โหลดบิทมา เลือก copy




2.13 เลือกไดเร็กทอรี่ปลายทาง กดปุ่ม Coppy





2.14 กำลังคัดลอกไฟล์ จาก Raspberry pi มาไว้ใน คอมพิวเตอร์ของเรา





2.15 เปิดดูไฟล์ในคอมพิวเตอร์





2.16 ถ้าอยากจะลบไฟล์ ใน Raspberry pi ให้ Login เข้าใช้งาน WinSCP โดยใช้ user เป็น root



ข้อความทั้งหมด พร้อมภาพประกอบผมสร้างขึ้นมา เพื่อเป็นประโยชน์ สำหรับผู้ที่สนใจอยากจะนำ Raspberrpy pi มาโหลดบิท โดยเฉพาะคนที่ชอบเล่นบิท

ข้อดี
1.ประหยัดไฟในขณะที่ได้ความเร็วสูง
2.ไม่ต้องใช้คอมพิวเตอร์คุมระบบ
3.Web Ui คุมได้ง่าย ทั้งใน Android iOS Windows ขอแค่มีเบราเซอร์และอยู่วงแลนเดียวกันก็พอ
4.หมดปัญหาค่าไฟจากการต้องรอคนปล่อย (Seeder) เนื่องจาก Raspberry Pi กินไฟน้อยมาก
5.รันได้ตลอด 24 ชม. ตลอด 7 วัน หากใช้ในที่อากาศไม่ร้อน ไม่เย็นเกินไป เพราะร้อนมากความร้อนจะทำให้อายุการใช้งานของตัว Pi ลดลง หรือเย็นเกินไป เพราะอาจจะมีละอองน้ำหรือไอน้ำเกาะอยู่ที่บอร์ดอาจทำให้บอร์ดเสียหายได้

หวังว่าคงเป็นประโยชน์ไม่มากก็น้อย โดยเฉพาะมือใหม่หัดทำ  หากผิดพลาดประการใด ขออภัยมา ณ ที่นี้ด้วยครับ ( ยินดีรับฟังความคิดเห็นเพิ่มเติม หากมีส่วนใดให้ปรับแต่ง แก้ไข ยินดีครับผม เอกสารแจกฟรี )


สุดท้ายนี้ขอขอบคุณคำแนะนำจากคุณ  ธีรวัฒน์ เอี่ยมสะอาด
http://raspberrypithailand.blogspot.com/






แก้ปัญหาต่างๆ ในคอมพิวเตอร์

วิธีแก้ไขปัญหาเครื่อง shutdown นานมาก

Arduino ประหยัดอินพุต แบบง่ายๆ ครับ

ประหยัดอินพุต แบบง่ายๆ ครับ







 int keyPin = A0;
int Value = 0;

int eeror = 10;

void setup()
{
Serial.begin(9600);
}

void loop()
{
Value = readKey();
Serial.print("KEY = ");
Serial.println(Value);
delay(100);
}

int readKey() {
byte key=0;
Value = analogRead(keyPin);
if(Value==1023)
key = 0;
if(Value==0)
key = 1;
if((Value>=180-eeror)&(Value<=180+eeror))
key = 2;
if((Value>=306-eeror)&(Value<=306+eeror))
key = 3;
if((Value>=512-eeror)&(Value<=512+eeror))
key = 4;
return key;
}


ขอขอบบทความดีๆจาก :: อ.ฉลอง ลักษณะวิเชียร


How to install driver Huawei aircard 3G /7.2Mb E303

How to install driver Huawei aircard 3G /7.2Mb E303
for linux Debian Rpi
อยากออกไปเตะขอบฟ้า อยากจะบอกว่า ได้แล้ว โว้ยยยยยยยย
------------------------------------------------------------
ดาวน์โหลด โปรแกรมที่ใช้ในการตั้งค่า
sudo apt-get install -y ppp usb-modeswitch
 



แตกไฟล์ที่ดาวน์โหลดมาข้างต้น
sudo tar xzvf umtskeeper.tar.gz && sudo tar xzvf sakis3g.tar.gz
sudo chmod +x sakis3g && sudo chmod +x umtskeeper
usbmodem='lsusb | grep Huawei | cut -d" " -f6'


lsusb เรียกดู ID ของอุปกรณ์ จะเห็นว่าอุปกรณ์ แอร์การ์ดของเรามี ID 12d1:140c ดังนี้

Bus 001 Device 006: ID 12d1:140c Huawei Technologies Co., Ltd.
นำ ID ไปใส่ใน USBMODEM=''


จะได้
sudo /home/pi/sakis3g/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:140c' APN="CUSTOM_APN" CUSTOM_APN="www.dtac.co.th" APN_USER='dtac' APN_PASS='dtac'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --nat 'no' --httpserver



ถ้ารันแล้วโค๊ดเรียกหาโฟลเดอร์ umtskeeper ให้พิมพ์
mkdir ~/umtskeeper

รันใหม่อีกครั้ง หรือ รีสตาร์ท sudo reboot แล้วรันใหม่

ทดสอบพิมพ์คำสั่ง ping 8.8.8.8 เพื่อทำการ ping ไปยังเว็ป google ดังรูป





ขอขอบคุณ แอดมินเพจ https://www.facebook.com/together.in.th มา ณ ที่นี้ด้วยครับ


Referrent :: http://www.together.in.th /

เอาไปใช้กับ Arduino มีชื่อเรียกว่า firmata

เอาไปใช้กับ Arduino มีชื่อเรียกว่า firmata











http://firmata.org/wiki

http://www.firmata.org/wiki/Download

วันอังคารที่ 4 สิงหาคม พ.ศ. 2558

Mini CNC For Maker

Mini CNC For Maker

แสดงการต่อไดร์อุตสาหกรรมด้วย Arduino ( ฉบับแก้ไข )


ติดตามบทความเกี่ยวกับ minicnc by arduino ทั้งหมด 5 บท ได้ที่
----------------------------------------
ติดตามรับชม วิธีการตั้งค่า จนสามารถใช้งาน Arduino ควบคุมมอเตอร์ตามแกนต่างๆได้ที่
----------------------------------------

จงหาวิธีคิด การสุ่มหาตัวเลขที่ต้องการ ให้ได้จำนวนการสุ่มที่น้อยที่สุด

Q & A

จงหาวิธีคิด การสุ่มหาตัวเลขที่ต้องการ ให้ได้จำนวนการสุ่มที่น้อยที่สุด
ถ้าผมสุ่มเลข 2 หลัก จะเลขอะไรก้ได้ขอแค่มันเป็น 2 หลัก
มีวิธีการหามันเจอได้อย่างไร โดยให้โปรแกรมใช้จำนวนรอบในการค้น น้อยที่สุด

A : binary search ครับ น่าจะเร็วสุด

B : ถ้าจะใช้ Binary Search เวลาทายผิดต้องมีการบอกใบ้ว่า มากกว่าหรือน้อยกว่าด้วยป่ะครับ แต่ถ้าไม่มีการบอกใบ้ผมว่าทำใน 10 รอบไม่ได้อะ

C : การสุ่มตัวเลขมา โดยให้ค้นหาให้หา จาก 00 - 99 โดยไม่มีตัวเลขซ้ำ ซึ่งข้อมูลเรียงกันแล้ว ผมว่าไม่ต้องวนลูป ก็รู้ตำแหน่งแล้วครับ แต่ถ้าข้อมูลไม่ได้เรียง ก็จะใช้ Binary Search ไม่ได้เช่นกัน

D : ของ D การทายเลขสองหลักเหมือนกัน แต่เป็นไบนารี่ สมมติ ตัวเลขที่สุ่มคือ 27 แปลงเป็นไบนารีคือ
001 1011

คำถามแรกคือ เป็นเลขคู่ใช่หรือไม่ > ไม่ใช่ บิตแรกเป็นหนึ่ง
คำถามที่สองคือ บิตที่สองเป็นบิตคู่ใช่หรือไม่ > ไม่ใช่ บิตนี้เป็นหนึ่ง
คำถามที่สาม บิตที่สามเป็นบิตคู่ใช่หรือไม่ > ใช่ บิตนี้เป็นศูนย์
คำถามที่สี่ บิตที่สี่เป็นบิตคู่หรือไม่ > ไม่ใช่ บิตนี้เป็นหนึ่ง
คำถามที่ห้า บิตที่ห้าเป็นบิตคู่หรือไม่ > ไม่ใช่ บิตนี้เป็นหนึ่ง
คำถามที่หก บิตที่หกเป็นบิตคู่หรือไม่ > ใช่ บิตนี้เป็นศูนย์
คำถามที่เจ็ด บิตที่เจ็ดเป็นบิตคู่หรือไม่ > ใช่ บิตนี้เป็นศูนย์

ก็จะได้ 001 1011


:Cr // สมาคมโปรแกรมเมอร์ไทย


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


แต่ข้อมูลทั้งหมดเนี่ยให้มาเพื่อ "หลอกควาย" คำถามอยู่ที่ โอกาสแพ้ ซึ่งเป็นไบนารี ไม่แพ้ก็ชนะ โอกาสแพ้ 0.5 โอกาสชนะ 0.5 ทั้งสองคนผลัดกันทายจึงมีโอกาสแพ้และชนะเท่ากัน สัดส่วนจำนวนเท่าของความน่าจะเป็นที่คนทายก่อนจะแพ้ ต่อความน่าจะเป็นที่คนทายทีหลังจะแพ้ คือ 0.5/0.5 = 1

Arduino Weight Sensor (Load Cell)

Arduino Weight Sensor  (Load Cell)


ภาพจาก :: http://www.dfrobot.com/wiki/index.php/Weight_Sensor_Module_V1





Weight Sensor (Load Cell) 0-500g :
http://www.thaieasyelec.com/products/sensors/flex-force-weight/weight-sensor-load-cell-0-500g-detail.html

Load Cell (Weight Sensor) 5 Kg :
http://www.arduino.in.th/product/347/load-cell-weight-sensor-5-kg

โมดูลแปลงสัญญาณจาก Load Cell เพื่อไปใช้กับ Arduino :
http://www.arduino.in.th/product/355/dual-channel-weight-sensor-module-hx711

Example Code:
http://www.dfrobot.com/wiki/index.php/Weight_Sensor_Module_V1

Library :
https://github.com/bogde/HX711




ภาพจาก :: http://www.dfrobot.com/wiki/index.php/Weight_Sensor_Module_V1

โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์ Arduino

 โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์

       โดยใช้บอร์ด Arduino UNO R3 เป็นคอนโทรลเลอร์ในการติดต่อกับ อุปกรณ์อินพุต (สวิตซ์) และ อุปกรณ์เอาต์พุต (หลอด LED  และบอร์ด MP3)

อุปกรณ์ที่ใช้ในการทดลอง
1.บอร์ด Arduino UNO R3
2.บอร์ด MP3
3.หลอด LED
4.ตัวต้านทาน 100 โอห์ม
5.ตัวต้านทาน 4.7 กิโลโอห์ม
6.สวิตปุ่มกด
7.แจ็คลำโพลงตัวเมีย
8.ลำโพง
9. USB Type B
         10.ถ่าน 9 โวลต์ หรือ ใช้สาย USB Type B เสียบที่ บอร์ด Arduino UNO R3 เข้ากับ Power bank
         11.สายไฟ

  





อธิบายหลักการทำงานของระบบ
เมื่อมีการกดปุ่มสวิตซ์(Pull up) บอร์ด Arduino UNO R3 จะทำการรับอินพุตเข้ามา แล้วนำไปตรวจสอบเงื่อนไขว่าปุ่มกดที่กดเข้ามานั้น เป็นปุ่มกดที่เท่าไร เช่น มีการกดปุ่มที่1 เข้ามา บอร์ด Arduino UNO R3 ก็จะส่งข้อมูลไปยัง บอร์ด MP3 ผ่านพอร์ต Serial ให้ทำการเล่นเสียงลำดับที่ 001 ซึ่งข้อมูลที่ส่งเข้ามาจะเป็นข้อมูลฐานสิบหก (0x01) โดยสัญญาณเสียงที่ปล่อยออกจากมาบอร์ด MP3 จะถูกส่งออกมาทางพิน PH_L (เสียงลำโพงด้านซ้าย) และ PH_R (เสียงลำโพงด้านขวา)  แล้ว บอร์ด Arduino UNO R3 สั่งในหลอด led ที่ 1 ติดสว่าง เพื่อเป็นการบอกตำแหน่งของอุปกรณ์นั้นๆ เมื่อเสียงลำดับที่ 1 เล่นจบ บอร์ด Arduino UNO R3 ก็จะรอรับคำสั่งต่อไป
แต่ถ้ามีการกดปุ่มใดๆในระหว่างเล่นเสียงลำดับที่ 001 ยังเล่นไม่จบ บอร์ด Arduino UNO R3 ก็จะทำการหยุดเสียงลำดับเสียงที่ 001 แล้วจะทำการเล่นเสียลำดับถัดไปทันที

 ยกตัวอย่าง ให้อุปกรณ์ตัวที่ 1 เป็นแรม
เมื่อมีการกดปุ่มที่ 1 บอร์ด Arduino UNO R3 ก็จะสั่งให้ หลอด led ที่1 ติดสว่าง ซึ่งเป็นการบอกถึงตำแหน่งของแรม และ บอร์ด Arduino UNO R3 ก็จะส่งข้อมูล (0x01) ไปให้ บอร์ด MP3 เพื่อให้เล่นเสียงลำดับที่ 001 หรือ เป็นการเล่นเสียงความหมายของแรมนั้นเอง เมื่อเล่นจนจบไฟล์เสียงแรมนี้แล้ว บอร์ด Arduino UNO R3 ก็จะรอรับคำสั่งต่อไป

สิ่งที่ต้องเตรียม
     ดาวน์โหลดไลบราลี่ SofewareSerial ไปวางไว้ใน C:\Program Files (x86)\Arduino\libraries

** การใช้งานโหมด Serial ต้องบัดกรีจุด M0 ให้ลอยขาไว้ ส่วน M1 ให้ต่อลงกราวน์ ดังภาพ

ภาพจาก   http://www.thaieasyelec.com/


ศึกษาการใช้งาน บอร์ด MP3 เพิ่มเติมได้ที่
                http://www.thaieasyelec.com/products/embedded-module/thaieasyelec-mp3-embedded-module-detail.html

อธิบายการเขียนโปรแกรม








บรรทัดที่ 1 เรียกใช้ไลบราลี่ SoftwareSerial ซึ่งทำหน้าที่เป็นพอร์ตสื่อสาร ในการรับ ส่ง ข้อมูล
               ดาวน์โหลดไลบราลี่ SofewareSerial ไปวางไว้ใน C:\Program Files (x86)\Arduino\libraries

บรรทัดที่ 3 กำหนดพิน D2 เป็นขา Rx ( รับข้อมูล )
                กำหนดพิน D3 เป็นขา Tx ( ส่งข้อมูล )
เพื่อกำหนดเป็นพินการสื่อสารข้อมูลระหว่างบอร์ด Arduino กับบอร์ด MP3

บรรทัดที่ 5  กำหนดพิน D4 (พินดิจิตอล) ให้เก็บอยู่ในตัวแปร BUSY
บรรทัดที่ 6  ประกาศตัวแปรชนิดบูลีน ชื่อ cmd_stop ให้มีค่าเท่ากับ false (เป็นเท็จ)

บรรทัดที่ 9   กำหนดพิน A0 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt0  ( ปุ่มกดที่ 1 )
บรรทัดที่ 10 กำหนดพิน A1 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt1  ( ปุ่มกดที่ 2 )
บรรทัดที่ 11 กำหนดพิน A2 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt2  ( ปุ่มกดที่ 3 )
บรรทัดที่ 12 กำหนดพิน A3 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt3  ( ปุ่มกดที่ 4 )
บรรทัดที่ 13 กำหนดพิน A4 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt4  ( ปุ่มกดที่ 5 )
บรรทัดที่ 14 กำหนดพิน A5 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt5  ( ปุ่มกดที่ 6 )







บรรทัดที่ 18 กำหนดพิน D5  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led0  ( led หลอดที่ 1)
บรรทัดที่ 19 กำหนดพิน D6  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led1  ( led หลอดที่ 2)
บรรทัดที่ 20 กำหนดพิน D7  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led2  ( led หลอดที่ 3)
บรรทัดที่ 21 กำหนดพิน D8  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led3  ( led หลอดที่ 4)
บรรทัดที่ 22 กำหนดพิน D9  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led4  ( led หลอดที่ 5)
บรรทัดที่ 23 กำหนดพิน D10 (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led5  ( led หลอดที่ 6)








บรรทัดที่ 26 ประกาศฟังค์ชั่น setup() ทำหน้าที่เป็นตัวกำหนดหน้าที่ของพินต่างๆของไมโครคอนโทรลเลอร์

บรรทัดที่ 28 กำหนดให้ตัวแปร bt0 หรือ พิน A0 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 29 กำหนดให้ตัวแปร bt1 หรือ พิน A1 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 30 กำหนดให้ตัวแปร bt2 หรือ พิน A2 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 31 กำหนดให้ตัวแปร bt3 หรือ พิน A3 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 32 กำหนดให้ตัวแปร bt4 หรือ พิน A4 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 33 กำหนดให้ตัวแปร bt5 หรือ พิน A5 ทำหน้าที่เป็น อินพุต







บรรทัดที่ 35 กำหนดให้ตัวแปร led0 หรือ พิน D5  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 36 กำหนดให้ตัวแปร led1 หรือ พิน D6  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 37 กำหนดให้ตัวแปร led2 หรือ พิน D7 ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 38 กำหนดให้ตัวแปร led3 หรือ พิน D8  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 39 กำหนดให้ตัวแปร led4 หรือ พิน D9  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 40 กำหนดให้ตัวแปร led5 หรือ พิน D10 ทำหน้าที่เป็น เอาต์พุต

บรรทัดที่ 42 กำหนดให้ตัวแปร BUSY หรือ พิน D4 ทำหน้าที่เป็น INPUT
บรรทัดที่ 43 กำหนด อัตราความเร็วในการแสดงผลข้อมูล ผ่านทาง Serialmonitor มีความเร็วที่ 9600
บรรทัดที่ 44 กำหนด อัตราความเร็วในการรับ-ส่ง ข้อมูล ผ่านทางสาย serial มีความเร็วที่ 9600
บรรทัดที่ 45 ปิดฟังก์ชั่น setup()





บรรทัดที่ 47 ประกาศฟังค์ชั่น loop() ซึ่งทำหน้าที่สั่งงานไมโครคอนโทรลเลอร์ ในลักษณะการทำงานวนซ้ำๆ

บรรทัดที่ 50 ถ้ามีการกดสวิทซ์ bt0 (ปุ่มกดที่ 1) จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 52-56
บรรทัดที่ 51 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt0 (ปุ่มกดที่ 1)
บรรทัดที่ 52 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 53 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 54 สั่งให้ led0 ติดสว่าง( led หลอดที่ 1) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 1
บรรทัดที่ 55 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 001
บรรทัดที่ 56 เมื่อเสียงที่ 001 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 001 ซ้ำ
บรรทัดที่ 57 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt0  (ปุ่มกดที่ 1)

บรรทัดที่ 60 ถ้ามีการกดสวิทซ์ bt1 (ปุ่มกดที่ 2)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 62-66
บรรทัดที่ 61 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt1 (ปุ่มกดที่ 2)
บรรทัดที่ 62 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 63 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 64 สั่งให้ led1 ติดสว่าง( led หลอดที่ 2) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 2
บรรทัดที่ 65 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 002
บรรทัดที่ 66 เมื่อเสียงที่ 002 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 002 ซ้ำ
บรรทัดที่ 67 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt1  (ปุ่มกดที่ 2)







บรรทัดที่ 70 ถ้ามีการกดสวิทซ์ bt2 (ปุ่มกดที่ 3)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 72-76
บรรทัดที่ 71 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt2 (ปุ่มกดที่ 3)
บรรทัดที่ 72 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 73 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 74 สั่งให้ led2 ติดสว่าง( led หลอดที่ 3) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 3
บรรทัดที่ 75 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 003
บรรทัดที่ 76 เมื่อเสียงที่ 003 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 003 ซ้ำ
บรรทัดที่ 77 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt2  (ปุ่มกดที่ 3)


บรรทัดที่ 80 ถ้ามีการกดสวิทซ์ bt3 (ปุ่มกดที่ 4)   จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 82-86
บรรทัดที่ 81 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt3 (ปุ่มกดที่ 4)
บรรทัดที่ 82 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 83 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 84 สั่งให้ led3 ติดสว่าง( led หลอดที่ 4) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 4
บรรทัดที่ 85 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 004
บรรทัดที่ 86 เมื่อเสียงที่ 004 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 004 ซ้ำ
บรรทัดที่ 87 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt3  (ปุ่มกดที่ 4)





บรรทัดที่ 90 ถ้ามีการกดสวิทซ์ bt4 (ปุ่มกดที่ 5)   จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่  92-96
บรรทัดที่ 91 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt4 (ปุ่มกดที่ 5)
บรรทัดที่ 92 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 93 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 94 สั่งให้ led4 ติดสว่าง( led หลอดที่ 5) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 5
บรรทัดที่ 95 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 005
บรรทัดที่ 96 เมื่อเสียงที่ 005 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 005 ซ้ำ
บรรทัดที่ 97 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt4  (ปุ่มกดที่ 5)

บรรทัดที่ 100 ถ้ามีการกดสวิทซ์ bt5 (ปุ่มกดที่ 6)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 103-107
บรรทัดที่ 101 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt5 (ปุ่มกดที่ 6)
บรรทัดที่ 103 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 104 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 105 สั่งให้ led5 ติดสว่าง( led หลอดที่ 6) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 6
บรรทัดที่ 106 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 006
บรรทัดที่ 107 เมื่อเสียงที่ 006 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 006 ซ้ำ
บรรทัดที่ 109 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt5  (ปุ่มกดที่ 6)

บรรทัดที่ 112 สิ้นสุดการทำงานของฟังก์ชั่น loop()







บรรทัดที่ 124 ประกาศฟังก์ชั่นย่อย  led_off ทำหน้าที่สั่งปิด led ทุกหลอด

บรรทัดที่ 127 สั่งให้ led0  ดับ ( led หลอดที่ 1 ดับ)
บรรทัดที่ 128 สั่งให้ led1  ดับ ( led หลอดที่ 2 ดับ)
บรรทัดที่ 129 สั่งให้ led2  ดับ ( led หลอดที่ 3 ดับ)
บรรทัดที่ 130 สั่งให้ led3  ดับ ( led หลอดที่ 4 ดับ)
บรรทัดที่ 131 สั่งให้ led4  ดับ ( led หลอดที่ 5 ดับ)
บรรทัดที่ 132 สั่งให้ led5  ดับ ( led หลอดที่ 6 ดับ)

บรรทัดที่ 134 ปิดฟังก์ชั่นย่อย led_off 




บรรทัดที่ 140ประกาศฟังก์ชั่นย่อย  stop_sound ทำหน้าที่สั่งหยุดเล่นเสียง

บรรทัดที่ 142 สั่งให้ หยุดเล่นเสียง
บรรทัดที่ 143 สั่งให้ โปรแกรมส่งคำสั่งเพียงรอบเดียว
บรรทัดที่ 144 สั่งให้ หน่วงเวลา 0.2 วินาที

บรรทัดที่ 145 ปิดฟังก์ชั่นย่อย stop_sound