01/10/2026
ใช้ map() เป็นช่วง 0–100 แล้วทำไมได้ −16 หรือ 116? 🎛️
เพราะ map() มีหน้าที่ “แปลงช่วงค่า” แต่ไม่ได้ล็อกขอบให้ครับ
ตัวอย่างนี้กำหนดให้ค่า 200–800 แปลงเป็นระดับ 0–100
• อ่านได้ 500 → map() ได้ 50
• อ่านได้ 100 → map() ได้ −16
• อ่านได้ 900 → map() ได้ 116
ถ้าต้องการให้ผลอยู่ในช่วง 0–100 ให้ใช้ constrain() ต่ออีกขั้น: −16 จะเป็น 0 และ 116 จะเป็น 100 ส่วน 50 ยังเป็น 50 เหมือนเดิม
ดูภาพ 4 หน้า แล้วลองต่อ UNO R3 กับ potentiometer: ขาปลายต่อ 5V และ GND ขากวาดต่อ A0 ก่อนดูผลใน Serial Monitor ที่ 9600 baud ครับ
ช่วง 200–800 เป็นค่าที่ตั้งเพื่อสาธิต ไม่ใช่ขอบที่วัดจากปุ่มจริง ส่วน 0–100 เป็นระดับตัวเลข ไม่มีหน่วย ไม่ใช่เปอร์เซ็นต์ความสว่าง ตัวเลขบนภาพมาจากการคำนวณ ยังไม่ใช่ผลทดสอบฮาร์ดแวร์
เริ่มเรียนอิเล็กทรอนิกส์และ Arduino ฟรีได้ที่ YouTube ช่อง Ampify (-th)
ลิงก์เพลย์ลิสต์อยู่ในคอมเมนต์
อุปกรณ์สำหรับฝึกทดลองเป็นตัวเลือกเพิ่มเติม ใช้ UNO R3 และตัวต้านทานปรับค่าที่มีอยู่ หรือเลือกซื้อเพิ่มตามต้องการ
สั่งซื้อได้ในคอมเมนต์