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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น