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

11 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

ส่งงาน Day2-1:

1. ให้ออกแบบวงจรโดยมีปุ่มกดหรือสวิตช์ จำนวน 16 ปุ่ม โดยให้ต่อแบบ Matrix 4x4 และมี LED 5 หลอด (แทนบิตที่ 4 3 2 1 0)  ถ้ากดปุ่มไหน (1-16) ให้แสดงค่าตัวเลขฐาน 2 (Binary 1-16 ที่ LED ซึ่งจะแสดงค่าระหว่าง 00001-10000 ถ้าไม่กดปุ่มเลย ให้แสดง LED 00000)
2. ใช้ชิพ ATTiny2313
3. กำหนดการใช้งานพอร์ตเองตามใจชอบ
4. ส่งทั้งภาษาซี และ เบสิก
** สวิตช์ อาจจะต้องมีการต่อ R และ Gnd เพิ่ม เพื่อทำให้ได้ค่า 0 หรือ 1 ที่ แน่นอน เมื่อกดปุ่ม และไม่กดปุ่ม (หรือจะใช้ internal pull up ก็ได้)

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

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

E.50
ixhundred's picture

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

โจทย์ :

1. ให้ใช้ชิพเบอร์ AT Mega32

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

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

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

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

*อย่าลืมแนบรายชื่อนิสิตมาด้วย

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

E.50
ixhundred's picture

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

โจทย์ :

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

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 :)

 

** ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org ไม่เกิน 09/03/60 Subject :Day4/60

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

E.50
ixhundred's picture

ส่งงาน Day 5: การใช้งานเซ็นเซอร์อุณหภูมิ

โจทย์: 
1. ให้นิสิตสร้างวงจรโดยมีอุปกรณ์ดังนี้
-ใช้ชิพ ATMega32
-ต่อกับเซ็นเซอร์วัดอุณหภูมิ 18B20 และจอ LCD 16x4

2. ให้เขียนโปรแกรมทั้งสองภาษา โดยมีคุณลักษณะดังนี้
-แสดงค่าอุณหภูมิออกทาง จอ LCD โดยให้มีทศนิยม 1 ตำแหน่ง แบบเรียลไทม์

ตัวอย่าง ที่ออกจาก LCD
Temp : 28.2 C


** ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800@ixhundred.org ไม่เกิน 16/03/60 Subject :Day5

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

E.50
ixhundred's picture

คะแนนสูงสุด : 5730300573 นายพิษณุ โพคา

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

E.50
ixhundred's picture

ส่งงาน Day 8:เขียนโปรแกรมเกมทายตัวเลข 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 !! -____-

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

----------

** ส่งเมล์ วงจรและ code ทั้ง 2 ภาษา ของทั้งสองงาน มาที่ em800@ixhundred.org ไม่เกิน 06/04/2560
Subject :Day8


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

E.50
ixhundred's picture

ส่งงาน Day 10: การใช้งาน LED Matrix

จากตัวอย่างใน Lab ให้นิสิตปรับแก้ให้เป็นตัวอักษรวิ่ง โดยสิ่งที่จะแสดงให้ใช้ข้อมูลอะไรก็ได้ เช่นไปทำภาพขนาด 8x24 แบบ 2 สี (ขาว กับ ดำ) มาแล้วมาพล็อตลงหน่วยความจำ การวิ่งจะให้วิ่งวนจากซ้ายไปขวา หรือจากขวาไปซ้ายก็ได้

** ส่งเมล์ code ภาษาเบสิก มาที่ em800@ixhundred.org ไม่เกิน 20/04/2560 
Subject :Day10

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

E.50
ixhundred's picture

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

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

รายการงานที่ต้องต่อบอร์ดจริงส่ง

1. งานในห้องไฟวิ่ง 8 ดวงพร้อมปุ่มกดเปลี่ยนทิศทาง ถ้าไม่กดอะไรจะเด้งกลับเอง

2. การบ้าน Day2-1

3. การบ้าน Day3

4. การบ้าน Day4

5. การบ้าน Day5

6. การบ้าน Day6 (พึ่งสั่ง ลืม :d ดูด้านล่าง)

7. งานในห้อง Day6 ขยายเพิ่มเติม คือให้ทำวงจรหรี่ไฟ 3 ช่อง ให้มืดให้สว่าง โดยที่ จะเอา 3 ช่องนั้นไปต่อกับหลอด 3 สี RGB (ground ร่วม) ต้องให้แสดงสี 7 สี เวียนกันไปจาก ดับหมดแล้วค่อย ๆ ส่ว่างขึ้นไป แล้วหรี่ลงมาดับ แล้วเปลี่ยนสีสว่างขึ้นไป โดยมี 7 สีมีดังนี้ R, G, B, RG, RB, GB, RGB

8. การบ้าน Day8

9. งานในห้อง Day9 (ต่อมอเตอร์ ให้ DC Motor หมุนไปกลับ 2 ทิศทางได้ และ Stepper Motor หมุนไปกลับได้ แบบช้า และเร็ว)

10. การบ้าน Day10

11. โปรเจ็คงานกลุ่ม

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

E.50
ixhundred's picture

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

0. ชิพ ATMega32

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) ในการแสดงผล 7-segment 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

----
ส่งเมล์ วงจรและ code ทั้ง 2 ภาษามาที่ em800
@ixhundred.org ภายในวันที่ 23/04/60 Subject :Day6

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

E.50
ixhundred's picture

คะแนนสูงสุดปลายภาค : 5730300573 นายพิษณุ โพคา

คะแนนเต็ม (100) = คะแนนเข้าห้องเรียน (10) + คะแนนส่งงานในห้องนอกห้อง (30) + คะแนนโปรเจ็คงานกลุ่ม (10) + คะแนนสอบกลางภาค (25) + คะแนนสอบปลายภาค (25)

ได้สูงสุด 88 คะแนน : 5730300573 นายพิษณุ โพคา

คะแนนเข้าห้องเรียน - มาทันได้ 100% มาสายได้ 80% ไม่มาได้ 0%
คะแนนส่งงานในห้อง - ส่งภายในเวลา ได้ 100% ส่งช้าได้ 80% ไม่ส่งได้ 0%
คะแนนโปรเจ็ค - ตอนแรกเต็ม 5 แต่ปรับให้เป็นเต็ม 10 แทนละ (คะแนนช่วย) ต่ำสุดได้ 8 คะแนน

ลองไปรวม ๆ กันดูนะ ว่า 100 จะได้กันซักเท่าใด :)

ฝึกงานให้สนุก ๆ กันนะ :)