ช่วยแก้ปัญหาการเขียนโค้ด เกี่ยวการนับจำนวน Arduino หน่อยครับ

คือผมมีปัญหาในการเขียนโค้ด Arduino คือผมเอาตัวเซ็นเซอร์อินฟาเรตมาเป็น Input ในการนับจำนวนโดยแสดงผลที่จอ LCD โดยการให้นับ1-20 แต่ติดปัญหาที่ เมื่อผมเอามือไปบังค้างไว้แล้ว มันนับจำนวนตลอด 1-20 คือผมจะเอาไปทำโปรเจ็คก็คือ เครื่องนับจำนวนสินค้าอัตโนมัติ ที่ทำให้เกิดความแม้นยำในการนับ แต่ถ้าสมมุตินะถ้าของชิ้นใหญ่ๆหรือยาวๆ ทั้งๆของก็มีชิ้นเดียว แต่มันนับ 1-5 อะไรประมานนี้ T^T ช่วยแก้ให้ผมหน่อยนะครับ ใครเชียวชาญเรื่องเขียนโค้ด คือผมอยากให้มันนับ ชิ้น ต่อ ชิ้น   ไม่ใช่  1ชิ้น  นับ   ได้เป็น4-5ชิ้น

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
int sensor = 7; // ประกาศตัวแปลเป็น Sensor
int relay1 = 12; // ประกาศตัวแปลเป็น Relay
int x = 0;
int i = 0;

LiquidCrystal_I2C lcd(I2C_ADDR,2,1,0,4,5,6,7);

void setup()
{
  lcd.begin (16,2); // ขนาดหน้าจอ LCD
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH); // แสงของหน้าจอ LCD ติด
  pinMode(relay1,OUTPUT);
  pinMode(sensor,INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(relay1, 1);
  x = digitalRead(sensor); // อ่านค่าจากขา Digital(7)
  lcd.setCursor(5,0); // ไปที่ตัวอักษรที่ 5 แถวที่ 1
  lcd.print("Product"); // แสดงผลคำว่า Product
  lcd.setCursor(3,1); // ไปที่ตัวอักษรที่ 3 แถวที่ 2
  lcd.print("Value = "); // แสดงผลคำว่า Product
  lcd.setCursor(11,1); // ไปที่ตัวอักษรที่ 11 แถวที่ 2
  lcd.print(i); // แสดงค่าของขา Digital ออกหน้าจอ
  Serial.println(i);
  delay(500);

  if (x==0)
  {
    i = i+1;
  }
    if (i>20)
    {
      digitalWrite(relay1, 0);
      delay(6000);
      digitalWrite(relay1, 1);
      lcd.setCursor(12,1); // ไปที่ตัวอักษรที่ 12 แถวที่ 2
      lcd.print(" "); // แสดงผลคำว่า Product
      (i = 0);
    }
  
}
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่