วันจันทร์ที่ 19 ตุลาคม พ.ศ. 2558

week 9 Lab 2.2

การทำงานและแนวคิดของโค้ด

       - โปรแกรมนี้จะเป็นการรับค่าแรงดันไฟฟ้ามาจากนั้นจึงแสดงค่าความดันไฟฟ้าด้วย 7-segments หรือก็คือ LED เส้นๆ 7 เส้นที่แสดงผลแล้วเป็นตัวเลขนั่นเอง ซึ่งในที่นี้จะแสดงค่าได้ตั้งแต่ 0.0 ถึง 3.3 V และมีความละเอียดเป็นทศนิยม 1 ตำแหน่ง
       - โค้ดที่เขียนขึ้นนั้น จะมีการทำงานประมาณนี้
       - เริ่มจากรับค่า analog ของแรงดันไฟฟ้ามา โดยค่าที่รับมาจะอยู่ในช่วงของ 0.0 ถึง 1.0จากนั้นก็นำค่าที่ได้มาคูณด้วย 33.0 เพื่อให้ค่าอยู่ในช่วง 0 ถึง 33 แทน
       - เมื่อได้ค่าที่เป็นเลข 2 หลักมาแล้วก็จะทำการแยกให้ได้ค่าของเลขหลักหน่วยและหลักสิบมาเพื่อใช้ควบคุม 7-segments 
      e.g. ถ้าไฟจ่ายเข้ามา 1.3 V โปรแกรมจะได้ค่าที่คูณด้วย 33 แล้วเป็น 13 แยกได้หลักสิบเป็น 1 และหลักหน่วยเป็น 3 ทำให้ 7-segments ตัวขวาแสดงค่า 3 และตัวซ้ายแสดงค่า 1

***********************************


VDO แสดงการทำงานของโปรแกรม

       - เมื่อจ่ายแรงดันเข้าไป ค่าของแรงดันก็จะแสดงออกมาเป็นตัวเลขที่ความละเอียดทศนิยม 1 หลัก



       * note : เพราะบอร์ดจะประมวลผลได้โดยไม่เอ๋อที่ความดันช่วง 0 ถึง 3.3 เพราะงั้นช้วงท้ายๆ VDO ที่ค่าเด้งกลับไปน้อยๆทั้งที่ให้ V มากๆเป็นเพราะให้ค่ามากเกินช่วงที่บอร์ดจะประมวลผลได้นั่นเอง

************************************
Code ที่เขียนขึ้น
         http://www.mediafire.com/download/pa64uhuc8c6n6vn/week+9+lab2.2.rar


week 9 Lab 2.1

การทำงานและแนวคิดของโค้ด

       - โปรแกรมนี้จะเป็นการรับค่าแรงดันไฟฟ้ามาและแสดงความดันไฟฟ้าในรูปแบบของหลอด LED 8 ดวง โดยจำนวนหลอด LED ที่สว่างจะแปรผันตรงกับค่าความดันไฟฟ้า โดยจะติดเรียงจากขวาไปซ้าย
     
       - โค้ดที่กลุ่มของเราได้เขียนขึ้นนั้น ใช้การประกาศตัวแปรแบบ array ของ LED ทั้ง 8 ดวง
       - จากนั้นโปรแกรมก็จะทำการรับค่า analog ของแรงดันไฟฟ้ามาในช่วงของ 0.0 ถึง 1.0 แล้วโปรแกรมจึงนำเลขนั้นมาคูณด้วย 3300 เพื่อให้ค่าออกมาดูเข้าใจง่ายขึ้นเพราะอยู่ในช่วง 0 ถึง 330 ซึ่งคล้ายกับช่วงความดันไฟฟ้าที่บอร์ดจะประมวลผลได้โดยไม่เอ๋อไปซะก่อน
       - และสำหรับ logic ของการเปิด LED เนื่องจากว่าความดันสูงสุดที่จะประมวลผลได้คือ 3.3 V และมี LED 8 ดวง เราจึงแบ่ง 3.3 ออกเป็น 8 ช่วง ได้ประมาณช่วงละ 0.4 V จึงให้ค่า 0.4*n เป็นตัวบอกว่าหลอดที่ n จะติดหรือไม่ โดยจะวนลูปของ LED ทั้ง 8 ดวง เพื่อเช็คดูว่าหลอดไหนจะติดบ้าง
      e.g. ถ้าไฟจ่ายเข้ามา 1.3 V LED จะติดถึงหลอดที่ 3 เพราะว่า 1.3 > 0.4*3 แต่ 1.3 < 0.4*4

