การใช้งาน Counter / Speed Sensor ร่วมกับ 7 Segment Display
บทความนี้เป็นภาคต่อของบทความ สร้างนาฬิกาดิจิตอลด้วยบอร์ด Arduino ที่เป็นการนำ 7 Segment Display มาใช้แสดงผลร่วมกับเซ็นเซอร์ต่างๆ ในบทความนี้เป็นการนำมาต่อใช้งานร่วมกับโมดูล Counter / Speed Sensor เพื่อนับจำนวนเหรียญ สามารถนำไปประยุกต์ใช้ทำเครื่องนับจำนวนเหรียญ หรือกระปุกออมสินได้ครับ
การใช้งาน Counter / Speed Sensor
ตัวโมดูลเซ็นเซอร์จะมีขาให้ใช้งานทั้งหมด 4 ขา มี 2 ขาสำหรับจ่ายไฟ และอีก 2 ขา สำหรับส่งสัญญาณออกมาเมื่อตรวจพบวัตถุ
ขา VCC สำหรับต่อไฟบวก 3.3 - 5V
ขา GND
ขา D0 เป็นขาส่งสัญญาณ HIGH (ลอจิก 1) ออกมา เมื่อตรวจพบวัตถุ
ขา A0 เป็นขาสำหรับปล่อยสัญญาณแบบอนาล็อกออกมา ขานี้จะถูกใช้งานเมื่อวัตถุมีลักษณะโปร่งแสง ทำให้ต้องอ่านค่าอย่างละเอียดจาดตัวเซ็นเซอร์
การใช้งานจะเหมือนกับการอ่านค่าสวิตซ์ คือใช้คำสั่ง pinMode(... , INPUT); และคำสั่ง digitalRead(...); อ่านค่าออกมา
การใช้งานโมดูล 7 Segment Display
ที่จริงแล้วโมดูลนี้เหมาะสำหรับนำไปทำเป็นนาฬิกามากกว่า หรืองานที่เกี่ยวกับการแสดงผลเวลา แต่หากปิดการใช้งานโคล่อน ( : ) ไว้ ก็สามารถนำมาใช้งานแสดงผลตัวเลข 4 หลักได้
โมดูลแสดงผลนี้ใช้ไอซี TM1637 ในการขับ 7 Segment Display ดังนั้นจึงต้องไปโหลดไลบารี่มาลงก่อน สามารถดาว์โหลดได้ที่ : TM1637 (By IOXhop.com)
ขาของโมดูลจะมีทั้งหมด 4 ขา ดังนี้
VCC สำหรับจ่ายไฟแรงดัน 3.3V - 5V
GND
CLK สำหรับสร้างความถี่กำหนดจังหวะการส่งข้อมูล
DIO สำหรับส่งข้อมูล
สำหรับคำสั่งที่ใช้ ทาง IOXhop ได้สร้างฟังก์ชั่น .print() ไว้ให้ใช้งานแล้ว นำตัวเลขไปใส่โมดูลก็จะแสดงผลตัวเลขออกมาเลย
วงจร
วงจรสามารถเปลี่ยนแปลงได้ หากต่อขาของโมดูลเข้ากับขาอื่นๆของบอร์ด Arduino ดังนั้นหากเปลี่ยนขา ต้องแก้โค้ดด้วย
สำหรับการต่อขาใช้งานตามโค้ด จะกำหนดไว้ดังนี้
ต่อขา VCC ของทั้ง 2 โมดูล เข้ากับขา 5V
ต่อขา GND ของทั้ง 2 โมดูล เข้ากับขา GND
ต่อขา CLK ของโมดูล 7 Segment Display เข้ากับขา D3 ของบอร์ด Arduino
ต่อขา DIO ของโมดูล 7 Segment Display เข้ากับขา D2 ของบอร์ด Arduino
ต่อขา D0 ของโมดูล Counter / Speed Sensor เข้ากับขา D4 ของบอร์ด Arduino
โค้ด
// CounterSensorDisplay by IOXhop.com
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 3 // กำหนดว่าขา CLK ต่ออยู่กับขา D3
#define DIO 2 // กำหนดว่าขา DIO ต่ออยุ่กับขา D2
#define D0Sensor 4 // กำหนดว่าขา D0 ของ Counter / Speed Sensor ต่ออยู่กับขา D4
TM1637Display display(CLK, DIO); // เริ่มใช้งานไลบารี่
int i; // ประกาศตัวแปร i เป็นชนิด int เก็บข้อมูลตัวเลขจำนวนเต็ม
void setup()
{
pinMode(D0Sensor, INPUT); // กำหนดให้ขาที่ต่อกับ D0 ของเซ็นเซอร์เป็นขาอินพุต
}
void loop()
{
if (digitalRead(D0Sensor)==HIGH) { // ถ้าขาที่ต่อกับ D0 มีสถานะเป็น HIGH
while(digitalRead(D0Sensor)==HIGH); // ให้รอจนกว่าขาที่ต่อกับ D0 เป็น LOW
i++; // เพิ่มค่าในตัวแปร i ขึ้น 1 จำนวน
}
display.print(i); // แสดงผลค่า i ออกทางหน้าจอ 7 Segment
delay(10); // หน่วงเวลา 10mS
}
การใช้งาน
เมื่อนำเหรียญไปบังในร่องของเซ็นเซอร์ แล้วนำออกมา จะทำให้ตัวเลขเพิ่มขึ้นมาทีละ 1 กรณีที่มีเหรียญบังค้างไว้ จะไม่เริ่มนับต่อจนกว่าเหรียญจะออกไปจากร่องแล้ว






