วันจันทร์ที่ 26 ธันวาคม พ.ศ. 2559

Counter / Speed Sensor ร่วมกับ 7 Segment Display

การใช้งาน 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 กรณีที่มีเหรียญบังค้างไว้ จะไม่เริ่มนับต่อจนกว่าเหรียญจะออกไปจากร่องแล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น