//made by Sujal Vasoya
//CD 4511 IC for 7 segment display
//pin 2,3,4,5 in first IC,pin 6,7,8,9 in second IC
//pin 10 in IR sensor out pin
#define ir 10
int count=0;
int j=1;
int i=1;
void setup() {
pinMode(ir,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}
void loop()
{
int in_value=digitalRead(ir);
if(in_value==LOW)
{
Serial.print("count=");
Serial.println(count);
number2(j);
Serial.print("j=");
Serial.println(j);
if(j==0)
{
number1(i);
Serial.print("i=");
Serial.println(i);
i++;
}
j++;
if(j==10)
{
j=0;
}
count++;
if(count==100)
{
count=0;
i=1;
j=1;
number1(0);
number2(0);
}
delay(150);
}
}
void number1(int x)
{ if(x==0)
{
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
}
if(x==1)
{
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
}
if(x==2)
{
digitalWrite(2,0);
digitalWrite(3,1);
digitalWrite(4,0);
digitalWrite(5,0);
}
if(x==3)
{
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,0);
digitalWrite(5,0);
}
if(x==4)
{
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,0);
}
if(x==5)
{
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,0);
}
if(x==6)
{
digitalWrite(2,0);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,0);
}
if(x==7)
{
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,0);
}
if(x==8)
{
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
}
if(x==9)
{
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
}
}
void number2(int y)
{ if(y==0)
{
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
if(y==1)
{
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
if(y==2)
{
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
if(y==3)
{
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
if(y==4)
{
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}
if(y==5)
{
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}
if(y==6)
{
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}
if(y==7)
{
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}
if(y==8)
{
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
}
if(y==9)
{
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
}
}
มุมมองของโปรเจค
ตัวนับวัตถุด้วยเซ็นเซอร์อินฟราเรด (IR) นี่แหละคือ "สะพานอัตโนมัติ" พื้นฐานและเจ๋งๆ สำหรับนักพัฒนาไฟฟ้าอิเล็กทรอนิกส์ยุคใหม่ ด้วยการโฟกัสที่บล็อคสร้างพื้นฐานสำคัญ—นั่นคือ ตรรกะการสะท้อนของลำแสงอินฟราเรด และ การแมปเอาต์พุตจาก BCD ไปยังเซ็กเมนต์แบบประสานเวลา—น้องจะได้เรียนรู้วิธีตั้งทิศทางตัวเองและทำให้งานนับของอัตโนมัติ โดยใช้ตรรกะซอฟต์แวร์เฉพาะทางและการตั้งค่าพื้นฐานที่แข็งแกร่ง
การลงมือทำจริง: ตรรกะของเซ็นเซอร์ IR และไดรเวอร์ดิจิทัล
โปรเจคนี้เผยให้เห็นชั้นที่ซ่อนอยู่ของการโต้ตอบจากเซ็นซิ่งไปจนถึงการนับแบบง่ายๆ:
- ชั้นการระบุ: เซ็นเซอร์อินฟราเรด (IR Proximity Sensor) ทำหน้าที่เป็นดวงตาระดับความละเอียดสูง คอยตรวจจับการมีอยู่ของสิ่งกีดขวางและสร้างพัลส์ดิจิทัลเมื่อตรวจพบ
- ชั้นการแปลง: ระบบใช้พินดิจิทัลความเร็วสูงเพื่อรับพัลส์ไบนารีเหล่านี้ สำหรับงานเซ็นซิ่งที่สำคัญระดับภารกิจ
- ชั้นอินเทอร์เฟซแสดงผล: จอแสดงผล 7-Segment สองตัว ทำหน้าที่เป็นแดชบอร์ดแสดงข้อมูลภาพความคมชัดสูง สำหรับตรวจสอบสถานะการนับของน้อง (เช่น 0 ถึง 99)
- ชั้นตรรกะไดรเวอร์: ไอซี CD4511 สองตัว ทำหน้าที่แปลงสัญญาณจาก BCD เป็น 7-Segment ทำให้การแสดงผลสถานะเป็นไปโดยอัตโนมัติขณะทำงาน
- ตรรกะการประมวลผล: โค้ด Arduino ใช้กลยุทธ์ "มองหา-ส่งต่อ" (หรือ นับ-ส่งต่อ): มันตีความพัลส์จากเซ็นเซอร์และจับคู่กับเอาต์พุตดิจิทัลแบบ BCD เพื่อให้การนับวัตถุเป็นไปอย่างปลอดภัยและเป็นจังหวะ
- ลูปการสื่อสาร: บิตของตัวนับจะถูกส่งเป็นจังหวะไปยัง Serial Monitor เพื่อใช้ในการดีบั๊กแบบเรียลไทม์และตรวจสอบสถานะ
โครงสร้างพื้นฐานฮาร์ดแวร์-อัตโนมัติ
- Arduino Uno: "สมอง" ของโปรเจค จัดการการสุ่มตัวอย่างดิจิทัลหลายทิศทางและประสานงานระหว่างไอซีไดรเวอร์กับเซ็นเซอร์
- เซ็นเซอร์อินฟราเรด (IR Proximity Sensor): ให้ "ลิงก์การวัด" ที่ชัดเจนและน่าเชื่อถือสำหรับจุดใดๆ บนสายพานหรือทางผ่าน
- ไอซีไดรเวอร์ CD4511: ให้อินเทอร์เฟซทางกายภาพที่มีความจุสูงและน่าเชื่อถือ สำหรับ "ภารกิจแสดงผล" ครั้งแรกให้สำเร็จ
- จอแสดงผล 7-Segment: ให้ "ลิงก์ภาพ" ที่แม่นยำสูงและน่าเชื่อถือสำหรับหลักหน่วยและหลักสิบ
- เบรดบอร์ด: วิธีที่สะดวกสำหรับการทำโปรโตไทป์วงจรอิเล็กทรอนิกส์อัตโนมัติชิ้นแรก และเชื่อมต่อทุกองค์ประกอบโดยไม่ต้องบัดกรี
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino และเป็นอินเทอร์เฟซหลักสำหรับตัวควบคุมระบบ
ขั้นตอนการนับอัตโนมัติและการโต้ตอบแบบทีละขั้น
กระบวนการนับที่ขับเคลื่อนด้วย IR ออกแบบมาให้ใช้ง่ายมาก:
- เตรียมพื้นที่ทำงาน: ตั้งค่าเซ็นเซอร์ IR และไอซีไดรเวอร์ในเบรดบอร์ดให้ถูกต้อง และเชื่อมต่อเข้ากับพินของ Arduino อย่างเหมาะสม
- ตั้งค่าการซิงค์ความเร็วสูง: ในสเก็ตช์ Arduino ให้กำหนดค่า
pinMode()และกำหนดการแมปหลัก BCD ในฟังก์ชันsetup() - ลูปการสื่อสารภายใน: ระบบจะทำการตรวจสอบดิจิทัลประสิทธิภาพสูงอย่างต่อเนื่อง และอัปเดตสถานะตัวนับแบบเรียลไทม์ตามทริกเกอร์จากเซ็นเซอร์ของน้อง
- การบูรณาการข้อมูลและการตอบรับภาพ: ดูแดชบอร์ด 7-Segment ของน้องเปลี่ยนเป็นสัญญาณสถานะที่มีจังหวะโดยอัตโนมัติ พัลส์และตามการตั้งค่าตำแหน่งของน้องไปเลย
อนาคตที่รอการขยาย (Future Expansion)
- เชื่อมต่อ OLED Dashboard แสดงตัวตน: ต่อจอ OLED ขนาดเล็กไว้ข้างๆ เพื่อแสดง "ยอดรวมทั้งชุด" หรือ "แบตเตอรี่ (%)" ไปเลยวัยรุ่น!
- ซิงค์ข้อมูลสภาพอากาศหลายเซ็นเซอร์: ต่อบลูทูธโมดูล (Bluetooth Module) แบบเฉพาะทาง เพื่อทำ "Cloud-Logging" แม่นยำสูงแบบไร้สาย สะดวกเวอร์!
- ซัพพอร์ตการลงทะเบียนผ่าน Cloud Interface: สร้างเว็บแดชบอร์ดเฉพาะทางบนมือถือผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติการนับแบบเป๊ะๆ เก็บไว้ดูย้อนหลังได้
- ซัพพอร์ตปรับแต่งโปรไฟล์ความเร็วขั้นสูง: เพิ่ม "Deep Learning (vCore)" แบบเฉพาะทางลงในโค้ด เพื่อให้ระบบเปลี่ยนการทำงานอัตโนมัติตามรูปแบบที่ผู้ใช้กำหนดเอง! เก่งขึ้นอีกขั้น
Object Counter with IR Sync นี่แหละโปรเจกต์เด็ดสำหรับสายวิทย์-เทคที่อยากได้เครื่องมืออัตโนมัติแบบอินเทอร์แอคทีฟและน่าสนใจ! สู้งานนะน้อง!




[!IMPORTANT] เซ็นเซอร์อินฟราเรด (IR Sensor) ต้องมีการ ปรับเทียบแสงแวดล้อม (ambient light calibration) ที่แม่นยำ! อย่าลืมตรวจสอบว่าใช้ ตัวต้านทาน (Resistor) ที่แมตช์กันเหมาะสมสำหรับแต่ละส่วนของ LED Display ด้วยนะ ห้ามช็อตนะตัวนี้!