Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.44 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <Wire.h>
  3. #include <LiquidCrystal_I2C.h>
  4.  
  5. LiquidCrystal_I2C lcd(0x27, 16, 2);
  6.  
  7. Servo s1;
  8. Servo s2;
  9. Servo s3;
  10. Servo s4;
  11. Servo s5;
  12. Servo s6;
  13. Servo s7;
  14.  
  15. #define _s1 22
  16. #define _s2 24
  17. #define _s3 26
  18. #define _s4 28
  19. #define _s5 30
  20. #define _s6 32
  21. #define _s7 34
  22.  
  23. #define echoA 7
  24. #define trigA 6
  25. #define echoB 3
  26. #define trigB 5
  27. #define echoC 11
  28. #define trigC 12
  29. #define echoD 10
  30. #define trigD 9
  31. #define echoE 42
  32. #define trigE 40  
  33.  
  34. void setup() {
  35.   Serial.begin(9600);
  36.   lcd.begin();
  37.  
  38.   lcd.backlight();
  39.  
  40.   s1.attach(_s1);
  41.   s2.attach(_s2);
  42.   s3.attach(_s3);
  43.   s4.attach(_s4);
  44.   s5.attach(_s5);
  45.   s6.attach(_s6);
  46.   s7.attach(_s7);
  47.  
  48.   pinMode(trigA,OUTPUT);
  49.   pinMode(echoA,INPUT);
  50.   pinMode(trigB,OUTPUT);
  51.   pinMode(echoB,INPUT);
  52.   pinMode(trigC,OUTPUT);
  53.   pinMode(echoC,INPUT);
  54.   pinMode(trigD,OUTPUT);
  55.   pinMode(echoD,INPUT);
  56.   pinMode(trigE,OUTPUT);
  57.   pinMode(echoE,INPUT);
  58.  
  59. //  while(1){
  60. //    ult();
  61. //    delay(200);
  62. //  }
  63.  
  64.  
  65.  
  66. //  while(1){
  67. //    s7.attach(_s7);
  68. //    runServo(_s7,0);
  69. //    Serial.println("0");
  70. //    delay(2000);
  71. //    s7.attach(_s7);
  72. //    runServo(_s7,110);
  73. //    Serial.println("150");
  74. //    delay(2000);
  75. //    
  76. //  }
  77.  
  78.  
  79.  
  80.   runServo(_s1,0);
  81.   runServo(_s2,0);
  82.   runServo(_s3,150);
  83.   runServo(_s4,0);
  84.   runServo(_s5,150);
  85.   runServo(_s6,150);
  86.   runServo(_s7,0);
  87.  
  88.   lcd.setCursor(0,0);
  89.   lcd.print("Pelipat Pakaian");
  90.   delay(2000);
  91.   lcd.clear();
  92.  
  93. //  while(1){
  94. //    delay(10000);
  95. //    
  96. //    mains(_s1,1);
  97. //      delay(2000);
  98. //      mains(_s1,0);
  99. //      delay(2000);
  100. //
  101. //      mains(_s5,1);
  102. //      delay(2000);
  103. //      mains(_s5,0);
  104. //      delay(2000);
  105. //
  106. //      mains(_s2,1);
  107. //      delay(2000);
  108. //      mains(_s2,0);
  109. //      delay(2000);
  110. //
  111. //    while(1);
  112. //  }
  113. }
  114.  
  115. void loop() {
  116.   ult();
  117.   action();
  118.  
  119. }
  120.  
  121. /*
  122.  * s1 buka 0    : tutup 150
  123.  * s2 buka 0    : tutup 150
  124.  * s3 buka 150  : tutup 0
  125.  * s4 buka 0    : tutup 150
  126.  * s5 buka 150  : tutup 0
  127.  * s6 buka 150  : tutup 10
  128.  * s7 buka 0    : tutup 110
  129.  */
  130.  
  131. void mains(int s, int v){
  132.   int x;
  133.  
  134.   switch(s){
  135.     case _s1  : x = v == 0 ? 0 : 160; break;
  136.     case _s2  : x = v == 0 ? 0 : 150; break;
  137.     case _s3  : x = v == 0 ? 150 : 0; break;
  138.     case _s4  : x = v == 0 ? 0 : 150; break;
  139.     case _s5  : x = v == 0 ? 150 : 0; break;
  140.     case _s6  : x = v == 0 ? 150 : 10; break;
  141.     case _s7  : x = v == 0 ? 0 : 110; break;
  142.     default   : break;
  143.   }
  144.  
  145.   runServo(s,x);
  146. }
  147.  
  148. void action(){
  149.   int c = 0;
  150.   int play = 0;
  151.  
  152.   lcd.setCursor(0,0);
  153.   lcd.print("Menunggu...");
  154.   Serial.println("Menunggu...");
  155.  
  156.   //detect input
  157.   while(check("A") == 1){
  158.     lcd.clear();
  159.     lcd.setCursor(0,0);
  160.     lcd.print("Persiapan...");
  161.     Serial.println("Persiapan...");
  162.     ult();
  163.     lcd.setCursor(14,1);
  164.     lcd.print(c);
  165.    
  166.     delay(1000);
  167.     c++;
  168.  
  169.     if(c >= 15){ //15 detik check
  170.       lcd.clear();
  171.       lcd.setCursor(0,0);
  172.       lcd.print("Proses Berjalan.");
  173.       Serial.println("Proses Berjalan.");
  174.      
  175.       c = 0;
  176.       play = 1;
  177.       break;
  178.     }
  179.   }
  180.  
  181.   if(play == 1){
  182.     //baju lengan pendek (ABC)
  183.     if(check("A") == 1 && check("B") == 1 && check("C") == 1 && check("D") == 0 && check("E") == 0){
  184.       lcd.setCursor(1,0);
  185.       lcd.print("Baju L. Pendek");
  186.       Serial.println("Baju L. Pendek");
  187.      
  188.       mains(_s1,1);
  189.       delay(2000);
  190.       mains(_s1,0);
  191.       delay(2000);
  192.  
  193.       mains(_s5,1);
  194.       delay(2000);
  195.       mains(_s5,0);
  196.       delay(2000);
  197.  
  198.       mains(_s1,1);
  199.       delay(2000);
  200.       mains(_s1,0);
  201.       delay(2000);
  202.  
  203.       mains(_s2,1);
  204.       delay(2000);
  205.       mains(_s2,0);
  206.       delay(2000);
  207.     }
  208.     //baju lengan panjang
  209.     else if(check("A") == 1 && check("B") == 1 && check("C") == 1 && check("D") == 0 && check("E") == 1){
  210.       lcd.setCursor(1,0);
  211.       lcd.print("Baju L. Panjang");
  212.       Serial.println("Baju L. Panjang");
  213.      
  214.       mains(_s3,1);
  215.       delay(2000);
  216.       mains(_s3,0);
  217.       delay(2000);
  218.  
  219.       mains(_s4,1);
  220.       delay(2000);
  221.       mains(_s4,0);
  222.       delay(2000);
  223.  
  224.       mains(_s5,1);
  225.       delay(2000);
  226.       mains(_s5,0);
  227.       delay(2000);
  228.  
  229.       mains(_s1,1);
  230.       delay(2000);
  231.       mains(_s1,0);
  232.       delay(2000);
  233.  
  234.       mains(_s2,1);
  235.       delay(2000);
  236.       mains(_s2,0);
  237.       delay(2000);
  238.     }
  239.     //celana pendek
  240.     else if(check("A") == 1 && check("B") == 0 && check("C") == 0 && check("D") == 0 && check("E") == 0){
  241.       lcd.setCursor(1,0);
  242.       lcd.print("Celana Pendek");
  243.       Serial.println("Celana Pendek");
  244.      
  245.       mains(_s1,1);
  246.       delay(2000);
  247.       mains(_s1,0);
  248.       delay(2000);
  249.  
  250.       mains(_s5,1);
  251.       delay(2000);
  252.       mains(_s5,0);
  253.       delay(2000);
  254.  
  255.       mains(_s2,1);
  256.       delay(2000);
  257.       mains(_s2,0);
  258.       delay(2000);
  259.     }
  260.     //celana panjang
  261.     //C tidak dipakai karena kadang detect kadang enggak
  262.     else if(check("A") == 1 && check("D") == 1 && check("E") == 0){
  263.       lcd.setCursor(1,0);
  264.       lcd.print("Celana Panjang");
  265.       Serial.println("Celana Panjang");
  266.      
  267.       mains(_s7,1);
  268.       delay(2000);
  269.       mains(_s7,0);
  270.       delay(2000);
  271.  
  272.       mains(_s6,1);
  273.       delay(2000);
  274.       mains(_s6,0);
  275.       delay(2000);
  276.  
  277.       mains(_s5,1);
  278.       delay(2000);
  279.       mains(_s5,0);
  280.       delay(2000);
  281.  
  282.       mains(_s1,1);
  283.       delay(2000);
  284.       mains(_s1,0);
  285.       delay(2000);
  286.  
  287.       mains(_s2,1);
  288.       delay(2000);
  289.       mains(_s2,0);
  290.       delay(2000);
  291.     }
  292.    
  293.     //ambil baju
  294.     lcd.clear();
  295.     while(check("B") == 1){
  296.       lcd.setCursor(0,0);
  297.       lcd.print("Selesai...");
  298.       lcd.setCursor(0,1);
  299.       lcd.print("Silahkan Ambil");
  300.  
  301.       Serial.println("Selesai...");
  302.       Serial.println("Silahkan Ambil...");
  303.     }
  304.  
  305.     delay(2000);
  306.     lcd.clear();
  307.    
  308.   }
  309. }
  310.  
  311. void runServo(int n,int v){
  312.   switch(n){
  313.     case _s1  : s1.write(v); break;
  314.     case _s2  : s2.write(v); break;
  315.     case _s3  : s3.write(v); break;
  316.     case _s4  : s4.write(v); break;
  317.     case _s5  : s5.write(v); break;
  318.     case _s6  : s6.write(v); break;
  319.     case _s7  : s7.write(v); break;
  320.     default   : break;
  321.   }
  322. }
  323.  
  324. int readDistance(String c) {
  325.   int duration, dist;
  326.  
  327.   if(c == "A"){
  328.     digitalWrite(trigA, LOW);
  329.     delayMicroseconds(8);
  330.     digitalWrite(trigA, HIGH);
  331.     delayMicroseconds(8);
  332.     digitalWrite(trigA, LOW);
  333.     delayMicroseconds(8);
  334.     duration = pulseIn(echoA, HIGH);
  335.   }
  336.   else if(c == "B"){
  337.     digitalWrite(trigB, LOW);
  338.     delayMicroseconds(8);
  339.     digitalWrite(trigB, HIGH);
  340.     delayMicroseconds(8);
  341.     digitalWrite(trigB, LOW);
  342.     delayMicroseconds(8);
  343.     duration = pulseIn(echoB, HIGH);
  344.   }
  345.   else if(c == "C"){
  346.     digitalWrite(trigC, LOW);
  347.     delayMicroseconds(8);
  348.     digitalWrite(trigC, HIGH);
  349.     delayMicroseconds(8);
  350.     digitalWrite(trigC, LOW);
  351.     delayMicroseconds(8);
  352.     duration = pulseIn(echoC, HIGH);
  353.   }
  354.   else if(c == "D"){
  355.     digitalWrite(trigD, LOW);
  356.     delayMicroseconds(8);
  357.     digitalWrite(trigD, HIGH);
  358.     delayMicroseconds(8);
  359.     digitalWrite(trigD, LOW);
  360.     delayMicroseconds(8);
  361.     duration = pulseIn(echoD, HIGH);
  362.   }
  363.   else if(c == "E"){
  364.     digitalWrite(trigE, LOW);
  365.     delayMicroseconds(8);
  366.     digitalWrite(trigE, HIGH);
  367.     delayMicroseconds(8);
  368.     digitalWrite(trigE, LOW);
  369.     delayMicroseconds(8);
  370.     duration = pulseIn(echoE, HIGH);
  371.   }
  372.  
  373.   dist = (duration / 2) / 29.1;
  374.   return dist;
  375. }
  376.  
  377. int check(String v){
  378.   int batas = 20;
  379.   int m = 0;
  380.   if(v == "A"){ m = readDistance("A") < batas ? 1 : 0; }
  381.   else if(v == "B"){ m = readDistance("B") < batas ? 1 : 0; }
  382.   else if(v == "C"){ m = readDistance("C") < batas ? 1 : 0; }
  383.   else if(v == "D"){ m = readDistance("D") < batas ? 1 : 0; }
  384.   else if(v == "E"){ m = readDistance("E") < batas ? 1 : 0; }
  385.  
  386.   return m;
  387. }
  388.  
  389. void ult(){
  390.   Serial.print("A : ");
  391.   Serial.print(check("A"));
  392.   Serial.print("\t\t");
  393.   Serial.print("B : ");
  394.   Serial.print(check("B"));
  395.   Serial.print("\t\t");
  396.   Serial.print("C : ");
  397.   Serial.print(check("C"));
  398.   Serial.print("\t\t");
  399.   Serial.print("D : ");
  400.   Serial.print(check("D"));
  401.   Serial.print("\t\t");
  402.   Serial.print("E : ");
  403.   Serial.print(check("E"));
  404.   Serial.println("\t\t");  
  405.   lcd.setCursor(0,1);
  406.   lcd.print(check("A"));
  407.   lcd.print(" ");
  408.   lcd.print(check("B"));
  409.   lcd.print(" ");
  410.   lcd.print(check("C"));
  411.   lcd.print(" ");
  412.   lcd.print(check("D"));
  413.   lcd.print(" ");
  414.   lcd.print(check("E"));
  415.   lcd.print(" ");
  416. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement