ใบงานไมโครคอนโทรลเลอร์ ประจำสัปดาห์ที่ 16

text is Not Run Script

สัปดาห์นี้จะเป็นการเรียนรู้ไมโครคอนโครลเลอร์ผ่านการจำลองหรือ simulate ด้วยสื่อออนไลน์ Tinkercad เพื่อให้นักเรียนนักศึกษาได้ศึกษาเรียนรู้เกี่ยวกับการใช้งานการอ่านค่าเซ็นเซอร์ analog การประยุกต์การเขียนโปรแกรม การต่ออุปกรณ์วงจรไฟฟ้าพื้นฐาน การรู้จักอินเตอร์เฟสในการใช้งานโปรแกรมขั้นพื้นฐาน ให้นักเรียนฟังครูผู้สอน อธิบายการทำงานขั้นพื้นฐานก่อนเริ่มทำข้อย่อย


- เว็บไซต์ Tinkercad เพื่อเข้าใช้งานคลิ๊ก!

จงเขียนไมโครคอนโทรลเลอร์ โดยกำหนดให้เชื่อมต่อกับ led โดยใช้งานคำสั่งที่ส่ง input, output สัญญาณ analog และ digital เพื่อควบคุม led ให้ได้ตามโจทย์ที่กำหนด. โดยจะเป็นลักษณะการสื่อสารกันระหว่างคอมพิวเตอร์และอุปกรณ์ไมโครคอนโทรลเลอร์ผ่านการส่งข้อมูลแบบ Serial Transmission (สาย USB) และจงใช้ความรู้ในการเขียนโปรแกรมพื้นฐานที่เรียนในสัปดาห์ที่ผ่านมานำมาประยุกต์ใช้งาน if , if else , while ,for , switch case ให้นักเรียนนักศึกษาทำไปทีละข้อย่อย จนครบโจทย์ที่สมบูรณ์

เนื้อหา arduino analog เบื้องต้นต้องมีความรู้ความเข้าใจอะไรบ้าง ?

หากย้อนกลับไปเนื้อหาก่อนหน้านี้จะเป็นการใช้งานสัญญาณ digital โดยปกติแล้ว การใช้งานการอ่านสัญญาณ digital จะมีค่า 2 สถานะ คือ 0 และ 1 เท่านั้นและสถานะที่เป็นอยู่คือ 1 หรือไม่ก็ 0 ไม่มีนอกเหนือจากนี้ ด้วยการอ่านค่าเพียงแค่สองสถานะทำให้ ง่ายต่อการทำงาน และการประยุกต์ใช้ แต่การนำสัญญาณ analog มาใช้งานนั้นเราจะต้องรู้อะไรบ้างการเขียนสั่งการทำงานให้ microcontroller อ่านค่าที่เป็น analog มีองค์ประกอบอยู่ 2 อย่างคือ

  1. การรับค่า input ในแรงดันตั้งแต่ต้นถึงค่าสูงสุด 0 -> nmax กล่าวคือ ค่าโวลสู้สุดที่ไมโครคอนโทรลเลอร์ นั้นๆรับได้
  2. การอ่านค่า analog ค่าที่อ่านได้จะถูกเรียกเป็นระดับ bit คือค่าความละเอียดที่ microcontroller อ่านได้ ว่ามีกี่ระดับ สามารถทำการตรวจเช็คโดยเปิดข้อมูลของไมโครคอนโทรลเลอร์เบอร์นั้นๆ ว่ารองรับการอ่านข้อมูลที่กี่บิต โดยยิ่งระดับ bit ยิ่งเยอะค่าความละเอียดก็จะมากขึ้น หรือละเอียดขึ้นนั้นเอง ดังแสดงตารางต่อไปนี้
bit จำนวน ขอบเขต
2 bit 4 0 ถึง 3
4 bit 16 0 ถึง 15
8 bit 256 0 ถึง 255
10 bit 1024 0 ถึง 1023
12 bit 4096 0 ถึง 4095

- กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์ กับ led จำนวนทั้งหมด 4 ดวงและมีการเขียนคำสั่งเพื่อควบคุมสัญญาณ analog ขอควรระวังการต่อใช้งาน analog output โดยนักเรียนนักศึกษาจะต้องทำการศึกษาว่าไมโครคอนโทรลเลอร์เบอร์นั้นๆ มีการร้องรับการใช้งาน analog output ที่ตำแหน่งขาใดบ้าง การต่อสายผิดจะทำให้ค่าที่ผลลัพท์ที่ออกมาผิดพลาด

