WEEK 9 : GPIO & ADC









GPIO  :   LAB 1


หลักการทำงาน

วงจรนี้เป็นวงจรการควบคุม LED โดยใช้ Switch ทั้งหมด 3 Switch ซึ่งจะใช้  STM32FA411 Nucleo  Microcontroller ในการควบคุม ประมวลผล ให้ได้รูปแบบการแสดง LED ที่แตกต่างกัน โดยเมื่อเปลี่ยน INPUT ของ Switch จะทำให้รูปแบบเปลี่ยน LED เปลี่ยนไปดังตารางต่อไปนี้




หลักการในการเขียนโปรแกรม

แนวคิดในการเขียนโปรแกรม  เราจะใช้คำสั่ง BusIn และ BusOut ซึ่งในการ Input และ Output     ซึ่งจะเป็นการรับค่าและส่งค่าหลาย Digital Pins โดยจะคิดรวมค่าเป็นเพียงค่าเดียวซึ่งจะแปลงเลขฐาน 2 เป็นในรูปแบบเลขฐาน 10 เช่น ถ้า SW3 = 1 , SW2 =  0 , SW1 = 1 ซึ่งเมื่อ INPUT มาในรูป BusIn  จะมีค่าเท่ากับ 9  แล้วนำค่าที่ได้จาก BusIn  ไปเป็นตัวเช็คว่าเราสั่งให้ LED อยู่ในรูปแบบไหน และ  ในการสั่งให้ LED ติดเราจะนำอนุกรมเลขคณิตมาคิด ซึ่งรูปแบบอนุกรมเลขคณิตที่ต่างกันจะได้ รูปแบบการติดของ LED ที่ต่างกัน โดยเลขที่ได้มาจากอนุกรมเลขคณิตจะเป็นเลขฐาน 10 แต่เราใช้ คำสั่ง BusOut  เราจึงสามารถ Output เป็นเลขฐาน 2 ที่มีทั้งหมด 8 บิต ผ่าน LED 8 ดวง โดย LED จะแสดงถึงเลขแต่ละบิตของฐาน 2  เช่น เลข 65 ในฐาน 10 จะเท่ากับ  0010 0001 ในเลขฐาน 2

                      LED 1      LED 2       LED 3      LED 4     LED 5    LED 6      LED 7      LED  8
                         o      o        o       o      o      o       o       o
                          0           0               1              0           0            0             0              1

ดังนั้นจะมี LED 3 และ LED 8 ที่ไฟติด


ส่วนประกอบต่างๆ

-   สายไฟ
-    NX – 100 Plus Digital Circuit Experiment Board
     -  Output  LED (D0 – D7)
     -  Input Switch (D0 – D2)





-   STM32FA411 Nucleo  Microcontroller
    -  GPIO โดย Output คือ (D2-D9) , Input คือ (D10-D12)



LINKS : https://www.youtube.com/watch?v=UNKcxQqD5FU&html5=1




ADC  :   LAB 2.1


หลักการทำงาน

            วงจรนี้เป็นวงจรที่อ่านค่าจาก Analog โดยใช้  Adjust Voltage  (Range 0 – 5V) ใน NX – 100 Plus Digital Circuit Experiment Board  แล้วใช้ STM32FA411 Nucleo  Microcontroller  ในประมวลผลและควบคุม ซึ่งจะแสดง OUTPUT เป็น LED ทั้งหมด 8 เป็นระดับไป โดย Output Voltage ที่มากที่สุด LED จะติดทั้งหมด 8 ดวง เมื่อ Output Voltage น้อยลง LED จะติดน้อยลง


หลักการในการเขียนโปรแกรม

          ในการเขียนเราจะใช้คำสั่ง AnalogRead() เพื่ออ่านค่าจาก Adjust Voltage ใน NX – 100 Plus Digital Circuit Experiment Board  ซึ่งค่าที่ได้จะมากกว่า 3.3 V และ เกินที่ Port ของ Nucleo  Microcontroller จะรับได้เราจึงต้องระวังในการทดลองเพราะอาจจะทำให้อุปกรณ์เสียหายได้ แล้วเราจะนำค่าที่อ่านมา  ซึ่งอยู่ในช่วง 0 -1 มาแปลงให้อยู่ในช่วง 0-3.3V แล้วนำมาแบ่งเป็น 8 ช่วง ตาม LED  ดังนั้นจะแสดงระดับ LED ตาม ระดับโวลต์ที่ออกมา

ส่วนประกอบต่างๆ
-   สายไฟ
-    NX – 100 Plus Digital Circuit Experiment Board
          - Output  : LED (D0 – D7)
          - Input     : Adjust Voltage  
-    STM32FA411 Nucleo  Microcontroller
            GPIO โดย Output โดยเป็น Digital Output  (D2- D9) , Input โดยเป็น Analog Input (A1)


ADC  :   LAB 2.2


หลักการทำงาน

             วงจรนี้เป็นวงจรที่อ่านค่าจาก Analog โดยใช้  Adjust Voltage  (Range 0 – 5V) ใน NX – 100 Plus Digital Circuit Experiment Board  แล้วใช้ STM32FA411 Nucleo  Microcontroller  ในประมวลผลและควบคุม เหมือนกับ Lab 2.1 ซึ่งจะแสดง OUTPUT เป็น เลขทศนิยม 1 ตำแหน่ง โดย 7-Segment       2 ตัว 

หลักการในการเขียนโปรแกรม

           ในการเขียนเราจะใช้คำสั่ง AnalogRead() เพื่ออ่านค่าจาก Adjust Voltage ใน NX – 100 Plus Digital Circuit Experiment Board  ซึ่งค่าที่ได้จะมากกว่า 3.3 V และ เกินที่ Port ของ Nucleo  Microcontroller แล้วเราจะนำค่าที่อ่านมาซึ่งอยู่ในช่วง 0 -1 มาแปลงให้อยู่ในช่วง 0-3.3V แล้ว Output ออกมาเป็น 7 – Segment  โดยเราจะหาเลขหลักหน่วยโดยแปลงค่าที่หามาได้เก็บไว้ในตัวจำนวนเต็ม และ หาเลขทศนิยมจากการ มอส หาเศษ ส่วนของ จุดระหว่างตัวเลขเราจะต่อกับ 5 V 


ส่วนประกอบต่างๆ

- สายไฟ
- NX – 100 Plus Digital Circuit Experiment Board
       - Output  :  7-Segment 2 ตัว(D0 – D7)
       - Input     :  Adjust Voltage  
- STM32FA411 Nucleo  Microcontroller
       GPIO โดย Output โดยเป็น Digital Output  (D2-D9) , Input โดยเป็น Analog Input (A1)


LINKS : https://www.youtube.com/watch?v=i_6P1WGdNGU

FILES : http://1drv.ms/1QGSW6m

0 ความคิดเห็น: