Added basic Button and Display IO
This commit is contained in:
parent
dbf9fc1d4f
commit
835c455762
@ -1,6 +1,4 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
//#include <SPI.h>
|
|
||||||
//#include <SD.h>
|
|
||||||
|
|
||||||
#ifndef BEERBOX_IS_INCLUDED
|
#ifndef BEERBOX_IS_INCLUDED
|
||||||
#define BEERBOX_IS_INCLUDED
|
#define BEERBOX_IS_INCLUDED
|
||||||
|
58
beerbox.ino
58
beerbox.ino
@ -1,12 +1,16 @@
|
|||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
|
#include <Wire.h>
|
||||||
#include <SD.h>
|
#include <SD.h>
|
||||||
|
|
||||||
|
#include <LiquidCrystal_I2C.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "beerbox.h"
|
#include "beerbox.h"
|
||||||
|
|
||||||
#include <Adafruit_Fingerprint.h>
|
#include <Adafruit_Fingerprint.h>
|
||||||
|
|
||||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);
|
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);
|
||||||
|
LiquidCrystal_I2C lcd(0x38, 8, 2); // 0x38 for PCF***A on address 000
|
||||||
|
|
||||||
|
|
||||||
//######### RFID CONSTANTS ##########
|
//######### RFID CONSTANTS ##########
|
||||||
@ -27,12 +31,19 @@ const int chipSelect = 53;
|
|||||||
char leckmich[255];
|
char leckmich[255];
|
||||||
Beerbox *box;
|
Beerbox *box;
|
||||||
|
|
||||||
|
int drinksMax = 1;
|
||||||
|
int lastButtonState = 1;
|
||||||
|
int currentDrink = 0;
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
//generall debugging
|
//generall debugging
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
//LCD init
|
||||||
|
lcd.init();
|
||||||
|
pinMode(2,INPUT_PULLUP);
|
||||||
|
|
||||||
//Fingerprint init
|
//Fingerprint init
|
||||||
finger.begin(57600);
|
finger.begin(57600);
|
||||||
if (finger.verifyPassword()) {
|
if (finger.verifyPassword()) {
|
||||||
@ -64,6 +75,9 @@ void setup() {
|
|||||||
box = new Beerbox;
|
box = new Beerbox;
|
||||||
box = read_beerbox(box);
|
box = read_beerbox(box);
|
||||||
|
|
||||||
|
lcd.print("BOXready");
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,16 +86,44 @@ void loop() {
|
|||||||
|
|
||||||
checkFinger();
|
checkFinger();
|
||||||
checkRFID();
|
checkRFID();
|
||||||
|
checkButton();
|
||||||
|
|
||||||
//Person myPerson = read_person(box, "p001");
|
//Person myPerson = read_person(box, "p001");
|
||||||
//read_person(box, "p002");
|
//read_person(box, "p002");
|
||||||
|
|
||||||
//while (1);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}//end loop
|
}//end loop
|
||||||
|
|
||||||
|
void checkButton() {
|
||||||
|
//one change per click to make seleting drinks easier for the drunken
|
||||||
|
|
||||||
|
//if (digitalRead(2) != lastButtonState) {
|
||||||
|
//delayMicroseconds(50); //debounce delay
|
||||||
|
|
||||||
|
if (digitalRead(2) != lastButtonState) {
|
||||||
|
//ok we have a change!
|
||||||
|
if (digitalRead(2) == LOW) {
|
||||||
|
//pushed
|
||||||
|
if(currentDrink == drinksMax-1) currentDrink = -1;
|
||||||
|
currentDrink++;
|
||||||
|
Serial.println(box->drinks[currentDrink].name);
|
||||||
|
lcd.clear();
|
||||||
|
lcd.print("Drink:");
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print(box->drinks[currentDrink].name);
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//released
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
lastButtonState = digitalRead(2);
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
bool checkFinger() {
|
bool checkFinger() {
|
||||||
|
|
||||||
uint8_t p = finger.getImage();
|
uint8_t p = finger.getImage();
|
||||||
@ -94,12 +136,15 @@ bool checkFinger() {
|
|||||||
if (p != FINGERPRINT_OK) return -1;
|
if (p != FINGERPRINT_OK) return -1;
|
||||||
|
|
||||||
// found a match!
|
// found a match!
|
||||||
//Serial.print("Found ID #"); Serial.print(finger.fingerID);
|
Serial.print("Found ID #"); Serial.print(finger.fingerID);
|
||||||
//Serial.print(" with confidence of "); Serial.println(finger.confidence);
|
Serial.print(" with confidence of "); Serial.println(finger.confidence);
|
||||||
|
|
||||||
|
|
||||||
//TODO @ALEX Do something with finger ID
|
//TODO @ALEX Do something with finger ID
|
||||||
// finger.fingerID
|
// finger.fingerID
|
||||||
|
|
||||||
|
int getFingerIndex(Person* persons, finger.fingerID)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkRFID() {
|
void checkRFID() {
|
||||||
@ -208,12 +253,13 @@ Beerbox* read_beerbox(Beerbox *box) {
|
|||||||
for (i = 0; (i < NUM_OF_DRINKS) && (box->drinks[i].price != -1); i++) {
|
for (i = 0; (i < NUM_OF_DRINKS) && (box->drinks[i].price != -1); i++) {
|
||||||
|
|
||||||
|
|
||||||
sprintf(leckmich, "drink number : %s\nprice: %d\nquantity: %d\n\n", box->drinks[i].name, box->drinks[i].price, box->drinks[i].quantity);
|
sprintf(leckmich, "drink number %i: %s\nprice: %d\nquantity: %d\n\n", i ,box->drinks[i].name, box->drinks[i].price, box->drinks[i].quantity);
|
||||||
Serial.print(leckmich);
|
Serial.print(leckmich);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i < NUM_OF_DRINKS) {
|
if (i < NUM_OF_DRINKS) {
|
||||||
sprintf(leckmich, "Slots %d - %d are not in use!\n", i + 1, NUM_OF_DRINKS);
|
sprintf(leckmich, "Slots %d - %d are not in use!\n", i + 1, NUM_OF_DRINKS);
|
||||||
|
drinksMax = i;
|
||||||
Serial.print(leckmich);
|
Serial.print(leckmich);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user