Skittles Dispenser by Benjamin Kim and Alex Zdanov

Dependencies:   4DGL-uLCD-SE HC_SR04_Ultrasonic_Library LSM9DS1_Library_cal Servo mbed

Files at this revision

API Documentation at this revision

Comitter:
bkim334
Date:
Sat Mar 11 21:40:03 2017 +0000
Child:
1:1099d4500d8a
Commit message:
After trying the RFID;

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
HC_SR04_Ultrasonic_Library.lib Show annotated file Show diff for this revision Revisions of this file
LSM9DS1_Library_cal.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Sat Mar 11 21:40:03 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HC_SR04_Ultrasonic_Library.lib	Sat Mar 11 21:40:03 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LSM9DS1_Library_cal.lib	Sat Mar 11 21:40:03 2017 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/4180_1/code/LSM9DS1_Library_cal/#36abf8e18ade
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Mar 11 21:40:03 2017 +0000
@@ -0,0 +1,175 @@
+#include "mbed.h"
+#include "LSM9DS1.h" //Accelerometer
+#include "uLCD_4DGL.h" //LCD
+#define MAX_BITS 100                 // max number of bits 
+#define WEIGAND_WAIT_TIME  3000      // time to wait for another weigand pulse.  
+
+int databits[MAX_BITS];    // stores all of the data bits
+int bitCount;              // number of bits currently captured
+int flagDone;              // goes low when data is currently being captured
+int weigand_counter;        // countdown until we assume there are no more bits
+
+unsigned long facilityCode=0;        // decoded facility code
+unsigned long cardCode=0;            // decoded card code
+
+
+DigitalOut LED_GREEN(p15);
+DigitalIn dataIn(p10);
+DigitalIn Clock(p5);
+
+
+InterruptIn int0(p10);
+InterruptIn int1(p5);
+
+uLCD_4DGL uLCD(p28, p27, p29); // serial tx, serial rx, reset pin;
+DigitalOut myled(LED1);
+
+/*int LED_GREEN = 11;
+int LED_RED = 12;
+int BEEP_BEEP = 10;*/
+
+// interrupt that happens when INTO goes low (0 bit)
+void ISR_INT0()
+{
+    //uLCD.print("0");   // uncomment this line to display raw binary
+    bitCount++;
+    flagDone = 0;
+    weigand_counter = WEIGAND_WAIT_TIME;
+
+}
+
+// interrupt that happens when INT1 goes low (1 bit)
+void ISR_INT1()
+{
+    //uLCD.print("1");   // uncomment this line to display raw binary
+    databits[bitCount] = 1;
+    bitCount++;
+    flagDone = 0;
+    weigand_counter = WEIGAND_WAIT_TIME;
+}
+
+void setup()
+{
+    LED_GREEN = 1;
+    myled = 1;
+    uLCD.printf("RFID Reader Setup");
+    int0.fall(&ISR_INT0);
+    int1.fall(&ISR_INT1);
+    /*pinMode(LED_RED, OUTPUT);
+    pinMode(LED_GREEN, OUTPUT);
+    pinMode(BEEP_BEEP, OUTPUT);
+    digitalWrite(LED_RED, HIGH); // High = Off
+    digitalWrite(BEEP_BEEP, HIGH); // High = off
+    digitalWrite(LED_GREEN, LOW);  // Low = On
+    pinMode(2, INPUT);     // DATA0 (INT0)
+    pinMode(3, INPUT);     // DATA1 (INT1)
+
+    uLCD.begin(9600);
+    uLCD.println("RFID Readers");
+
+    // binds the ISR functions to the falling edge of INTO and INT1
+    attachInterrupt(0, ISR_INT0, FALLING);
+    attachInterrupt(1, ISR_INT1, FALLING);
+    */
+
+    weigand_counter = WEIGAND_WAIT_TIME;
+}
+
+void printBits()
+{
+    uLCD.printf("FC = ");
+    uLCD.printf("%lu", facilityCode);
+    uLCD.printf(", CC = ");
+    uLCD.printf("%lu", cardCode);
+}
+
+void loop()
+{
+    // This waits to make sure that there have been no more data pulses before processing data
+    if (!flagDone) {
+        if (--weigand_counter == 0)
+            flagDone = 1;
+    }
+
+    // if we have bits and we the weigand counter went out
+    if (bitCount > 0 && flagDone) {
+        int i;
+
+        uLCD.printf("Read ");
+        uLCD.printf("%d", bitCount);
+        uLCD.printf(" bits. ");
+
+        if (bitCount == 35) {
+            // 35 bit HID Corporate 1000 format
+            // facility code = bits 2 to 14
+            for (i=2; i<14; i++) {
+                facilityCode <<=1;
+                facilityCode |= databits[i];
+            }
+
+            // card code = bits 15 to 34
+            for (i=14; i<34; i++) {
+                cardCode <<=1;
+                cardCode |= databits[i];
+            }
+
+            printBits();
+        } else if (bitCount == 26) {
+            // standard 26 bit format
+            // facility code = bits 2 to 9
+            for (i=1; i<9; i++) {
+                facilityCode <<=1;
+                facilityCode |= databits[i];
+            }
+
+            // card code = bits 10 to 23
+            for (i=9; i<25; i++) {
+                cardCode <<=1;
+                cardCode |= databits[i];
+            }
+
+            printBits();
+        } else {
+            // you can add other formats if you want!
+            // uLCD.println("Unable to decode.");
+        }
+
+        // cleanup and get ready for the next card
+        bitCount = 0;
+        facilityCode = 0;
+        cardCode = 0;
+        for (i=0; i<MAX_BITS; i++) {
+            databits[i] = 0;
+        }
+    }
+}
+
+
+
+Serial pc(USBTX, USBRX);
+
+AnalogIn in(p20); //Proximity
+float voltage;
+
+int IDNum;
+
+
+int main()
+{
+    uLCD.cls();
+
+    /*LSM9DS1 IMU(p9, p10, 0xD6, 0x3C);
+    IMU.begin();
+    if (!IMU.begin()) {
+        pc.printf("Failed to communicate with LSM9DS1.\n");
+    }*/
+    
+    setup();
+    uLCD.printf("After Setup \n");
+    
+    while(1) {
+        
+        loop();
+        
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Mar 11 21:40:03 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e1686b8d5b90
\ No newline at end of file