วันอาทิตย์ที่ 18 ตุลาคม พ.ศ. 2558

LAB 02 (microcontroller interface)

LAB 2.1

1.แนวคิดและวิธีการเขียนโค๊ด

เป็นการเขียนโปรแกรมให้สามารถรับค่าแรงดันไฟฟ้า แบบ Analog จาก VR adjust  และนำมาแสดงในรูปของ หลอด LED 8 ดวง โดย ระดับของแรงดันไฟฟ้าจะแปรผันตรงกับจำนวน LED ที่ติด แรงดันไฟฟ้าเข้ามาน้อย LED ก็จะติดน้อย และไล่ระดับไปเรื่อยๆ จนติดครบทั้ง 8 ดวง
- ในการเขียน โปรแกรมนั้นก็ไม่มีอะไรมากครับ เริ่มต้น ก็แน่นอนต้องมีคำสั่งอ่านค่าสัญญาณ Analog
เมื่อได้ค่า Analog มาแล้วก็จะเป็นในส่วนเงื่อนไขต่างๆ โดยกลุ่มผมทำการแบ่งสัญญาณ Analog ออกเป็น 8 ช่วง จ่ายแรงดันมามากแค่ใหน ถึงช่วงใหน LED ก็จะติดถึงช่วงนั้น จะเห็นว่าในโค๊ดจะมี คำสั่ง If else อยู่ 9 ตัว โดยแบ่งเป็น คำสั่ง on ไฟ LED 8 ระดับ และ  คำสั่งที่ 9 คือ off LED
ในโปรแกรมพวกผมเลือกใช้คำสั่ง BusOut หรือก็คือ คำสั่งที่ทำให้แปลงค่าจากเลขฐานสิบเป็นเลขฐานสอง แล้วส่งค่าออกไป On LED 8 bit ดังนั้นจึงได้ตัวเลขฐานสองตั้งแต่ 0 ถึง 255
-โดยพวกผมมอง LED ทั้งแปดตัว เป็นเลขฐานสอง 8 bit ดังนั้นในแต่ละฟังชั่นของฟังชั่น If else ก็จะทำการจับ LED มาเท่ากับเลข ฐานสิบค่าหนึ่งที่เมือส่งออกไปในรูปเลขฐานสอง 8 bit แล้วจะทำให้ LED on ตามจำนวนที่ต้องการ
     Example แรงดันแรงมากแต่ยังไม่แรงที่สุดจะให้ LED ติด 7 ดวง ในฟังชั่น else if ก็ทำการจับLED มาเท่ากับ 127 เพราะเมื่อแปลงเป็นเลขฐานสอง 8 bitแล้วจะได้ 01111111 ไฟจะติดแค่เจ็ดดวง



2. VDO การทำงานของโปรแกรม

         เมื่อทำการหมุนปุ่ม VR adjust มากขึ้นเรื่อยๆ LED ก็จะติดเรียงกันไปเรื่อยๆตามระดับแรงดันไฟฟ้าที่ VR adjust ปล่อยออกมา ตั้งแต่ 0 V - 3.3 V Display เป็น LED 8 ดวง คิดเป็น 8 ระดับ    

ค่า VR adjust   = 0 V    => LED ทั้ง 8 ดวงดับหมด
ค่า VR adjust >= 3.3 V => LED ทั้ง 8 ดวงติดครบทุกดวง


3.code ที่กลุ่มของเราเขียนขึ้นครับ

http://www.mediafire.com/download/l33dfg146wy00vr/LAB02_01.rar



LAB 2.2

1.แนวคิดและวิธีการเขียนโค๊ด

-เป็นการเขียนโปรแกรมให้สามารถรับค่าแรงดันไฟฟ้า แบบ Analog จาก VR adjust  และนำมาแสดงออกทาง 7-SEGMENT แบบเดียวกับ Volt meter
-ในส่วนของโปรแกรมนั้นก็แน่นอน ต้องเขียนคำสั่งเพื่ออ่านค่า Analog ของแรงดันไฟฟ้าที่มาจาก ปุ่มหมุน VR adjust
-เมื่อได้ ค่าสัญญาณ analog มาแล้ว เนื่องจากการอ่านค่าสัญญาณ Analog จะอ่านอยู่ในช่วง 0-1.0 แต่เราต้องการให้ค่า Max สุดแสดงที่ 3.3 (เนื่องจากบอร์ดนิวคลีโอรับไฟได้มากสุด 3.3 volt) จึงนำค่าที่ได้มาคูณ 3300 (ที่คูณ 3300 แทนที่จะเป็น 3.3 เพราะจะได้ความละเอียดของค่าที่มากกว่า
-ในการจะแสดงผลออกทาง  7-SEGMENT จำเป็นจะต้องส่งค่าออกไปในรูปเลขฐานสอง จึงใช้คำสั่ง BusOut และต้องใช้ สองตัว เพื่อแสดงจำนวนเต็มและหลักทศนิยมหนึ่งตำแหน่ง
-จากนั้นก็นำค่า Analog ที่ได้ หาร ด้วยหนึ่งพันเก็บไว้ในตัวแปร INT ตัวหนึ่งทำให้ค่าที่ได้จะเป็นจำนวนเต็ม แล้วก็ ส่งออกไปทางคำสั่ง BusOut ตัวแรก
-ในการจะคิดหาหลักทศนิยมนั้น กลุ่มผม นำค่าจำนวนเต็มที่ส่งไปกับ BusOut ตัวแรกนั้นคูณหนึ่งพัน เก็บไว้ในอีกตัวแปร
-จากนั้นก็นำค่า Analog ที่วัดได้มาลบกับค่าที่เก็บเอาไว้ จะทำให้ได้ส่วนต่างออกมา ซึ่งเมื่อนำส่วนต่างนั้นไปหารด้วยหนึ่งร้อย  ก็จะได้หลักทศนิยม และทำการส่งออกไปกับ BusOut ตัวที่ 2

2. VDO การทำงานของโปรแกรม

- เมื่อทำการหมุน VR adjust จะทำให้เกิดสัญญาณ Analog ของค่าแรงดันไฟฟ้าออกมาและก็ไปแสดงผลกับ                7-SEGMENT  ค่าออกมาเป็น Voltage ตั้งแต่ 0 V - 3.3 V


3.code ที่กลุ่มของเราเขียนขึ้นครับ

http://www.mediafire.com/download/3qhp927i9r26337/LAB02_02.rar

ไม่มีความคิดเห็น:

แสดงความคิดเห็น