รบกวนขอคำแนะนำด้วยครับ
ผมทำเครื่องชั่ง ชั่งน้ำหนักขึ้นมาได้แล้ว และสามารถใช้งานได้ในระดับหนึ่ง แต่อยากทำโค้ดเพิ่ม
ลองหาศึกษาจากที่ต่างๆก็งงๆครับ เพราะเพิ่งจะเริ่มศึกษา เลยอยากขอรบกวนขอคำชี้แนะด้วยครับ
จากโค้ดตาชั่งด้านล่างถ้าผมจะเอาคีย์เพดมาใส่ใช้ร่วมด้วยจะต้องทำยังไงบ้างครับให้ได้เป้าหมายแบบนี้ครับ
1. ให้ผม กดปุ่มบางปุ่ม แล้วจึงสามารถคีย์ตัวเลขสักค่านึงให้บอร์ดเก็บค่าไว้ก่อน สมมุติว่าแทนค่าด้วย X
2. แล้วเอาสิ่งของบางอย่างมาชั่งน้ำหนักที่ตาชั่งซึ่งจะได้น้ำหนักมาค่านึง สมมุติว่าแทนค่าด้วย Y
3.และจะให้บอร์ดคำนวนค่าความต่างของน้ำหนัก Y - X = Z แสดงค่านี้ออกมาที่จอlcd
พอจะมีแนวทางให้ศึกษาไหมครับ ทั้งเรื่องโค้ดและอุปกรณ์ที่ต้องต่อเพิ่มเติมจากตาชั่ง
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HX711.h>
int button1 = 9;
int press1 = 0;
// Set the LCD address to 0x27 in PCF8574 by NXP and Set to 0x3F in PCF8574A by Ti
LiquidCrystal_I2C lcd(0x3F, 16, 2);
HX711 scale1(A1, A2);
#define MAXFLT 8 // 24 bit resolution is 7 digits
void setup() {
lcd.clear();
lcd.begin();
lcd.setCursor(0, 0);
lcd.print(" Weighting Scale ");
lcd.setCursor(0, 1);
lcd.print("-- C1 --"); //แสดงชื่อ -- C1 --
delay(3000);
lcd.setCursor(0, 0);
lcd.print("--Place Weight--");
lcd.setCursor(0, 1);
lcd.print(" ..... kg ");
scale1.set_scale(33038.99999982); // BUG: calibrate the scale (higher number, lower reading)
scale1.tare(); // reset the scale to zero
pinMode(button1, INPUT);
digitalWrite(button1, HIGH); //enable pullups to make pin high
}
void loop()
{
float r;
char buf[MAXFLT + 1];
r = scale1.get_units(16); // average 1ุ6 readings
Serial.println(dtostrf(r, MAXFLT, 4, buf));
lcd.setCursor(0, 1);
lcd.print(dtostrf(r, MAXFLT, 2, buf)); // average 16 readings, approx 1 second
{
press1 = digitalRead(button1);
if (press1 == LOW)
{
scale1.tare();
}
else {
/// do nothing
}
}
}
แนวทางศึกษา มีโคดการใช้งาน Load cell , keypad , จอ LCD
และพื้นฐานการเขียนการเขียนโปรแกรม Arduino อื่น ๆ ที่จำเป็น ที่หน้าเว็บ ในคอร์สเรียน Arduino Starter ที่หน้าเว็บครับ