Paris

- จากรูปด้านบนแสดงตำแหน่งขา pinout ของ arduino uno r3 โดยการใช้งาน analog output ให้เราเลือกขาที่เป็น PWM (Pulse Width Modulation) เป็นเทคนิคที่ทำให้เราสามารถอ่าน/เขียนข้อมูลแบบ analog ด้วยสัญญาณ digital ได้ โดยตัวควบคุมการสร้างสัญญาณดิจิตอล (Digital control) จะสร้างสัญญาณคลื่นสี่เหลี่ยมออกมา โดยสัญญาณที่สร้างออกมาจะสลับกันระหว่าง เปิด(HIGH) กับ ปิด(LOW) รูปแบบสัญญาณเปิด-ปิดนี้สามารถจำลองเป็นแรงดันไฟฟ้าระหว่าง เปิด (5 Volts) กับ ปิด (0 Volts) หรือสังเกตตำแหน่งขาโดยจะมีการใส่สัญลักษณ ~ ที่บริเวณบอร์ด arduino uno r3

- กำหนดให้ต่อไมโครคอนโทรลเลอร์กับ led จำนวน 4 ดวงในตำแหน่ง (PWM หรือสัญลักษณ ~ )ที่ตำแหน่งขาของบอร์ด arduino uno r3 เท่านั้น เพื่อทำการศึกษาใบงานเกี่ยวกับการเรียกใช้งานสัญญาณ analog ในฝั่ง output ซึ่ง analog output ของ arduino uno r3 จะมี Amplitude ที่ความละเอียดที่ 256 ระดับ

- และเชื่อมต่อ LDR เซ็นเซอร์แสงเข้ากับไมโครคอนโทรลเลอร์ ในตำแหน่งขาที่ A0 เพื่อศึกษาการทำงานการเขียนสัญญาณ analog โดยการต่อใช้งานเซ็นเซอร์นั้นเป็นอุปกรณ์ที่ไม่ขั้วทางไฟฟ้า เราสามารถต่อขาใดขาหนึ่งเข้ากับ Vcc ได้โดยตรง และอีกขาต่อเข้า Gnd แต่การต่อใช้งาน ให้นักเรียนนักศึกษาทำการต่อให้ผ่านตัวต้านทานไปยังขา Gnd และ ทำการต่อสายแบบขนานจากขาเซ็นเซอร์ที่เป็น Gnd ไปยังขาที่ใช้รับข้อมูล A0 เพื่อทำการอ่านค่า analog

การเรียกใช้งาน analog โดยอ้างอิง code ดังต่อไปนี้


 analogWrite(3,255);
  

- การเรียกใช้งานคำสั่ง analogWrite(ตำแหน่งขา analog, ระดับbit) โดยมีระดับการใช้งานตั้งแต่ 0-255 อ้างอิงจาก 0 volt ไปจนถึงค่าสูงสุด 5 volt หากเรากำหนดค่าระดับบิท ที่ 0 แรงดันที่ออกไปยัง led จะเป็น 0 volt และหากกำหนดค่าระดับบิทที่ 255 แรงดันที่ออกไปจะเป็น 5v แทน *การเปรียบเทียบนี้เป็นลักษณะเบื้อนต้นเท่านั้น เพื่อให้นักเรียนนักศึกษาเข้าใจได้ง่าย หากแต่การทำงานจริง จะเป็นการใช้งานสัญญาณ pwm ซึ่งไม่ได้ส่งค่าแรงดันที่ต่างดับกันโดยตรง กล่าวคือการกำหนดความกว้างของสัญญาณ Pulse เป็นค่า % โดยจะแปรผันตรงกับระดับบิทที่เรากำหนดซึ่งเทียบบัญญัติไตรยางค์ต่อกัน



 analogRead(A0);
  

- ในกรณีของการใช้งานคำสั่ง analogRead(ตำแหน่งขา analog) จะแตกต่างจากการใช้งาน analogWrite อยู่เล็กน้อยโดยคำสั่งที่นักเรียนนักศึกษาได้ทำการเรียนรู้ไปก่อนหน้านี้ ถึงการใช้งานเขียนสัญญาณอนาล๊อกจะเป็นการอ้างอิงระดับบิต เพื่อส่งแรงดันออกตามแอมพลิจูดนั้นๆ ซึ่งอ้างอิงการส่งข้อมูลที่ 8 bit หรือ 28 จะได้จำนวนทั้งหมด 256 จำนวนและอ้างอิงได้ตั้งแต่ 0 ถึง 255 ระดับ แต่การใช้งานการอ่านหรือรับสัญญาณ analog นั้นต้องอ้างอิงระดับ 10 bit หรือ 210 จะได้จำนวนทั้งหมด 1024 จำนวนและอ้างอิงได้ตั้งแต่ 0 ถึง 1023 ระดับ และการอ่านค่า analog ต้องอ่านที่ตำแหน่งขา A0,A1,A2,A3,A4,A5 เท่านั้น
















กีฬา รู้แพ้ รู้ชนะ รู้อภัย

ให้นักเรียนนักศึกษาทำไปทีละข้อย่อย จนครบโจทย์ที่สมบูรณ์

  • 1 กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับ led จำนวน 4 และ LDR เซ็นเซอร์แสงด้วยโปรแกรมการจำลอง simulate ผ่านเว็บไซต์ Tinkercad
  • 2 (ต่อ) กำหนดให้แบ่งข้อมูลที่รับมาจากขา analog ให้ได้ 5 ส่วน แล้วนำไปประยุกต์การใช้งานร่วมกับ led ให้ติดหรือดับเรียงกัน จากค่าน้อยที่สุดไปหาค่ามากที่สุดให้สอดคล้องกัน (เขียนสัญญาณออกเป็น digital)
  • 3 (ต่อ) กำหนดให้นักเรียนนักศึกษาแสดงผลค่าความสว่างของแสงที่วัดจากเซ็นเซอร์ LDR ที่ได้ผ่าน serial monitor และแบ่งย่อยออกเป็น 4 ส่วนเหมือนข้อย่อยที่ 2 เมื่อแสงสว่างถึงจุดที่ 1 ให้แสดงคำว่า LOW ligth ถึงจุดที่ 2 mid ligth , 3 = high ligth, 4 = over ligth ต่อท้ายคำ
  • 4 (ต่อ) กำหนดให้นักเรียนนักศึกษาเขียนโปรแกรมปรับปรุง code จากข้อย่อยที่ 3 เฉพาะส่วนที่ให้แสดงข้อความ LOW ligth ,mid ligth ,high ligth ,over ligth ครั้งแรกครั้งเดียวเมื่อค่าข้อมูลถึงจุดที่กำหนด (กล่าวคือคำเหล่านี้จะไม่สแปมข้อความออกมาแล้ว แต่จะแสดงเมื่อไม่ใช่ค่าที่เป็นจุดปัจจุบัน)
  • 5 (ให้ทำการ new sketch แยกไฟล์) ศึกษาและเรียนรู้ การใช้งานคำสั่ง map() เพื่อนำมาประยุกต์การใช้งาน โดยกำหนดให้นักเรียนนักศึกษาเขียนโปรแกรมอ่านค่าจาก เซ็นเซอร์วัดแสงด้วยสัญญาณ analog จากนั้นให้ทำการนำค่าผลลัพท์เหล่านั้นมาทำการแสดงผลผ่าน led 1 ดวงให้รูปแบบการแสดงผลคือไฟจะค่อยๆติดขึ้นเมื่อมีแสง และค่อยๆดับลงเมื่อแสงลด (กล่าวคือการเปลี่ยนแปลง จะแปรผันโดยตรงกับเซ็นเซอร์)
  • 6 (ต่อ) จดบันทึกและทำความเข้าใจเกี่ยวกับ analogRead และการใช้งาน function map();



test
#

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ใบงาน รายวิชาโปรแกรมโครงสร้าง(ซัมเมอร์)

[16/07/67] ใบงานรายวิชาไมโครโปรเซสเซอร์และ ไมโครคอนโทรลเลอร์ สัปดาห์ที่ 9

[11/08/2567] ใบงานรายวิชาไมโครคอนโทรลเลอร์และโปรเซส สัปดาห์ที่ 13