Điện tử vuotlen.com

Máy rửa tay

Máy rửa tay

 

Linh kiện: Arduino Uno, Ir Obstacle Sensor, L298, Led-red, Led-green, Lm016L, Logicstate, Motor, Res, Srf04.

Mô hình:

Proteus:

Arduino IDE:

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

 

#define Bomnuoc       10

#define Bomdd         11

#define hongngoai1    12

#define hongngoai2    13

#define trigger       8

#define echo          9

#define Denbaohet     A0

#define Denbaocon     A5

float khoangcach;

float mucdd = 0;

float tgian = 0;

void setup() {

  // put your setup code here, to run once:

  lcd.begin(16, 2);

  pinMode(Bomnuoc,     OUTPUT);

  pinMode(Bomdd,       OUTPUT);

  pinMode(trigger,     OUTPUT);

  pinMode(echo,        INPUT);

  pinMode(hongngoai1,  INPUT_PULLUP);

  pinMode(hongngoai2,  INPUT_PULLUP);

  lcd.print("May rua tay");

  delay(2000);

}

// tính khoảng cách siêu âm trong bể

void tinhkhoangcach(){

  digitalWrite(trigger, LOW);

  delayMicroseconds(2);

  digitalWrite(trigger, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigger, LOW);

  delayMicroseconds(2);

  tgian = pulseIn(echo, HIGH);

  mucdd = 150 - (tgian*347*100/1000000/2);

}

// điều khiển máy bơm bằng cách đọc khoảng cách cảm biến hồng ngoại cài giá trị dựa trên biến trở của cảm biến, trả về 1 hoặc 0

void dieukhienmaybomnuoc(){

  while(digitalRead(hongngoai1) == 1){

    digitalWrite(Bomnuoc, HIGH);

  }

  digitalWrite(Bomnuoc, LOW);

}

 

void dieukhienmaybomdd(){

  if(digitalRead(hongngoai2) == 1){

    digitalWrite(Bomdd, HIGH);

    delay(5000);

    digitalWrite(Bomdd, LOW);

  }

}

 

void dieukhiendenbao(){

  if(mucdd < 30){

    analogWrite(Denbaohet, 1023);

    analogWrite(Denbaocon, 0);

  }else{

    analogWrite(Denbaohet, 0);

    analogWrite(Denbaocon, 1023);

  }

}

void loop() {

  // put your main code here, to run repeatedly:

  tinhkhoangcach();

  dieukhiendenbao();

 

  lcd.setCursor(0, 1);

  lcd.print("Muc dd: ");

  lcd.print(mucdd);

  lcd.print("cm");

 

  dieukhienmaybomnuoc();

  dieukhienmaybomdd();

}