***********************************


VDO แสดงการทำงานของโปรแกรม

       - เมื่อทำการเพิ่มความดันไฟฟ้าที่จ่ายให้บอร์ด ไฟ LED ก็จะค่อยติดเพิ่มขึ้นไปเรื่อยๆ จนเมื่อความดันไฟฟ้าที่จ่ายไปมีค่า >3.2 V หลอด LED จะติดครบทุกดวง
      

************************************
Code ที่เขียนขึ้น
         http://www.mediafire.com/download/89vmg8h7h0l5zhl/week+9+lab2.1.rar




week 9 Lab 1

การทำงานและแนวคิดของโค้ด

       - โปรแกรมนี้จะมีการทำงานคือมีสวิตช์ 3 ตัว เมื่อเปิดปิดสวิตช์ในรูปแบบต่าง ๆ กัน LED ทั้ง 8 ดวงก็จะมีรูปแบบการทำงานที่ต่างกันไปด้วย
       - แนวคิดสำหรับโจทย์ข้อนี้ไม่ค่อยมีอะไรนัก เพราะจะถือว่าสวิตช์ทั้ง 3 ตัวแทนเลขฐานสอง 3 หลัก ก็จะได้กรณีทั้งหมด 2^3 = 8รูปแบบพอดีตามที่โจทย์ต้องการ
       - จากนั้นก็ใช้วิธีแยกเคส 8 เคสตามสวิตช์ที่เปิด แล้วให้หลอดไฟแสดงผลตามแบบที่ต้องการตามใจผู้โค้ด -w-

***********************************


VDO แสดงการทำงานของโปรแกรม

       - เมื่อสับสวิตช์แบบต่างๆ LED ก็จะเปลี่ยนรูปแบบไปเรื่อยๆ




       
************************************
Code ที่เขียนขึ้น
         http://www.mediafire.com/download/n5e36kv1g2qda78/week+9+lab1.rar

วันพุธที่ 14 ตุลาคม พ.ศ. 2558

week 7 (14/09/2015)

ความประทับใจ <3

       - ได้รู้ว่าการออกแบบวงจรไม่ได้ยากอย่างที่คิด ถ้าจะยากคงเป็นตอนต่อวงจรซะมากกว่า =3=
       - d(=^・ω・^=)b
       
สิ่งที่ได้เรียนรู้ และปฏิบัติ <3
      
       - ได้เรียนรู้การออกแบบวงจร Sequential Logic โดยการใช้ State Diagram ที่มีขั้นตอนประมาณนี้
                  1. ทำการวิเคราะห์ว่าวงจรที่เราต้องการออกแบบมีกี่ state และแต่ละมีจะเปลี่ยนแปลงยังไง                          เมื่อให้ input เข้าไป
                  2. นำแต่ละ state มาวาดเป็น state diagram ดังรูปด้านล่าง โดยให้แทนแต่ละ state ด้วยเลข                          ฐาน 2 และเลขที่อยู่ในครึ่งล่างของวงกลมคือ output ของ state นั้น ๆ
                  3. นำ State Diagram ที่ได้ ไปเขียนเป็นตาราง truth table ของ State, Input, Output และ                               D-Flip Flop Input เช่นตารางข้างล่าง
                  4. หา Boolean Function ของแต่ละอันแล้วนำไปต่อเป็นวงจรตามต้องการ
                  5. ชื่นชมวงจรที่ต่อมาได้และรอดูเผื่อมีบัคอะไรมาให้แก้

ปัญหาที่ได้พบ <3

       - ตอนเรียนรอบแรกยังไม่ค่อยเข้าใจเนื้อหาซักเท่าไหร่ ทำให้ตารางที่คิดมาค่อนข้างมั่วๆไปหน่อย




***********************************



 State Diagram ที่พูดถึง วงจรในที่นี้มี 3 States


Truth Table ที่กำเนิดขึ้นมาจาก State Diagram


อันนี้แถม =w=
************************************