/*
Arduino code for Individual control over each pin
Support for 40+ 74HC595 8 bit shift registers
http://bildr.org/2011/02/74hc595/
*/
#include "TimerOne.h"
//#include"TimerOne.h"
#include"Button.h"
#include <LiquidCrystal_I2C.h>
#define NUM_SHIFT_REGS 1
#include"Stepper.h"
Stepper stepper1(100,5,4,3,2);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int dirA = 4;
int dirB = 3;
int pwmA = 5;
int pwmB = 2;
// Declare a Stepper motor with 200 steps
//Stepper stepper1(200, dirA, dirB);
int program1=0,process=0,time=-1,model=-1,pattern=-1,totaltime=0,tuoshui=0;
int xidi1,piaoxi1,biaozhun1,jinxi1,kuaisu1,shouxi1;
// How many of the shift registers
const uint8_t numOfRegisterPins = NUM_SHIFT_REGS * 8;
bool registers[numOfRegisterPins];
Button processButton(A0);
Button programButton(A1);
Button startButton(A2);
void model1() //洗涤+脱水
{
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
void model2() //洗涤+漂洗+脱水
{
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
}
void model3() //脱水
{
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
void biaozhun()
{
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
}
void jinxi()
{
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
}
void kuaisu()
{
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
}
void shouxi()
{
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
}
void xidi()
{
stepper1.setSpeed(200);
stepper1.step(1000);
//for(int p=0;p<10;p++)
//{digitalWrite(13, HIGH);
///delay(10);
//digitalWrite(13,LOW);
//delay(10);}
stepper1.step(-1000);
delay(5);
}
void piaoxi()
{
digitalWrite(1,LOW);
delay(60000);
digitalWrite(1, HIGH);
delay(10);
for(int m=0;m<1000;m++)
xidi();
for(int n=0;n<300;n++)
tuoshui1();
}
void tuoshui1()
{
stepper1.setSpeed(600);
stepper1.step(1000);
}
int count=0,time1=0;
void callback ( ) //中断函数,0.5s执行一次
{
count++;
if(count==20) {time--; count=0;}
}
void clearscreen()
{ Timer1.stop();
lcd.clear();
digitalWrite(11, LOW);
time=0;
}
void setup() {
for(int j=0;j<14;j++)
{ pinMode(j, OUTPUT);
digitalWrite(j,LOW);}
processButton.begin();
lcd.begin(16, 2);
programButton.begin();
startButton.begin();
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
// Set PWM pins as always HIGH
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
// Set stepper motor speed
stepper1.setSpeed(60);
Timer1.initialize(500000); //初始化timer1,并设置0.5秒周期
Timer1.stop();
Timer1.attachInterrupt(callback);
// Serial.begin(9600);
}
void loop() {
if (processButton.pressed()) {
process++; //Serial.println(process);
if(process%3==1) {model1(); model=1;}
else if(process%3==2) {model2();model=2;}
else if(process%3==0) {model3();model=3;}
}
if (programButton.pressed()) {
program1++; //Serial.println(program1);
if(program1%4==1) {biaozhun();pattern=1;}
else if(program1%4==2) {jinxi();pattern=2;}
else if(program1%4==3) {kuaisu();pattern=3;}
else if(program1%4==0) {shouxi();pattern=4;}
}
// writeRegisters();
if (startButton.pressed()) {
if(model==1&&pattern==1)
{ time=8;
Timer1.start();
while(1)
{
digitalWrite(1, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print(" Time:");
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("standard");
//lcd.clear();
if(time==7) {digitalWrite(1, LOW);break;}
delay(50);
}
while(1) {
if(time>3)
{digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
xidi();
lcd.clear();
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.print(time);
lcd.setCursor(4,1);
lcd.print("Standard");
}
else
{digitalWrite(13,LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(4,1);
lcd.print("Standard");}
if(time<=0)
{
digitalWrite(9, LOW);
clearscreen();
break;}
}
}
if(model==1&&pattern==2)
{ time=10;
Timer1.start();
while(1)
{
digitalWrite(1, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print(" Time:");
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("immersionwashing");
//lcd.clear();
if(time==9) {digitalWrite(1, LOW);}
else if(time==8) break;
delay(50);
}
while(1) {
if(time>3)
{digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
xidi();
lcd.clear();
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("immersionwashing");
}
else
{digitalWrite(13,LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("immersionwashing");}
if(time<=0)
{
digitalWrite(8, LOW);
clearscreen();
break;}
}
}
if(model==2&&pattern==1)
{
time=18;
Timer1.start();
while(time>0)
{
while(time>17)
{
digitalWrite(1, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print(" Time:");
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
delay(50);
if(time==17) {digitalWrite(1, LOW);break;}
}
while(time>12 && time<=17)
{
digitalWrite(13, HIGH);
delay(50);
digitalWrite(13,LOW);
xidi();
digitalWrite(13, HIGH);
delay(50);
digitalWrite(13,LOW);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
digitalWrite(13, HIGH);
delay(50);
digitalWrite(13,LOW);
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
}
while(time>9 && time<=12)
{digitalWrite(13,LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
}
while(time==9)
{
digitalWrite(1, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print(" Time:");
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
delay(50);
if(time==8)
{digitalWrite(1, LOW);break;}
}
while(time>3 && time<=8)
{
digitalWrite(12, HIGH);
delay(10);
digitalWrite(12,LOW);
xidi();
lcd.clear();
digitalWrite(12, HIGH);
delay(10);
digitalWrite(12,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(12,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
}
while(time<=3 && time >0)
{digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print(" standard");
}
if(time<=0)
{
digitalWrite(9, LOW);
clearscreen();
break;
}
}
}
if(model==1&&pattern==3)
{ time=5;
Timer1.start();
while(1)
{
digitalWrite(1, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print(" Time:");
lcd.setCursor(12,0);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("fastwashing");
//lcd.clear();
if(time==4) {digitalWrite(1, LOW);break;}
delay(50);
}
while(1) {
if(time>2)
{digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
xidi();
lcd.clear();
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("fastwashing");
}
else
{digitalWrite(13,LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(0,1);
lcd.print("fastwashing");}
if(time<=0)
{
digitalWrite(7, LOW);
clearscreen();
break;}
}
}
if(model==3)
{ time=3;
Timer1.start();
while(1){
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
tuoshui1();
lcd.clear();
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.setCursor(1,0);
lcd.print("Wash");
lcd.print("Time:");
lcd.setCursor(12,0);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11,LOW);
lcd.print(time);
lcd.setCursor(0,1);
if(time<=0)
{clearscreen();
break;
}
}
}
if(time==0)
{tone(10, 330);
delay(1000);
noTone(10);
time=-1;}
}
}