I have this code , and i went to change from using button to 3 Capacitive Touch sensor with these options ;
1st Switch:
- Gives an option of 1tsp scale (5ml)
2nd Switch:
- Gives an option of 1tbsp scale (15ml)
3rd Switch: (Cup Scale)
This have 3 options inside of it,
- 1/4 Cup (62.5 ml)
- 1/2 Cup (125 ml)
- 1 Cup (250 ml)
how can I build it ?
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servo;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int z = 1;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int filled_led = 5;
int sensor = 6;
// servo = 7
int pump = 8;
int mode = 9;
int buzzer = 10;
int start = 11;
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
tone(buzzer, 500);
delay(100);
noTone(buzzer);
lcd.setCursor(0,0); // column, row
lcd.print(" Welcome ");
lcd.setCursor(0,1); // column, row
lcd.print(" Experiment UAE ");
delay(3500);
lcd.setCursor(0,0); // column, row
lcd.print(" Pow_Fill ver.1 ");
lcd.setCursor(0,1); // column, row
lcd.print(" 2020 ");
delay(2500);
if(digitalRead(sensor) == HIGH)
tone(buzzer, 500);
delay(100);
noTone(buzzer);
lcd.clear();
pinMode(start, INPUT_PULLUP);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode(pump, OUTPUT);
pinMode (filled_led,OUTPUT);
pinMode (buzzer,OUTPUT);
pinMode (sensor, INPUT);
servo.attach(7);
servo.write(180);
}
void loop()
{
int button = digitalRead(mode);
if (button == HIGH)
{
tone(buzzer, 500);
delay(150);
noTone(buzzer);
{
if(z<3)
z ++;
else
z=1;
}
}
////////////////////////////////////////////////MODE 1
if
(z==1)
{
digitalWrite (led2,LOW);
digitalWrite (led3,LOW);
digitalWrite (led1,HIGH);
lcd.setCursor(0,0); // column, row
lcd.print(" PACK 1 # 25Gr");
}
while(digitalRead(start) == LOW)
{
if(digitalRead(sensor) == LOW)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Press Start ");
}
if(digitalRead(sensor) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
}
if (digitalRead (button) == HIGH)
break;
}
///////////////////////////////////////////////MODE 2
if
(z==2)
{
digitalWrite (led2,HIGH);
digitalWrite (led3,LOW);
digitalWrite (led1,LOW);
lcd.setCursor(0,0); // column, row
lcd.print(" PACK 2 # 50Gr");
}
while(digitalRead(start) == LOW)
{
if(digitalRead(sensor) == LOW)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Press Start ");
}
if(digitalRead(sensor) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
}
if (digitalRead (button) == HIGH)
break;
}
//////////////////////////////////////////////////MODE 3
if
(z==3
)
{
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
digitalWrite (led1,LOW);
lcd.setCursor(0,0); // column, row
lcd.print(" PACK 3 # 75Gr");
}
while(digitalRead(start) == LOW)
{
if(digitalRead(sensor) == LOW)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Press Start ");
}
if(digitalRead(sensor) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
}
if (digitalRead (button) == HIGH)
break;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
delay(200);
if(digitalRead(start) == HIGH && z==1 && digitalRead(sensor) == LOW )
{
tone(buzzer,500);
delay(100);
noTone(buzzer);
lcd.setCursor(0,1); // column, row
lcd.print(" Filling... ");
digitalWrite (pump,HIGH);
//<<<=========================================<<< To Calibrate MODE 1, Change this Value
servo.write(30);
delay(1000);
digitalWrite (pump,LOW);
servo.write(180);
lcd.setCursor(0,1); // column, row
lcd.print("Packing Complete");
digitalWrite (filled_led,HIGH);
delay(400);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(150);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(1000);
digitalWrite (filled_led,LOW);
while(digitalRead(sensor) == LOW)
{
if(digitalRead(start) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place New Bag ");
tone(buzzer, 500);
delay(100);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(100);
noTone(buzzer);
}
if(digitalRead(mode) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Remove BAG ");
tone(buzzer, 500);
delay(200);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(200);
noTone(buzzer);
}
if(digitalRead(sensor) == HIGH)
break;
}
delay(200);
}
if(digitalRead(start) == HIGH && z==1 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Error! No BAG ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
}
if(digitalRead(start) == HIGH && z==1 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
}
if(digitalRead(start) == HIGH && z==2 && digitalRead(sensor) == LOW )
{
tone(buzzer,500);
delay(100);
noTone(buzzer);
lcd.setCursor(0,1); // column, row
lcd.print(" Filling... ");
digitalWrite (pump,HIGH);
//<<<=========================================<<< To Calibrate MODE 1, Change this Value
servo.write(30);
delay(2000);
digitalWrite (pump,LOW);
servo.write(180);
lcd.setCursor(0,1); // column, row
lcd.print("Packing Complete");
digitalWrite (filled_led,HIGH);
delay(400);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(150);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(1000);
digitalWrite (filled_led,LOW);
while(digitalRead(sensor) == LOW)
{
if(digitalRead(start) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place New Bag ");
tone(buzzer, 500);
delay(100);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(100);
noTone(buzzer);
}
if(digitalRead(mode) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Remove Bag ");
tone(buzzer, 500);
delay(200);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(200);
noTone(buzzer);
}
if(digitalRead(sensor) == HIGH)
break;
}
delay(200);
}
if(digitalRead(start) == HIGH && z==2 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Error! No Bag ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
}
if(digitalRead(start) == HIGH && z==2 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
}
if(digitalRead(start) == HIGH && z==3 && digitalRead(sensor) == LOW )
{
tone(buzzer,500);
delay(100);
noTone(buzzer);
lcd.setCursor(0,1); // column, row
lcd.print(" Filling... ");
digitalWrite (pump,HIGH);
//<<<=========================================<<< To Calibrate MODE 1, Change this Value
servo.write(30);
delay(3000);
digitalWrite (pump,LOW);
servo.write(180);
lcd.setCursor(0,1); // column, row
lcd.print("Packing Complete");
digitalWrite (filled_led,HIGH);
delay(400);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(150);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(300);
noTone(buzzer);
delay(1000);
digitalWrite (filled_led,LOW);
while(digitalRead(sensor) == LOW)
{
if(digitalRead(start) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place New Bag ");
tone(buzzer, 500);
delay(100);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(100);
noTone(buzzer);
}
if(digitalRead(mode) == HIGH)
{
lcd.setCursor(0,1); // column, row
lcd.print(" Remove Bag ");
tone(buzzer, 500);
delay(200);
noTone(buzzer);
delay(30);
tone(buzzer, 500);
delay(200);
noTone(buzzer);
}
if(digitalRead(sensor) == HIGH)
break;
}
delay(200);
}
if(digitalRead(start) == HIGH && z==3 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Error! No Bag ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
}
if(digitalRead(start) == HIGH && z==3 && digitalRead(sensor) == HIGH )
{
lcd.setCursor(0,1); // column, row
lcd.print(" Place Bag ");
tone(buzzer, 500);
delay(1000);
noTone(buzzer);
delay(30);
tone(buzzer, 500 );
delay(1000);
noTone(buzzer);
}
}