Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Connections:
- ------------------------------
- Arduino Uno <---> RF-KLM900S
- ******************************
- 3.3V <---> EN
- 5V <---> 5V
- GND <---> GND
- 3 <---> TTL_R
- 2 <---> TTL_T
- ------------------------------
- */
- #include <SoftwareSerial.h>
- #include <Servo.h>
- int trigPin = 8;
- int echoPin = 9;
- long distance;
- long duration;
- int flag = 0;
- Servo servo1;
- SoftwareSerial SSerial(2, 3); // RX, TX
- int numOfTags = 3;
- //Single Read BB 00 22 00 00 22 7E
- byte A[] = {0xBB, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7E};
- String TagNo[] = {"30 08 33 B2 DD D9 01 40 00 00 00 00",
- "E2 80 68 94 00 00 50 20 91 08 58 7E",
- "E2 80 68 94 00 00 50 20 91 08 58 88"
- };
- String TagID_RX = "";
- static unsigned long lastTime = 0;
- int count = 0;
- void setup()
- {
- SSerial.begin(115200);
- Serial.begin(115200);
- servo1.attach(11);
- servo1.write(0);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- delay(2000);
- }
- void loop() {
- ultra();
- static String inputString;
- static unsigned long lastCharArrivalTime = 0;
- if (millis() - lastTime > 50 && inputString == "") {
- SSerial.write(A, sizeof(A));
- lastTime = millis();
- }
- if (SSerial.available())
- {
- byte incomingByte = SSerial.read();
- inputString += "0123456789ABCDEF"[incomingByte / 16];
- inputString += "0123456789ABCDEF"[incomingByte % 16];
- inputString += ' ';
- lastCharArrivalTime = millis();
- }
- if (lastCharArrivalTime != 0 && millis() - lastCharArrivalTime >= 10)
- {
- TagID_RX = inputString.substring(24, 59);
- for (int i = 0; i < numOfTags; i++) {
- if (!TagID_RX.compareTo(TagNo[i]) && distance <= 200) {
- Serial.print("Tag No [");
- Serial.print(i + 1);
- Serial.println("] Found.");
- Serial.println("------------------");
- servo1.write(90);
- delay(1000);
- flag = 1;
- count = 0;
- //delay(180000);// Gate Open Time in (ms), 1000 = 1 Second, 180,000 = 3 Minutes
- }
- else {
- if (count > 50 && flag == 1) {
- Serial.println("3 min Timer Started !!");
- delay(180000);// Gate Open Time in (ms), 1000 = 1 Second, 180,000 = 3 Minutes
- servo1.write(0);
- count = 0;
- flag = 0;
- }
- count++;
- Serial.println(count);
- }
- }
- inputString = "";
- lastCharArrivalTime = 0;
- }
- }
- void ultra() {
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- distance = duration * 0.034 / 2;
- //Serial.println(distance);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement