You are on page 1of 11

#include "max6675.

h"
#include <TimerOne.h>
#define TIMER_US 1000000
unsigned long time;
#define PIN_nuoc 13
#define nuoc digitalRead(PIN_nuoc)
int thermoCLK = 4;
int thermoCS = 3;
int thermoDO = 2;
MAX6675 thermocouple(thermoCLK,
thermoCS, thermoDO);
unsigned char a,b,c,d,x,y=0;
float temperature;
int StartCounter = 0;
int startState = 0;
int lastStartState = 0;

int StartCounter1 = 0;
int startState1 = 0;
int lastStartState1 = 0;
int pum=8;
int res=7;
int buz=9;
int dry=10;
int steplight=11;
int water=12;
const int START1 = A4;// nút start
const int SOS = A5;// nút start
const int sw1 = A0;// 121 độ
const int sw2 = A1;// 10 phút
const int sw3 = A2;// 15 phút
const int sw4 = A3;// 20 phút
void setup() {
pinMode(sw1,INPUT);
pinMode(sw2,INPUT);
pinMode(sw3,INPUT);
pinMode(sw4,INPUT);
pinMode(START1,INPUT);
pinMode(nuoc,INPUT);
pinMode(pum, OUTPUT);
pinMode(res, OUTPUT);
pinMode(dry, OUTPUT);
pinMode(buz, OUTPUT);
pinMode(steplight, OUTPUT);
pinMode(water, OUTPUT);
}
void loop(){
startState1 = digitalRead(SOS);
if (startState1 != lastStartState1) {
if (startState1 == HIGH) {
delay(500);
StartCounter1++;
digitalWrite(buz,HIGH);
if(StartCounter1>=2) {
StartCounter1=0;}}
else {}}
lastStartState1 = startState1;

switch (StartCounter1){

case 0:
StartCounter==0; {
RUN ();

break;}
case 1:
StartCounter==1; {
digitalWrite(dry,HIGH);
Timer1.detachInterrupt();// tat ngat
digitalWrite(pum,LOW);
digitalWrite(res,LOW);
digitalWrite(buz,HIGH);
a,b,c,d,x,y=0;
}}}
void RUN (){
startState = digitalRead(START1);
if (startState != lastStartState) {
if (startState == HIGH) {
delay(500);
StartCounter++;
digitalWrite(buz,HIGH);
if(StartCounter>=2) {
StartCounter=0;}}
else {}}
lastStartState = startState;

switch (StartCounter){

case 0:
StartCounter==0; {
Timer1.detachInterrupt();// tat ngat
digitalWrite(pum,LOW);
digitalWrite(res,LOW);
digitalWrite(dry,LOW);
digitalWrite(buz,LOW);
a,b,c,d,x,y=0;
break;}
case 1:
StartCounter==1; {
if(x<=0){
if(nuoc==LOW){
digitalWrite(pum,HIGH);
if ( (unsigned long) (millis() - time)
> 1000)
{ if (digitalRead(water) ==
LOW){
digitalWrite(water,
HIGH);}
else { digitalWrite(water,
LOW);}
time = millis();}}
else{digitalWrite(pum,LOW);
x++;}}
HEAT ();
if(sw1==HIGH){
if(temperature >=120){STEP ();}
if(sw1==LOW){
if(temperature >=131){STEP ();}
DRY ();
break;}}}}}

void readTemperature()
{temperature = thermocouple.readFahrenheit();}

void HEAT () {
if(sw1==HIGH){
if(temperature <=120){
digitalWrite(res,HIGH);
digitalWrite(water,HIGH);}
else{digitalWrite(res,LOW);
digitalWrite(water,LOW);
Timer1.initialize(TIMER_US);// khoi
tao timer ngat
Timer1.attachInterrupt(timerIsr);// cho
phep ngat
}}
if(sw1==LOW){
if(temperature <=131){
digitalWrite(res,HIGH);
digitalWrite(water,HIGH);}
else{digitalWrite(res,LOW);
digitalWrite(water,LOW);
Timer1.initialize(TIMER_US);// khoi
tao timer ngat
Timer1.attachInterrupt(timerIsr);// cho
phep ngat
}}}

void STEP (){digitalWrite(steplight,HIGH);


if((sw2==HIGH)&&(y<=0)){//10 phut
if((c==1)&&(d==0)){
digitalWrite(res,LOW);
y++;
a,b,c,d=0;
}}
if((sw3==HIGH)&&(y<=0)){//15 phut
if((c==1)&&(d==5)){
y++;
a,b,c,d=0;
digitalWrite(res,LOW);}}
if((sw4==HIGH)&&(y<=0)){//20 phut
if((c==2)&&(d==0)){
y++;
a,b,c,d=0;
digitalWrite(res,LOW);}}}

void DRY (){digitalWrite(steplight,LOW);


if(y>=1){
Timer1.initialize(TIMER_US);// khoi tao timer
ngat
Timer1.attachInterrupt(timerIsr);// cho phep
ngat
digitalWrite(dry,HIGH);
digitalWrite(res,LOW);
digitalWrite(steplight,HIGH);
if((c==1)&&(d==5)){
Timer1.detachInterrupt();// tat ngat
digitalWrite(dry,LOW);
digitalWrite(steplight,LOW);
digitalWrite(buz,HIGH);}}}

void timerIsr(){ //cd:ab PHÚT:GIÂY


b++;
if(b>9){a++;
b=0;}
if(a>5){d++;
a=0;}
if(d>9){c++;
d=0;}
if(c>5){a,b,c,d=0;}}

You might also like