Advertisement
CHU2

Knock

Oct 20th, 2024 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 3.68 KB | Source Code | 0 0
  1. #include <Servo.h>
  2.  
  3. int soundSens = A0;
  4. int opButt = 3;
  5. int setButt = 4;
  6. int servo = 5;
  7.  
  8. String millisOp[10] = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
  9. String tempo[8] = {"400", "400", "0", "0", "0", "0", "0", "0"};
  10. int h = 0;
  11. int opState01 = 0;
  12. int opLastState01 = 0;
  13. bool lockState01 = true;
  14. int opState02 = 0;
  15. int opLastState02 = 0;
  16. bool lockState02 = true;
  17.  
  18. Servo Servo01;
  19.  
  20. void iCheck();
  21. void tempoCheck();
  22.  
  23. void setup() {
  24.   for (int i = 3; i <= 4; i++) {
  25.     pinMode(i, INPUT);
  26.   }
  27.   pinMode(soundSens, INPUT);
  28.   Servo01.attach(servo);
  29.  
  30.   Serial.begin(9600);
  31. }
  32.  
  33. void loop() {
  34.   int sens = analogRead(soundSens);
  35.   opState01 = digitalRead(opButt);
  36.   opState02 = digitalRead(setButt);
  37.  
  38.   Servo01.write(0);
  39.  
  40.   if (h >= 10) {
  41.     h = 0;
  42.   }
  43.  
  44.   // Toggle lock state on button press
  45.   if (opState01 != opLastState01) {
  46.     if (opState01 == LOW) { // Button pressed
  47.       lockState01 = !lockState01; // Toggle the lock state
  48.     }
  49.     opLastState01 = opState01;
  50.   }
  51.  
  52.   if (!lockState01) { // Check if lock is engaged
  53.     if (sens == HIGH) {
  54.       millisOp[h] = millis();
  55.  
  56.       delay(100);
  57.       h++;
  58.     }
  59.  
  60.     // Test serial output (don't mind this)
  61.     for (int i = 0; i < 10; i++) {
  62.       Serial.print(millisOp[i]);
  63.       Serial.print(", ");
  64.  
  65.       if (i == 9) {
  66.         Serial.println();
  67.       }
  68.     }
  69.   }
  70.   if (lockState01) {
  71.     iCheck();
  72.    
  73.     h = 0;
  74.   }
  75.  
  76.   // Toggle lock state on button press
  77.   if (opState02 != opLastState02) {
  78.     if (opState02 == LOW) { // Button pressed
  79.       lockState02 = !lockState02; // Toggle the lock state
  80.     }
  81.     opLastState02 = opState02;
  82.   }
  83.  
  84.   if (lockState02) { // Check if lock is engaged
  85.     if (sens == HIGH) {
  86.       millisOp[h] = millis();
  87.  
  88.       delay(100);
  89.       h++;
  90.     }
  91.   }
  92.   if (!lockState02) {
  93.     tempoCheck();
  94.  
  95.     // Also Test, don't mind this
  96.     for (int i = 0; i < 8; i++) {
  97.       Serial.print(tempo[i]);
  98.       Serial.print(", ");
  99.  
  100.       if (i == 9) {
  101.         Serial.println();
  102.       }
  103.     }
  104.   }
  105. }
  106.  
  107. void iCheck() {
  108.   if (millisOp[1].toInt() >= millisOp[0].toInt() + tempo[0].toInt() && millisOp[1].toInt() <= millisOp[2].toInt() - tempo[0].toInt() + 400) {
  109.     if (millisOp[2].toInt() >= millisOp[1].toInt() + tempo[1].toInt() && millisOp[2].toInt() <= millisOp[3].toInt() - tempo[1].toInt() + 400) {
  110.       if (millisOp[3].toInt() >= millisOp[2].toInt() + tempo[2].toInt() && millisOp[3].toInt() <= millisOp[4].toInt() - tempo[2].toInt() + 400) {
  111.         if (millisOp[4].toInt() >= millisOp[3].toInt() + tempo[3].toInt() && millisOp[4].toInt() <= millisOp[5].toInt() - tempo[3].toInt() + 400) {
  112.           if (millisOp[5].toInt() >= millisOp[4].toInt() + tempo[4].toInt() && millisOp[5].toInt() <= millisOp[6].toInt() - tempo[4].toInt() + 400) {
  113.             if (millisOp[6].toInt() >= millisOp[5].toInt() + tempo[5].toInt() && millisOp[6].toInt() <= millisOp[7].toInt() - tempo[5].toInt() + 400) {
  114.               if (millisOp[7].toInt() >= millisOp[6].toInt() + tempo[6].toInt() && millisOp[7].toInt() <= millisOp[8].toInt() - tempo[6].toInt() + 400) {
  115.                 if (millisOp[8].toInt() >= millisOp[7].toInt() + tempo[7].toInt() && millisOp[8].toInt() <= millisOp[9].toInt() - tempo[7].toInt() + 400) {
  116.                   Servo01.write(180);  // Change if not accurate an paglibot an servo
  117.                   Serial.println("UNLOCK YEHEY!!"); // ig kakadi an lock motor chuchu
  118.                 }
  119.               }
  120.             }
  121.           }
  122.         }
  123.       }
  124.     }
  125.   }
  126.   else {
  127.     Serial.println("LOCKED NOO!!");
  128.   }
  129. }
  130.  
  131. void tempoCheck() {
  132.   for (int i = 1; i <= 8; i++) {
  133.     tempo[i - 1] = (millisOp[i].toInt() - millisOp[i - 1].toInt()) - 200;
  134.   }
  135. }
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement