#include <Servo.h>
Servo myservo;  //ประกาศตัวแปรแทน Servo
#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

int buzzPin = 3;
int led1 = 2;
// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;

void setup() {
  myservo.attach(5);
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
  pinMode(led1, OUTPUT);
  digitalWrite(led1, LOW);
  myservo.write(0);
}

void loop() {

  if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      /* With a new cardnumber, show it. */
      Serial.println(" ");
      Serial.println("Card found");
      serNum0 = rfid.serNum[0];
      serNum1 = rfid.serNum[1];
      serNum2 = rfid.serNum[2];
      serNum3 = rfid.serNum[3];
      serNum4 = rfid.serNum[4];

      //Serial.println(" ");
      Serial.println("Cardnumber:");
      Serial.print("Dec: ");
      Serial.print(rfid.serNum[0], DEC);
      Serial.print(", ");
      Serial.print(rfid.serNum[1], DEC);
      Serial.print(", ");
      Serial.print(rfid.serNum[2], DEC);
      Serial.print(", ");
      Serial.print(rfid.serNum[3], DEC);
      Serial.print(", ");
      Serial.print(rfid.serNum[4], DEC);
      Serial.println(" ");

      Serial.print("Hex: ");
      Serial.print(rfid.serNum[0], HEX);
      Serial.print(", ");
      Serial.print(rfid.serNum[1], HEX);
      Serial.print(", ");
      Serial.print(rfid.serNum[2], HEX);
      Serial.print(", ");
      Serial.print(rfid.serNum[3], HEX);
      Serial.print(", ");
      Serial.print(rfid.serNum[4], HEX);
      Serial.println(" ");
      //buzzer
      analogWrite(3, 20);
      delay(500);
      analogWrite(3, 0);
    }
    if (rfid.serNum[0] == 172 && rfid.serNum[1] == 129 && rfid.serNum[2] == 26 && rfid.serNum[3] == 214 && rfid.serNum[4] == 225) {
      myservo.write(90);  // สั่งให้ Servo หมุนไปองศาที่ 0
      delay(3000);        // หน่วงเวลา 1000ms
      myservo.write(0);   // สั่งให้ Servo หมุนไปองศาที่ 90
      delay(3000);        // หน่วงเวลา 1000ms
      Serial.println("servojod");
    } else if (rfid.serNum[0] == 220 && rfid.serNum[1] == 238 && rfid.serNum[2] == 28 && rfid.serNum[3] == 214 && rfid.serNum[4] == 248) {
      myservo.write(90);  // สั่งให้ Servo หมุนไปองศาที่ 0
      delay(3000);        // หน่วงเวลา 1000ms
      myservo.write(0);   // สั่งให้ Servo หมุนไปองศาที่ 90
      delay(3000);        // หน่วงเวลา 1000ms
      Serial.println("servoguide");
    }
  }
  rfid.halt();
}