การเขียนโปรแกรมรับข้อมูลแบบอนาล็อก สัญญาณ Analog เป็นสัญญาณที่มีความต่อเนื่องขนาดของสัญญาณเปลี่ยนแปลงตามเวลา ต่างจากสัญญาณแบบ digital ที่มีแค่ 0 กับ 1 เท่านั้น ใน Arduino Uno ของเรานั้นมี PIN สำหรับอ่านค่าสัญญาณ Analog อยู่ทั้งหมด 6 pin ครับ โดยการอ่านค่า analog ของ Arduino จะแปลงค่าที่อ่านได้เป็นค่า digital แบบ 10 บิต หรือมีค่าเป็นจำนวนเต็มคือ 0 ถึง 1023 https://www.gravitechthai.com/guru2.php?p=276
วงจรแบ่งแรงดัน (Voltage Divider) ในการเรียนรู้เรื่อง Analog เพื่อความเข้าใจและเพื่อทำให้สามารถนำไปประยุกต์ใมช้ได้หลากหลาย เราจำเป็นต้องรู้ในเรื่องของวงจรแบ่งแรงดัน ถ้าเรานำตัวต้านทานสองตัวมาต่ออนุกรมกัน แล้วป้อนแรงดัน (Vin) ให้กับตัวต้านทานสองตัวนั้น ค่าแรงดันที่ออกมาจากวงจรนี้ (Vout) จะมีค่าเป็นตามสมการ Vout = (R2/(R1+R2))xVin
อธิบายง่ายๆคือ วงจรแบ่งแรงดัน สามารถแบ่งแรงดันให้ลดน้อยลงได้ โดยแรงดันที่ลดลงจะเป็นสัดส่วนเท่ากับค่าความต้านทานของตัวต้านทาน R2 ต่อค่าความต้านทานรวมทั้งหมด
จากตัวอย่างเมื่อเรานำตัวต้านทานที่เท่ากันมาต่ออนุกรมกัน แล้วป้อนแรงดันขนาด 5V ให้กับมัน สัดส่วนของ R2 ที่อยู่ด้านล่างกับ R1+R2 จะเป็น 1 ต่อ 2 พอดี ดังนั้นแรงดันที่ป้อนเข้ามา 5V จะถูกแบ่งให้ลดลงเหลือ 2.5V ตามที่เห็นในภาพด้านบน
คำสั่งที่ใช้อ่านค่า Analog analogRead(PIN); โดยในส่วนของ PIN นั้นคือหมายเลขขาของ Arduino ที่เราต้องการให้มันอ่านค่า Analog ยกตัวอย่างเช่นถ้าเราต้องให้ ขา A0 ของ Arduino Uno อ่านสัญญาณ Analog เราต้องใช้ คำสั่งว่า analogRead(0);
คำสั่งที่ใช้อ่านค่า Analog(ต่อ) Arduino จะทำการอ่านค่า Analog มาให้เรา โดยค่าที่ Return กลับมาจะเป็นจำนวนเต็มตั้งแต่ 0 ไปจนถึง 1023 ดังนั้งการใช้คำสั่ง analogRead จำเป็นต้องมีตัวแปรมาเก็บค่าที่อ่านได้จากฟังก์ชั้นนี้ โดยต้องประกาศตัวแปรเป็นจำนวนเต็ม (Integer) ตามตัวอย่าง int value; value = analogRead(0); เป็นการสั่งให้ Arduino อ่านค่า analog จากขา A0 แล้วนำค่าที่ได้มาเก็บไว้ตัวแปรชนิดจำนวนเต็มที่ชื่อว่า value
การเขียนโปรแกรมอ่านค่า Analog (ต่อ) กำหนดตัวแปรเก็บข้อมูลแบบจำนวนเต็ม กำหนดอัตราเร็วการอ่านพอร์ตอนุกรม อ่าน Analog (pin0) เก็บในตัวแปร value ส่ง value ออกพอร์ตอนุกรม
การเขียนโปรแกรมส่งข้อมูล PWM PWM(Pulse Width Modulation) คือเทคนิดการส่งสัญญาณแบบสวิตซ์ หรือ ส่งค่าดิจิตอล 0-1 โดยให้สัญญาณความถี่คงที่ การควบคุมระยะเวลาสัญญาณสูงและสัญญาณต่ำ ที่ต่างกัน ก็จะทำให้ค่าแรงดันเฉลี่ยของสัญญาณสวิต ต่างกันด้วย http://www.myarduino.net/article/25/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99%E0%B8%81%E0%B8%B1%E0%B8%9A-arduino-c-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%AA%E0%B8%B1%E0%B8%8D%E0%B8%8D%E0%B8%B2%E0%B8%93-pwm
สำหรับโมดุล PWM ของ Arduino มีความละเอียด 8 bit หรือ ปรับได้ 255 ระดับ
การเขียนโปรแกรมส่งสัญญาณ PWM กำหนดขาควบคุม กำหนดตัวแปรเก็บข้อมูล กำหนดโหมด ของ Pin ตัวแปรValue = อ่านค่า(A0) ปรับ Value ให้อยู่ใน ช่วง 0-255 ส่งข้อมูลออก LED
กิจกรรมที่ทำ 1. เขียนโฟลว์ชาร์ต 2. แนวคิดการออกแบบโปรแกรม 3. .............. 4. .............