CHƯƠNG 5 : THI CƠNG THÍ NGHIỆM MƠ HÌNH
1. Code điều khiển
1.3. Code điều khiển của Arduino NANO
#include <Led4digit74HC595.h> #define cua_14_dong 5
#define cua_14_mo 4 #define cua_15_dong 3
#define cua_15_mo 2 //Khai báo các chân của Arduino #define bao_can_14 7
#define bao_can_15 8 int nut_mo_cua_xa_14 = 9; int nut_mo_cua_xa_15 = 10;
Led4digit74HC595 myLedDisplay(A3, A4, A5); // Khai báo thư viện LED 7 đoạn để hiể thị và các pin Pins:(SCLK, RCLK, DIO)
#include <HX711_ADC.h> //Khai báo thư viện của module đọc dữ liệu của loadcell
HX711_ADC LoadCell(A0, A1); //khai báo các chân của loadcell void setup() {
pinMode(bao_can_14, INPUT); //đặt các ngõ ra và ngõ vào của Arduino pinMode(cua_14_mo, OUTPUT); pinMode(cua_14_dong, OUTPUT); pinMode(cua_15_mo, OUTPUT); pinMode(cua_15_dong, OUTPUT); pinMode(nut_mo_cua_xa_14, INPUT_PULLUP); pinMode(nut_mo_cua_xa_15, INPUT_PULLUP);
LoadCell.begin(); //Chương trình chạy loadcell bắt đầu
LoadCell.start(2000); //thời gian để loadcell ổn định sau khi khởi động có thể thêm vào vài mili giây để hệ ổn định hơn
LoadCell.setCalFactor(999.0); //hệ số của việc cablib cân ban đầu chi tiết của code nằm trong thư viện loadcell của arduino
99 Serial.begin(9600);
myLedDisplay.setDecimalPoint(0); //khơi động hệ hexa để led hiện thị tín hiệu }
void loop() {
LoadCell.update();
int buttonStatus_14 = digitalRead(nut_mo_cua_xa_14); // đọc trạng thái các nút nhấn
int buttonStatus_15 = digitalRead(nut_mo_cua_xa_15); //đặt biến V để loadcell bắt đầu đọc dữ liệu từ cảm biến float V = LoadCell.getData();
Serial.println(V);
if (V>=500 && buttonStatus_14 == LOW) //Nếu mà khối lượng lớn hơn 500g và nút cửa 14 đang được nhấn thì
{
digitalWrite(cua_14_dong, HIGH); //Cửa 14 sẽ đóng lại digitalWrite(cua_14_mo,LOW);
}
else if (V<1 && buttonStatus_14 == LOW) //Nếu mà khối lượng nhỏ hơn 1g và nút cửa 14 đang được nhấn thì
{
delay(5000); //delay 5s để cửa xả 17 đóng lại digitalWrite(cua_14_dong, LOW); //cửa 14 sẽ mở ra
digitalWrite(cua_14_mo,HIGH); }
else if (digitalRead(bao_can_14)==0 && V<1)
//khi cảm biến báo cạn ở mức 0 và khối lượng nhỏ hơn 1 {
digitalWrite(cua_14_dong, HIGH); //cửa 14 đóng digitalWrite(cua_14_mo,LOW);
100 }
if (V>=500 && buttonStatus_15 == LOW) {
digitalWrite(cua_15_dong, HIGH); digitalWrite(cua_15_mo,LOW); }
else if (V<1 && buttonStatus_15 == LOW) { digitalWrite(cua_15_dong, LOW);
digitalWrite(cua_15_mo,HIGH); }
else if (digitalRead(bao_can_15)==0 && V<1) { digitalWrite(cua_15_dong, HIGH);
digitalWrite(cua_15_mo,LOW); }
myLedDisplay.loopShow(); //led sẽ liên tục cập nhật tín hiệu myLedDisplay.setNumber(V); //led sẽ hiện thị số của cân
101