#include "HX711.h"
#include "Keypad.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
HX711 scale1;
HX711 scale2;
int ledPins[] = {
13,13,14,14,14,14,23,23,23,23
};
char keys[4][4] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
uint8_t colPins[4] = {16, 4, 2, 15};
uint8_t rowPins[4] = {19, 18, 5, 17};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, 4, 4);
char key;
float weight1, weight2;
int ledlevel, i;
char *fruits[] = {
"Apples",
"Bananas",
"Oranges",
"Grapes",
"Strawberries"
};
char *vegetables[] = {
"Tomatoes",
"Green Chillies",
"Cauliflower",
"Capsicum (Bell Peppers)",
"Carrots",
"Green Beans",
"Leafy Greens (Spinach, Fenugreek, etc.)",
"Bitter Gourd (Karela)",
"Bottle Gourd (Lauki)",
"Radish"
};
char ints[] = {'1', '2'};
char *ing [3] = {};
int sizev = sizeof(vegetables) / sizeof(vegetables[0]);
int sizef = sizeof(fruits) / sizeof(fruits[0]);
bool check(char array[], int size, char target) {
for (int i = 0; i < size; i++) {
if (char(array[i]) == char(target)) {
return true;
}
}
return false;
}
void setup() {
Serial.begin(115200);
scale1.begin(33, 32);
scale2.begin(25, 27);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(23, OUTPUT);
}
void loop() {
// key = keypad.getKey();
// weight = scale1.get_units()*2.38095238095/1000;
// int ledlevel = map(weight, 0, 5, 0, 10);
display.clearDisplay();
display.display();
key = keypad.getKey();
if (key!=NO_KEY){
switch (key){
case 'A':{
key = NO_KEY;
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Intitializing Mode");
display.display();
delay(1000);
while (key!='D')
{
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("1)Fruits \n2)Vegies");
display.display();
key = NO_KEY;
while(key==NO_KEY){
key = keypad.getKey();
}
display.clearDisplay();
display.display();
switch (key){
case '1':{
for (i=0;i<5;i++){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(fruits[i]);
display.display();
key = NO_KEY;
while(key==NO_KEY){
key = keypad.getKey();
}
if (check(ints,10,char(key))){
ing[i] = fruits[i];
}
else{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Container Not present");
display.display();
}
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("D exit\nElse vegie");
display.display();
break;
}
case '2':{
for (i=0;i<5;i++){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(vegetables[i]);
display.display();
key = NO_KEY;
while(key==NO_KEY){
key = keypad.getKey();
}
if (check(ints,10,char(key))){
ing[i] = vegetables[i];
}
else{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Container Not present");
display.display();
}
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("D exit\nElse fruits");
display.display();
break;
}
default:{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Incorrect input");
display.display();
break;
}
}
key = NO_KEY;
while(key == NO_KEY){
key = keypad.getKey();
}
}
key = NO_KEY;
break;
}
case 'B':{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Interactive Mode");
display.display();
delay(1000);
display.clearDisplay();
key = NO_KEY;
break;
}
case 'C':{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Dormant Mode");
display.display();
delay(1000);
while (key != 'D'){
key = NO_KEY;
weight1 = scale1.get_units()*2.38095238095/1000;
weight2 = scale2.get_units()*2.38095238095/1000;
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(ing[0]);
display.println(weight1);
display.print(ing[1]);
display.println(weight2);
display.display();
while (key = NO_KEY){
key = keypad.getKey();
}
}
key = NO_KEY;
break;
}
}
}
}