Advertisement
safwan092

Arduino + UHF RFID KLM900S + Ultrasonic + Servo - [NO DELAY]

Jul 25th, 2022
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. /*
  2. Connections:
  3. ------------------------------
  4. Arduino Uno <---> RF-KLM900S
  5. ******************************
  6. 3.3V <---> EN
  7. 5V <---> 5V
  8. GND <---> GND
  9. 3 <---> TTL_R
  10. 2 <---> TTL_T
  11. ------------------------------
  12. */
  13. #include <SoftwareSerial.h>
  14. #include <Servo.h>
  15.  
  16. int trigPin = 8;
  17. int echoPin = 9;
  18. long distance;
  19. long duration;
  20. int flag = 0;
  21. int flag3min = 0;
  22. Servo servo1;
  23. SoftwareSerial SSerial(2, 3); // RX, TX
  24.  
  25. int numOfTags = 3;
  26. //Single Read BB 00 22 00 00 22 7E
  27. byte A[] = {0xBB, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7E};
  28.  
  29. String TagNo[] = {"30 08 33 B2 DD D9 01 40 00 00 00 00",
  30. "E2 80 68 94 00 00 50 20 91 08 58 7E",
  31. "E2 80 68 94 00 00 50 20 91 08 58 88"
  32. };
  33.  
  34. String TagID_RX = "";
  35. static unsigned long currentTime = 0;
  36. static unsigned long lastTime = 0;
  37. static unsigned long lastTime2 = 0;
  38. int count = 0;
  39.  
  40. void setup()
  41. {
  42. SSerial.begin(115200);
  43. Serial.begin(115200);
  44. servo1.attach(11);
  45. servo1.write(0);
  46. pinMode(trigPin, OUTPUT);
  47. pinMode(echoPin, INPUT);
  48. delay(2000);
  49. }
  50.  
  51. void loop() {
  52. ultra();
  53. static String inputString;
  54. static unsigned long lastCharArrivalTime = 0;
  55.  
  56. if (millis() - lastTime > 50 && inputString == "") {
  57. SSerial.write(A, sizeof(A));
  58. lastTime = millis();
  59. }
  60.  
  61. if (SSerial.available())
  62. {
  63. byte incomingByte = SSerial.read();
  64. inputString += "0123456789ABCDEF"[incomingByte / 16];
  65. inputString += "0123456789ABCDEF"[incomingByte % 16];
  66. inputString += ' ';
  67. lastCharArrivalTime = millis();
  68. }
  69.  
  70. if (lastCharArrivalTime != 0 && millis() - lastCharArrivalTime >= 10)
  71. {
  72. TagID_RX = inputString.substring(24, 59);
  73. for (int i = 0; i < numOfTags; i++) {
  74. if (!TagID_RX.compareTo(TagNo[i]) && distance <= 200) {
  75. Serial.print("Tag No [");
  76. Serial.print(i + 1);
  77. Serial.println("] Found.");
  78. Serial.println("------------------");
  79. servo1.write(90);
  80. delay(1000);
  81. flag = 1;
  82. flag3min = 0;
  83. count = 0;
  84. lastTime2 = millis();
  85. //delay(180000);// Gate Open Time in (ms), 1000 = 1 Second, 180,000 = 3 Minutes
  86. }
  87. else {
  88. if (count > 50 && flag == 1) {
  89. if (flag3min == 0) {
  90. Serial.println("3 min Timer Started !!");
  91. flag3min = 1;
  92. }
  93. currentTime = millis();
  94. if (currentTime - lastTime2 > 180000) {
  95. lastTime2 = millis();
  96. servo1.write(0);
  97. count = 0;
  98. flag = 0;
  99. flag3min = 0;
  100. }
  101. //else {
  102. // Serial.print((currentTime - lastTime2) / 1000);
  103. // Serial.println("/180 [Seconds]");
  104. //}
  105. //delay(180000);// Gate Open Time in (ms), 1000 = 1 Second, 180,000 = 3 Minutes
  106. }
  107. count++;
  108. //Serial.println(count);
  109. //Serial.println((currentTime - lastTime2)/1000);
  110. }
  111. }
  112. inputString = "";
  113. lastCharArrivalTime = 0;
  114. }
  115. }
  116.  
  117. void ultra() {
  118. digitalWrite(trigPin, LOW);
  119. delayMicroseconds(2);
  120. digitalWrite(trigPin, HIGH);
  121. delayMicroseconds(10);
  122. digitalWrite(trigPin, LOW);
  123. duration = pulseIn(echoPin, HIGH);
  124. distance = duration * 0.034 / 2;
  125. //Serial.println(distance);
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement