Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- Servo s1;
- Servo s2;
- Servo s3;
- Servo s4;
- Servo s5;
- Servo s6;
- Servo s7;
- #define _s1 22
- #define _s2 24
- #define _s3 26
- #define _s4 28
- #define _s5 30
- #define _s6 32
- #define _s7 34
- #define echoA 7
- #define trigA 6
- #define echoB 3
- #define trigB 5
- #define echoC 11
- #define trigC 12
- #define echoD 10
- #define trigD 9
- #define echoE 42
- #define trigE 40
- void setup() {
- Serial.begin(9600);
- lcd.begin();
- lcd.backlight();
- s1.attach(_s1);
- s2.attach(_s2);
- s3.attach(_s3);
- s4.attach(_s4);
- s5.attach(_s5);
- s6.attach(_s6);
- s7.attach(_s7);
- pinMode(trigA,OUTPUT);
- pinMode(echoA,INPUT);
- pinMode(trigB,OUTPUT);
- pinMode(echoB,INPUT);
- pinMode(trigC,OUTPUT);
- pinMode(echoC,INPUT);
- pinMode(trigD,OUTPUT);
- pinMode(echoD,INPUT);
- pinMode(trigE,OUTPUT);
- pinMode(echoE,INPUT);
- // while(1){
- // ult();
- // delay(200);
- // }
- // while(1){
- // s7.attach(_s7);
- // runServo(_s7,0);
- // Serial.println("0");
- // delay(2000);
- // s7.attach(_s7);
- // runServo(_s7,110);
- // Serial.println("150");
- // delay(2000);
- //
- // }
- runServo(_s1,0);
- runServo(_s2,0);
- runServo(_s3,150);
- runServo(_s4,0);
- runServo(_s5,150);
- runServo(_s6,150);
- runServo(_s7,0);
- lcd.setCursor(0,0);
- lcd.print("Pelipat Pakaian");
- delay(2000);
- lcd.clear();
- // while(1){
- // delay(10000);
- //
- // mains(_s1,1);
- // delay(2000);
- // mains(_s1,0);
- // delay(2000);
- //
- // mains(_s5,1);
- // delay(2000);
- // mains(_s5,0);
- // delay(2000);
- //
- // mains(_s2,1);
- // delay(2000);
- // mains(_s2,0);
- // delay(2000);
- //
- // while(1);
- // }
- }
- void loop() {
- ult();
- action();
- }
- /*
- * s1 buka 0 : tutup 150
- * s2 buka 0 : tutup 150
- * s3 buka 150 : tutup 0
- * s4 buka 0 : tutup 150
- * s5 buka 150 : tutup 0
- * s6 buka 150 : tutup 10
- * s7 buka 0 : tutup 110
- */
- void mains(int s, int v){
- int x;
- switch(s){
- case _s1 : x = v == 0 ? 0 : 160; break;
- case _s2 : x = v == 0 ? 0 : 150; break;
- case _s3 : x = v == 0 ? 150 : 0; break;
- case _s4 : x = v == 0 ? 0 : 150; break;
- case _s5 : x = v == 0 ? 150 : 0; break;
- case _s6 : x = v == 0 ? 150 : 10; break;
- case _s7 : x = v == 0 ? 0 : 110; break;
- default : break;
- }
- runServo(s,x);
- }
- void action(){
- int c = 0;
- int play = 0;
- lcd.setCursor(0,0);
- lcd.print("Menunggu...");
- Serial.println("Menunggu...");
- //detect input
- while(check("A") == 1){
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Persiapan...");
- Serial.println("Persiapan...");
- ult();
- lcd.setCursor(14,1);
- lcd.print(c);
- delay(1000);
- c++;
- if(c >= 15){ //15 detik check
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Proses Berjalan.");
- Serial.println("Proses Berjalan.");
- c = 0;
- play = 1;
- break;
- }
- }
- if(play == 1){
- //baju lengan pendek (ABC)
- if(check("A") == 1 && check("B") == 1 && check("C") == 1 && check("D") == 0 && check("E") == 0){
- lcd.setCursor(1,0);
- lcd.print("Baju L. Pendek");
- Serial.println("Baju L. Pendek");
- mains(_s1,1);
- delay(2000);
- mains(_s1,0);
- delay(2000);
- mains(_s5,1);
- delay(2000);
- mains(_s5,0);
- delay(2000);
- mains(_s1,1);
- delay(2000);
- mains(_s1,0);
- delay(2000);
- mains(_s2,1);
- delay(2000);
- mains(_s2,0);
- delay(2000);
- }
- //baju lengan panjang
- else if(check("A") == 1 && check("B") == 1 && check("C") == 1 && check("D") == 0 && check("E") == 1){
- lcd.setCursor(1,0);
- lcd.print("Baju L. Panjang");
- Serial.println("Baju L. Panjang");
- mains(_s3,1);
- delay(2000);
- mains(_s3,0);
- delay(2000);
- mains(_s4,1);
- delay(2000);
- mains(_s4,0);
- delay(2000);
- mains(_s5,1);
- delay(2000);
- mains(_s5,0);
- delay(2000);
- mains(_s1,1);
- delay(2000);
- mains(_s1,0);
- delay(2000);
- mains(_s2,1);
- delay(2000);
- mains(_s2,0);
- delay(2000);
- }
- //celana pendek
- else if(check("A") == 1 && check("B") == 0 && check("C") == 0 && check("D") == 0 && check("E") == 0){
- lcd.setCursor(1,0);
- lcd.print("Celana Pendek");
- Serial.println("Celana Pendek");
- mains(_s1,1);
- delay(2000);
- mains(_s1,0);
- delay(2000);
- mains(_s5,1);
- delay(2000);
- mains(_s5,0);
- delay(2000);
- mains(_s2,1);
- delay(2000);
- mains(_s2,0);
- delay(2000);
- }
- //celana panjang
- //C tidak dipakai karena kadang detect kadang enggak
- else if(check("A") == 1 && check("D") == 1 && check("E") == 0){
- lcd.setCursor(1,0);
- lcd.print("Celana Panjang");
- Serial.println("Celana Panjang");
- mains(_s7,1);
- delay(2000);
- mains(_s7,0);
- delay(2000);
- mains(_s6,1);
- delay(2000);
- mains(_s6,0);
- delay(2000);
- mains(_s5,1);
- delay(2000);
- mains(_s5,0);
- delay(2000);
- mains(_s1,1);
- delay(2000);
- mains(_s1,0);
- delay(2000);
- mains(_s2,1);
- delay(2000);
- mains(_s2,0);
- delay(2000);
- }
- //ambil baju
- lcd.clear();
- while(check("B") == 1){
- lcd.setCursor(0,0);
- lcd.print("Selesai...");
- lcd.setCursor(0,1);
- lcd.print("Silahkan Ambil");
- Serial.println("Selesai...");
- Serial.println("Silahkan Ambil...");
- }
- delay(2000);
- lcd.clear();
- }
- }
- void runServo(int n,int v){
- switch(n){
- case _s1 : s1.write(v); break;
- case _s2 : s2.write(v); break;
- case _s3 : s3.write(v); break;
- case _s4 : s4.write(v); break;
- case _s5 : s5.write(v); break;
- case _s6 : s6.write(v); break;
- case _s7 : s7.write(v); break;
- default : break;
- }
- }
- int readDistance(String c) {
- int duration, dist;
- if(c == "A"){
- digitalWrite(trigA, LOW);
- delayMicroseconds(8);
- digitalWrite(trigA, HIGH);
- delayMicroseconds(8);
- digitalWrite(trigA, LOW);
- delayMicroseconds(8);
- duration = pulseIn(echoA, HIGH);
- }
- else if(c == "B"){
- digitalWrite(trigB, LOW);
- delayMicroseconds(8);
- digitalWrite(trigB, HIGH);
- delayMicroseconds(8);
- digitalWrite(trigB, LOW);
- delayMicroseconds(8);
- duration = pulseIn(echoB, HIGH);
- }
- else if(c == "C"){
- digitalWrite(trigC, LOW);
- delayMicroseconds(8);
- digitalWrite(trigC, HIGH);
- delayMicroseconds(8);
- digitalWrite(trigC, LOW);
- delayMicroseconds(8);
- duration = pulseIn(echoC, HIGH);
- }
- else if(c == "D"){
- digitalWrite(trigD, LOW);
- delayMicroseconds(8);
- digitalWrite(trigD, HIGH);
- delayMicroseconds(8);
- digitalWrite(trigD, LOW);
- delayMicroseconds(8);
- duration = pulseIn(echoD, HIGH);
- }
- else if(c == "E"){
- digitalWrite(trigE, LOW);
- delayMicroseconds(8);
- digitalWrite(trigE, HIGH);
- delayMicroseconds(8);
- digitalWrite(trigE, LOW);
- delayMicroseconds(8);
- duration = pulseIn(echoE, HIGH);
- }
- dist = (duration / 2) / 29.1;
- return dist;
- }
- int check(String v){
- int batas = 20;
- int m = 0;
- if(v == "A"){ m = readDistance("A") < batas ? 1 : 0; }
- else if(v == "B"){ m = readDistance("B") < batas ? 1 : 0; }
- else if(v == "C"){ m = readDistance("C") < batas ? 1 : 0; }
- else if(v == "D"){ m = readDistance("D") < batas ? 1 : 0; }
- else if(v == "E"){ m = readDistance("E") < batas ? 1 : 0; }
- return m;
- }
- void ult(){
- Serial.print("A : ");
- Serial.print(check("A"));
- Serial.print("\t\t");
- Serial.print("B : ");
- Serial.print(check("B"));
- Serial.print("\t\t");
- Serial.print("C : ");
- Serial.print(check("C"));
- Serial.print("\t\t");
- Serial.print("D : ");
- Serial.print(check("D"));
- Serial.print("\t\t");
- Serial.print("E : ");
- Serial.print(check("E"));
- Serial.println("\t\t");
- lcd.setCursor(0,1);
- lcd.print(check("A"));
- lcd.print(" ");
- lcd.print(check("B"));
- lcd.print(" ");
- lcd.print(check("C"));
- lcd.print(" ");
- lcd.print(check("D"));
- lcd.print(" ");
- lcd.print(check("E"));
- lcd.print(" ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement