// // deeds.ino // // a Tangible Time Tracker // // Ahmad Saeed 7/10/20 // // This work may be reproduced, modified, distributed, // performed, and displayed for any purpose. Copyright is // retained and must be preserved. The work is provided // as is; no warranty is provided, and users accept all // liability #include #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); #define RDM6300_RX_PIN 5 Rdm6300 rdm6300; String cardID = "0"; bool cardState = 0; void setup() { Serial.begin(9600); rdm6300.begin(RDM6300_RX_PIN); lcd.init(); lcd.init(); lcd.noBacklight(); lcd.setCursor(0, 0); lcd.print(" "); } void loop() { cardState = rdm6300.is_tag_near(); if (rdm6300.update()) cardID = String(rdm6300.get_tag_id(), HEX); delay(10); if (Serial.available() > 0) { byte msg = Serial.read(); if (msg == 0x0A) { Serial.write(byte(0x0B)); } if (msg == 0x0B) { if (cardState == 0) Serial.println("0"); else Serial.println(cardID); } if (msg == 0x0C) { lcd.noBacklight(); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); } if (msg == 0x0D) { lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Waiting 4 deeds."); lcd.setCursor(0, 1); lcd.print(" "); } if (msg == 0x0E) { if (cardState != 0) { delay(10); String x; x = Serial.readStringUntil('@'); lcd.backlight(); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print(x); } } if (msg == 0x0F) { if (cardState != 0) { delay(10); String x; x = Serial.readStringUntil('@'); lcd.setCursor(0, 1); lcd.print(x); } } } }