THÔNG SỐ KỸ THUẬT
SƠ ĐỒ NGUYÊN LÝ
CODE MẪU ĐỌC GIÁ TRỊ LƯU LƯỢNG VÀ HIỂN THỊ LÊN LCD
Thư viện LCD16x2 https://github.com/arduino-libraries/LiquidCrystal
/*
ĐIỆN TỬ VIETNIC - 816 TÔN ĐỨC THẰNG - ĐÀ NẴNG
*/
#include<LiquidCrystal.h>
LiquidCrystal lcd (5, 4, 3, 6, 1, 0); // khởi tạo các chân giao tiếp
byte sensorInterrupt = 0; // 0 = digital pin 2
byte sensorPin = 2;
float calibrationFactor = 4.5;
volatile byte pulseCount;
float flowRate;
unsigned int flowMilliLitres;
unsigned long totalMilliLitres;
unsigned long oldTime;
void setup()
{
Serial.begin(9600);
pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH);
pulseCount = 0;
flowRate = 0.0;
flowMilliLitres = 0;
totalMilliLitres = 0;
oldTime = 0;
attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
lcd.begin(16, 2); // khởi tạo màn hình LCD 16×2
lcd.setCursor (0, 0); // đặt con trỏ tại hàng 0 cột 0
lcd.print ("vietnic.vn"); // In ra màn hình lcd dòng
delay(2000);
lcd.clear();
}
void loop()
{
if ((millis() - oldTime) > 1000) // Only process counters once per second
{
detachInterrupt(sensorInterrupt);
flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
oldTime = millis();
flowMilliLitres = (flowRate / 60) * 1000;
totalMilliLitres += flowMilliLitres;
unsigned int frac;
// Print the flow rate for this second in litres / minute
Serial.print("Flow rate: ");
Serial.print(int(flowRate)); // Print the integer part of the variable
Serial.print("L/min");
Serial.print("\t"); // Print tab space
// Print the cumulative total of litres flowed since starting
Serial.print("Output Liquid Quantity: ");
Serial.print(totalMilliLitres);
Serial.println("mL");
Serial.print("\t"); // Print tab space
Serial.print(totalMilliLitres / 1000);
Serial.print("L");
// Reset the pulse counter so we can start incrementing again
pulseCount = 0;
// Enable the interrupt again now that we've finished sending output
attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}
}
/*
Insterrupt Service Routine
*/
void pulseCounter()
{
// Increment the pulse counter
pulseCount++;
}