ฉก. นิสิตวิชา Embedded System ภาคปลาย/2558 อ.วัลลภ อินทร์ฉ่ำ

8 replies [Last post]
ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

มีข่าวสารอะไร ผมจะโพสต์ไว้ที่นี่นะ



Share

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

ส่งงาน Day3: การต่อใช้งาน 7-Segment และ LCD

โจทย์ :
1. ให้ใช้ชิพเบอร์ AT Mega16

2. ให้ออกแบบวงจรโดยต่อเข้ากับ 7-Segment แบบ Common Cathode 2 หลัก และแผงจอ LCD 16x2 จำนวน 1 ตัว โดยต่อแบบโหมด 4-bit

3. ให้เขียนโปรแกรมภาษา C และ Basic เพื่อนับตัวเลข 0-99 และวนไป 0 ใหม่ โดยแสดงผลที่ที่ส่วนของ 7-Segment 2 หลัก และ ถ้าแสดงเลข 0-9 (หลักหน่วย) Segment หลักสิบ ต้องดับ และในขณะเวลาเดียวกัน ที่จอ LCD ให้แสดงผลตัวเลขคล้ายนาฬิกาในหน่วย นาที:วินาที 00:00 - 01:39 ด้วยเช่นกัน 

4. ให้นับเลขครั้งละ 1 วินาที และในส่วนของ LCD ให้แสดง ':' กระพริบทุก ๆ ครึ่งวินาที เช่น 00 00 --> 00:01 --> 00 01 --> 00:02 ...
---

1. ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org ไม่เกิน 24/02/59 Subject :Day3/58-2
2. ต่อวงจรส่งในห้องท้ายคาบ หลังจากเรียนงานใหม่ ในวันที่ 25/02/59

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

ส่งงาน Day4-1:

1. ให้ออกแบบวงจรโดยมีปุ่มกดหรือสวิตช์ จำนวน 9 ปุ่ม โดยให้ต่อแบบ Matrix 3x3 และมี 7-segment 1 หลัก ถ้ากดปุ่มไหน (1-9) ให้แสดงตัวเลข 1-9 ที่ 7-segment ถ้าไม่กดปุ่มเลย ให้แสดงเลข 0
2. ใช้ชิพ ATMega32
3. กำหนดการใช้งานพอร์ตเองตามใจชอบ
4. ส่งทั้งภาษาซี และ เบสิก
** สวิตช์ อาจจะต้องมีการต่อ R และ Gnd เพิ่ม เพื่อทำให้ได้ค่า 0 หรือ 1 ที่ แน่นอน เมื่อกดปุ่ม และไม่กดปุ่ม (หรือจะใช้ internal pull up ก็ได้)

1. ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org  ไม่เกิน 09/03/59  Subject :Day4-1/58-2
2. อาจจะตรวจกับ proteus หรือต่อจริงในห้อง ในวันที่ 10/03/59

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

ส่งงาน Day4-2  การใช้งาน ADC (Analog to Digital Converter) และ LCD

โจทย์ :
1. ให้นิสิตสร้างวงจร โดยมีอุปกรณ์ดังนี้
- ใช้ชิพ AT Mega32
- ติดต่อกับ สัญญาอินพุตอนาล็อก ** 2 ช่อง ** ไม่ใช่ 1 ช่องตามที่พูดในห้อง เลือกพอร์ตอินพุตตามใจชอบ สมมติชื่อ Ch1 กับ Ch2 โดยต่อ Reference แบบ AVCC
- จอแสดงผล LCD 16x2 ต่อแบบ 4-Bit Mode

2. ให้เขียนโปรแกรมทั้งภาษา เบสิก และ ภาษาซี เพื่อให้ทำงานดังต่อไปนี้ (อ่าน ADC 2 ข่อง)
- 1. ให้แสดงผลค่าอินพุต Voltage ที่อ่านได้จาก Ch1 ลงบนจอ LCD บรรทัดที่ 1 โดยแสดงเป็นแถบ Bar คล้าย ๆ VU Meter มีขนาด 50 ช่อง Scan (โดยใช้ 10 ตัวอักษร) โดยที่เมื่อปรับค่าอินพุดไปที่ 0 โวลต์แล้ว แถบต้องมาอยู่ชิดด้านซ้ายสุด และเมื่อปรับโวลต์ไปที่ค่าสูงสุด แถบต้องวิ่งกว้างกินไปถึงด้านขวาสุด
- 2. ให้แสดงผลค่าอินพุต Voltage ทีอ่านได้จาก Ch2 ลงบนจอ LCD บรรทัดที่ 2 โดยให้แสดงเป็นค่า Digital ที่อ่านได้ และค่า Volt ที่อ่านเข้ามาได้แบบทศนิยม 2 ตำแหน่ง ดังตัวอย่างด้านล่าง

