// [email protected]
//spoilage@2024
#define BLED 23
#define UP 19
#define OK 18
#define buzzer 4
#define DWN 15
#define GAS 35
#define MOISTURE 34
#define AMONIA 33
//#include <WiFi.h>
//#include <WiFiClient.h>
#include <LiquidCrystal_I2C.h>
//char ssid[] = "Wokwi-GUEST";
//char pass[] = "";
LiquidCrystal_I2C lcd(0x27,20,4);
uint8_t Conductivityd[]={24,67,34,23,45,67,89};
uint8_t Amoniad[]={23,45,42,47,35,34,49};
uint8_t Gasd[]={45,78,67,56,46,67,87};
uint8_t tol =5;
float Amonia,Conductivity,Gas;
float cAmonia,cConductivity,cGas;
String fishType[]={"KIBUA ","CHANGU ","TASI ","SEHEWA ","KOLEKOLE","TAA ","SEHEWA "};
String result;
void setup()
{
pinMode(UP,INPUT_PULLUP);
pinMode(OK,INPUT_PULLUP);
pinMode(DWN,INPUT_PULLUP);
pinMode(BLED,OUTPUT);
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(BLED,LOW);
lcd.init();
lcd.backlight();
loadingdisplay();
Serial.begin(115200);
delay(500);
digitalWrite(BLED,HIGH);
lcd.clear();
}
void loop()
{
homedisplay();
read_data();
if(digitalRead(OK)==LOW)
{
delay(1000);
uint8_t fish = fishTypeSelection();
get_data(fish);
read_data();
display_result();
Alert(5);
lcd.clear();
}
}
void get_data(uint8_t num)
{
Conductivity=Conductivityd[num];
Amonia= Amoniad[num];
Gas=Gasd[num] ;
}
void read_data()
{
cConductivity=map(analogRead(MOISTURE),0,4095,0,100);
cAmonia=map(analogRead(AMONIA),0,4095,0,100);
cGas=map(analogRead(GAS),0,4095,0,100);
Serial.print("conductivity is: ");
Serial.println(cConductivity);
Serial.print("Amonia is: ");
Serial.println(cAmonia);
Serial.print("Gas is: ");
Serial.println(cGas);
}
void display_result()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**ANALYSING SAMPLE**");
lcd.setCursor(0,1);
lcd.print("**PLEASE WAIT ....**");
if(cGas >= (Gas-tol) && cGas <= (Gas+tol) && cAmonia >= (Amonia-tol) && cAmonia <= (Amonia+tol) && cConductivity >= (Conductivity-tol) && cConductivity <= (Conductivity+tol) )
result="FISH SPOILED";
else result="FISH IS FRESH";
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**ANALYSIS RESULTS**");
lcd.setCursor(0,1);
lcd.print("--------------------");
lcd.setCursor(0,2);
lcd.print(result);
lcd.setCursor(0,3);
lcd.print("--------------------");
}
void loadingdisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" IOT BASED FISH ");
lcd.setCursor(0,1);
lcd.print(" SPOILAGE DETECTION ");
lcd.setCursor(0,2);
lcd.print(" SYSTEM INITIALIZE ");
lcd.setCursor(0,3);
lcd.print("PLEASE WAIT");
for(int k=11;k<20;k++)
{
lcd.setCursor(k,3);
lcd.print(".");
delay(500);
}
}
void homedisplay()
{
lcd.setCursor(0,0);
lcd.print(" IOT BASED FISH ");
lcd.setCursor(0,1);
lcd.print(" SPOILAGE DETECTION ");
lcd.setCursor(0,2);
lcd.print(" PRESS OK TO START ");
lcd.setCursor(0,3);
lcd.print(" FISH SPOILAGE TEST ");
}
uint8_t fishTypeSelection()
{
uint8_t i=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**SELECT FISH TYPE**");
lcd.setCursor(0,2);
lcd.print("-->>");
while(digitalRead(OK))
{
if(digitalRead(UP)==LOW && i < sizeof(fishType))
{delay(500);i++;}
if(digitalRead(DWN)==LOW && i > 0)
{delay(500);i--;}
lcd.setCursor(0,1);
lcd.print("--------------------");
lcd.setCursor(5,2);
lcd.print(fishType[i]);
lcd.setCursor(0,3);
lcd.print("--------------------");
}
return i;
}
void Alert(uint8_t num)
{
for(num;num>0;num--)
{
digitalWrite(buzzer,HIGH);
delay(750);
digitalWrite(buzzer,LOW);
delay(500);
}
}