rfid reader group 1

Dependencies:   mbed

Revision:
0:672cd82db097
Child:
1:cedf6a3c299e
diff -r 000000000000 -r 672cd82db097 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Feb 28 15:20:53 2020 +0000
@@ -0,0 +1,145 @@
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+Serial reader(PB_6, PB_7);
+InterruptIn Green(PB_0);
+DigitalIn CTS(PB_1);
+int TXBsize = 1;
+char TXB[16];
+uint8_t READRFID = 0b01010010;
+uint8_t WRITEEEPROM = 0b01010000;
+uint8_t POLLING = 0x1;
+uint8_t POLLINGADDRESS = 0;
+uint8_t RFIDTYPEADDRESS = 0x3;
+uint8_t RFIDTYPE = 0x0;
+uint8_t ADDRESS = 0;
+uint8_t KEY = 0;
+bool FINDINGUID = 0;
+bool UIDFOUND = 0;
+bool SENDSUCCESS = 0;
+bool UIDTRIED = 0;
+uint8_t UID[8];
+void readerRX() {
+   if(FINDINGUID == 1)
+   {UID[0]=reader.getc();
+    UID[1]=reader.getc();
+    UID[2]=reader.getc();
+    UID[3]=reader.getc();
+    UID[4]=reader.getc();
+    UID[5]=reader.getc();
+    UID[6]=reader.getc();
+    UID[7]=reader.getc();
+ 
+    pc.printf("%d %d %d %d %d %d %d %d", UID[7],UID[6], UID[5], UID[4], UID[3], UID[2], UID[1], UID[0]);
+    UIDFOUND = 1;
+    FINDINGUID = 0;
+   }
+   else
+   {pc.putc(reader.getc());}
+   
+}
+
+void GreenIRQ() {
+     bool sent = 0;
+    Timer timer;
+    timer.start();
+     while(!UIDTRIED)
+   {sent = 0;
+   while (sent == 0)
+    {if(CTS == 0)
+       { FINDINGUID = 1;
+       reader.putc(0b01010101);
+       UIDTRIED = 1;
+       sent = 1;}
+     }
+   }
+  if(UIDTRIED == 1 && UIDFOUND == 0)
+  { FINDINGUID = 0;}
+    TXBsize = 3;
+    TXB[0]=READRFID;
+      TXB[1]=KEY;
+      TXB[2]=ADDRESS;
+      //TXB[2]=0xE0;
+      TXB[3]=0x04;
+      TXB[4]=0x01;
+      TXB[5]=0x50;
+      TXB[6]=0xD4;
+      TXB[7]=0xF2;
+      TXB[8]=0x23;
+      TXB[9]=0x87;
+    uint8_t TXBused = 0;
+            
+   
+    if(SENDSUCCESS == 1 && TXB[0] == READRFID)
+      {ADDRESS++;
+      SENDSUCCESS = 0;
+      if(ADDRESS == 0)
+       {KEY++;
+         if(KEY == 0b00100000)
+         {KEY = 0b10000000;}
+         else if(KEY == 0b10100000)
+         {KEY = 0b00000000;}
+         pc.printf("%d",KEY);
+        }
+      TXB[1]=ADDRESS;
+      TXB[2]=KEY;
+      }
+      
+    
+        // Time keeping
+    while (TXBused<TXBsize){
+        if (CTS == 0 && sent == 0){
+            reader.putc(TXB[TXBused]);
+          //  pc.printf("%d",TXB[TXBused]);
+            TXBused++;
+           // sent = 1;
+      }
+      else if(CTS == 1)
+      {sent = 0;
+       }
+    }
+     SENDSUCCESS = 1;
+     
+}
+
+
+void initRFID()
+{   bool sent = 0;
+
+while (sent ==0 )
+    { if(CTS == 0)
+      {TXBsize = 3;
+       reader.putc(WRITEEEPROM);
+       reader.putc(RFIDTYPEADDRESS);
+       reader.putc(RFIDTYPE);
+       sent = 1;
+      }
+     }
+while (CTS == 0){}
+while (CTS == 1){}
+sent = 0;
+while (sent ==0 )
+    { if(CTS == 0)
+      {TXBsize = 3;
+       reader.putc(WRITEEEPROM);
+       reader.putc(POLLINGADDRESS);
+       reader.putc(POLLING);
+       sent = 1;
+      }
+     }
+
+  }
+
+
+int main() {
+    
+    pc.baud(9600);
+    reader.baud(9600);
+   initRFID();
+    reader.attach(&readerRX,Serial::RxIrq);
+    Green.fall(&GreenIRQ);  // attach the address of the flip function to the rising edge
+    while(true)
+    {
+    }
+    
+}