ตัวอย่าง Output:
Ch1:[|||||| ] <--- แสดง Ch1 เป็นแบบแถบเลื่อนตามที่ได้เดโมให้ดู ในห้อง (มีกรอบ [  ] ปิดหัวท้ายด้วย)  [ มี 50 แถบเล็ก โดยใช้ 10 Char ]
Ch2:512, 2.50 V <--- แสดง Ch2 เป็นแบบค่า จาก ADC แบบข้อมูลดิบ และแบบแสดงเป็นค่าโวลต์ 0-5 แบบทศนิยม 2 ตำแหน่ง

- เมื่อปรับ Voltage แล้ว ค่า Ch1 และ Ch2 ต้องเปลี่ยนตามแบบ Real Time :)

1. ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org ไม่เกิน 16/03/59 Subject :Day4-2/58-2
2. ต่อวงจรส่งในห้องท้ายคาบ หลังจากเรียนงานใหม่ ในวันที่ 17/03/59 หรือช่วงหลังสอบ

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

การบ้าน Day6 : Timer Interrupt / 7 Segment

1. ให้นิสิตออกแบบต่อวงจรโดยใช้ 7-Segment 4 หลัก common cathode หรือ Ground ร่วม แต่ว่าตอนต่อใน proteus ให้ต่อ Not Gate คั่นไว้ด้วย เพื่อที่ตอนส่งเลือกหลักออก จะได้ใช้ลอจิก 1 เพื่อให้หลอดติด เพราะว่า บอร์ดที่ใข้ต่อวงจรเป็นแบบนี้ ไม่ใช่ใช้ 0 เพื่อทำเลือกหลัก เช่นใช้ 7SEG-MPX4-CC + Not Gate
2. โดย 7-segment ที่ใช้ต้องเป็นแบบ 4 หลักทักแผงเลย แต่ใครจะใช้ทีละตัวมาต่อพ่วงกันก็ได้ แต่ว่า ต้องมีชุดแสดง segment a,b,c,d,e,f,g,dp แค่ชุดเดียว และมีจำนวน ขา common = 4 ขา สรุปรวมแล้ว ห้ามใช้ I/O เกิน 12 ขา (8+4) ในการแสดงผล LCD 4 หลัก
3. ให้เขียนโปรแกรมเพื่อแสดงการวิ่งของเวลา โดยที่ 2 หลักแรกวิ่งเป็นหน่วยวินาที และสองหลักสุดท้ายวิ่งเป็น 1 ใน 100 วินาที และให้แสดงผลแบบมีจุดคั่นระหว่างวินาที กับ 1/100 วินาทีด้วย โดยใช้ Timer Interrupt ทำงาน 
4. การแสดงผล ถ้าหลักวินาทีเป็น 0-9 ให้แสดงเป็น 0-9 ไม่ใช่แสดงเป็น 00-09 และส่วนวหลัก 1/100 วินาที ไม่เป็นไรให้แสดง 00-99 ได้  ตัวอย่างการแสดงเช่น 0.03   12.55    14.22  9.12 
5. ให้ใช้การแสดงผลแบบ Scan เพราะว่า ตลอดเวลา 7-seg ต้องติดทั้ง 4 ตัว (เสมือนว่าติดค้าง 4 ตัว) แต่จริง ๆ แล้วคือไล่สลับเวียนกันไปเรื่อย ๆ ทีละหลัก แต่ทำงานเร็วมาก เสมือนติดพร้อมกัน 4 ดวง ให้นิสิตกำหนดเวลาการแดสงผลเอง เป็นไปได้ ห้ามกระพริบ และให้สว่างขัดเจน :D

1. ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org ไม่เกินในเวลาเรียนของวันที่  31/03/59 Subject :Day6
2. ต่อวงจรส่งในห้องท้ายคาบ หลังจากเรียนงานใหม่ ในวันที่ 31/03/59

 

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

ส่งงาน Day 7:เขียนโปรแกรมเกมทายตัวเลข 1-100 (สุ่ม) โดยให้รับตัวเลขและแสดงผลลัพธ์ออกทาง RS232 พร้อมแสดงวันที่และเวลา

1. โดยที่เมื่อเริ่มจ่ายไฟระบบจะถามค่าเพื่อให้ตั้งวันที่ และเวลา (ไม่ได้กำหนดรูปแบบการกรอก) ให้กรอกทั้ง วันที่ เดือน ปี ชม. นาที วินาที
2. ทุกครั้งที่มีการทายตัวเลข ระบบจะแสดงค่าวันที่และเวลาปัจจุบันออกมา
3. ให้ทายตัวเลขได้ไม่เกิน 10 ครั้ง ถ้าเกินให้กลับไปเริ่มใหม่ ทุก ๆ ครั้งที่ทายผิด โปรแกรมจะอัพเดธค่าช่วงของการทายให้อัตโนมัติ
4. ถ้าทายถูกภายใน 10 ครั้ง ให้แสดงประมาณว่า You Win. และก็ไปเริ่มใหม่

ตัวอย่าง

Please Enter Date :DD/MM/YY  (ไม่ได้กำหนดว่าต้องกรอกทีเดียว ทั้ง 3 ค่า แค่ตัวอย่าง)
Please Enter Time :HH:MM:SS (ไม่ได้กำหนดว่าต้องกรอกทีเดียว ทั้ง 3 ค่า  แค่ตัวอย่าง)

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#1 Please Guess Number (1 - 100) ? 50
Too much.

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#2 Please Guess Number (1 - 50) ? 25
Too less.

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#3 Please Guess Number (25 - 50) ? 38
Too much.

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#4 Please Guess Number (25 - 38) ? 44
I said 25-34 -_-

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#5 Please Guess Number (25 - 38) ? 32
Too less.

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#6 Please Guess Number (32 - 38) ? 35
Too less.

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#7 Please Guess Number (35 - 38) ? 37
You Win :D Hoo ray

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#1 Please Guess Number (1 - 100) ?

.....

แต่ถ้าเกิน 10 ครั้ง

Current Date : DD/MM/YY
Current Time : HH:MM:SS
#10 Please Guess Number (35 - 38) ? 36
You are buffalo !! -____-


แล้วกลับไปเริ่มเกมใหม่

----------

1. ส่งเมล์ วงจรและ code ภาษาเบสิก ส่งงานมาที่ em800@ixhundred.org ไม่เกิน 20/04/59  Subject :Day7/58-2
2. ต่อวงจรส่งในห้องท้ายคาบ หลังจากเรียนงานใหม่ ในวันที่ 21/04/59

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

งานโปรเจ็คประจำภาคเรียน  (กลุ่มละ 5 คน) ส่งวันสุดท้ายของการเรียนการสอน

1. เปิด ปิด อุปกรณ์ 4 ช่อง ผ่านทางหน้าเว็บ
2. เปลี่ยนรหัสผ่านได้ (password) ไม่เกิน 8 ตัว
3. เปลี่ยน IP ได้  (x.x.x.x)
4. เปลี่ยน Port ได้   (0-65535)
5. จดจำสถานะล่าสุด คือเมื่อจ่ายไฟมาใหม่ อุปกรณ์ต้องเปิด ปิด ตามสถานะล่าสุดที่ปิดเปิดค้างไว้ (ถ้าเกิดว่าไม่ได้ส่งงาน เรื่อง EEPROM)

ตัวอย่าง URL เปลี่ยน IP
http://192.168.1.99/12345678/7?192.168.1.40.&

ตัวอย่าง URL เปลี่ยน Password
http://192.168.1.99/1234/9?12345678&12345678&

ตัวอย่าง เปิด/ปิด ช่อง 3
http://192.168.1.99/1234/6/?13&   เปิด
http://192.168.1.99/1234/6/?03&   ปิด

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

คะแนนสอบกลางภาค :D เอาไปดูก่อน Final ยังไม่ได้ไปเอาข้อสอบมาเลย อาจจจะรอพร้อม OS นะ :D [22/05/2559]
คะแนนสอบกลางภาค

คะแนนสูงสุด : 5630300644   นายภัทรพล สวัสดี

ixhundred
(วัลลภ อินทร์ฉ่ำ)

E.50
ixhundred's picture

คะแนนสอบปลายภาค (+กลางภาค)

score

สอบปลายภาค คะแนนสูงสุด : 5630300857 นายสันติ แซ่ลี

คะแนนสอบทั้งหมด (100) = เข้าเรียน (10) + สอบกลางภาค (25) + สอบปลายภาค (25) + งานกลุ่ม (10) + การบ้าน/ส่งงานในห้อง (30)
เข้าเรียน (10) = มาสายได้ 80% มาไม่สาย/ลา/ป่วย/แจ้งให้ทราบ ได้ 100% ไม่มาเลย 0%
-- ผมบอกแล้วให้เรียนเยอะ เพราะบางทีจะได้มากกว่าคะแนนสอบ ไม่เชื่อผม :D
งานกลุ่ม (10) = ถ้าได้ครบตามโจทย์กำหนดก็ได้ 100% ถ้าไม่ ก็หักไปเรื่องละ 10% ไม่ส่ง 0%
การบ้าน/ส่งงานในห้อง (30) = ส่งตรงเวลาได้ 100% ส่งช้าได้ 80%

ลองรวม ๆ คะแนนกันก่อนเองเลยนะ ว่าจะได้ซักเท่าไร เผื่อจะได้ทราบเกรดกันในใจ :)

ขอให้นิสิตฝึกงานสนุกสนานนะ :D