You are on page 1of 4

#include <Wire.

h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); //LCD 16x02, địa chỉ I2C là 0X27

// CB VẬT CẢN

int sensor_LOW = 12;

int sensor_MID = 11;

int sensor_HIGH = 10;

int preTHAP = LOW;

int preVUA = LOW;

int preCAO = LOW;

int demcao = 0;

int demvua = 0;

int demthap = 0;

int reset = 24;

int gtreset;

int START = 22;

int van_LOW = 2;

int van_MID = 3;

int van_HIGH = 4;

// Motor Variables

int ENA = 9;

int IN1 = 8;

int IN2 = 7;

void setup()
{

pinMode(reset, INPUT_PULLUP);

pinMode(sensor_LOW, INPUT);

pinMode(sensor_MID, INPUT);

pinMode(sensor_HIGH, INPUT);

Serial.begin(9600);

lcd.begin(); //Khởi động LCD

lcd.backlight(); //Bật đèn nền

lcd.setCursor(1,0);

lcd.print("HIGH");

lcd.setCursor(7,0);

lcd.print("MID");

lcd.setCursor(12,0);

lcd.print("LOW");

lcd.setCursor(2,1);

lcd.print(demcao);

lcd.setCursor(8,1);

lcd.print(demvua);

lcd.setCursor(13,1);

lcd.print(demthap);

pinMode (van_LOW, OUTPUT);

pinMode (van_MID, OUTPUT);

pinMode (van_HIGH, OUTPUT);

void loop()

{
gtreset = digitalRead(reset);

int gtcao=digitalRead(sensor_HIGH);//Đọc giá trị digital từ cảm biến và gán vào biến giatri

int gtvua=digitalRead(sensor_MID);

int gtthap =digitalRead(sensor_LOW);

analogWrite(ENA,255);

digitalWrite(IN1,HIGH);

digitalWrite(IN2,LOW);

if(gtreset == 0)

{ digitalWrite(IN1,LOW);

digitalWrite(IN2,LOW);

lcd.clear(); //Xóa màn hình

lcd.setCursor(2,0); //Cột 2, hàng 0

lcd.print("RESET.......");

delay (1000);

resetBoard();

if ( gtcao== HIGH && preCAO==LOW ) //gia trị đọc từ cảm biến khác giá trị mặc định

digitalWrite(van_HIGH,HIGH);

demcao++; //Biến đếm cộng 1

lcd.setCursor(2,1);

lcd.print(demcao);

delay(1200);

digitalWrite(van_HIGH,LOW);

else if (gtvua== HIGH && gtcao== LOW && preVUA==LOW ) //gia trị đọc từ cảm biến khác giá trị
mặc định

digitalWrite(van_MID,HIGH);

demvua++; //Biến đếm cộng 1


lcd.setCursor(8,1);

lcd.print(demvua);

delay(1200);

digitalWrite(van_MID,LOW);

else if (gtthap== HIGH && gtvua== LOW && gtcao== LOW && preTHAP==LOW ) //gia trị đọc từ cảm
biến khác giá trị mặc định

digitalWrite(van_LOW,HIGH);

demthap++; //Biến đếm cộng 1

lcd.setCursor(13,1);

lcd.print(demthap);

delay(1200);

digitalWrite(van_LOW,LOW);

void resetBoard()

asm volatile ("jmp 0"); //Nhảy về dòng đầu tiên của chương trình

You might also like