#include #include #include #include LiquidCrystal_SR lcd(5, 9, 6); dht DHT; #define DHT22_PIN 11 // Pin 5 - Data Enable/ SER, Pin 9 - Clock/SCL, Pin 6 -SCK const int sensor=A7; const int analogInPin1 = A0; // Analog input pin that the potentiometer is attached to static int ctr,flag_tog; static unsigned char adcval; float tempc; float tempf; float vout; float hum; int chk; int a; int b; int s; int c; #define Display_Clock_Every_N_Seconds 10 #define Display_ShortHelp_Every_N_Seconds 60 String tz; int hours = 0; int minutes = 0; int seconds = 0; int dates = 0; int months = 0; int years = 0; int ap = 0; const int pulsePin = 4; int pulseHigh; // Integer variable to capture High time of the incoming pulse int pulseLow; // Integer variable to capture Low time of the incoming pulse float pulseTotal; // Float variable to capture Total time of the incoming pulse float freq; // Calculated Frequency float fre; float fr; int z; const int analog_charge = A1; const int analogPin = A2; float ck=24.42; int voltage; float cu; int charge = 3; int discharge = 2; int analogpin = A3; unsigned long start_timer=0; unsigned long stop_timer=0; unsigned long duration=0; //////////////////////////////// float voltagee=3; float answer=0.0; int measure (void); ///////////////////////////////// void setup() { lcd.begin(20,4); pinMode(12,INPUT); pinMode(sensor,INPUT); pinMode(11,INPUT); pinMode(7,INPUT); pinMode(8,OUTPUT); pinMode(10,OUTPUT); pinMode(pulsePin, INPUT); pinMode(13, OUTPUT); pinMode(analogPin,OUTPUT); pinMode(analog_charge,OUTPUT); pinMode(discharge,INPUT); pinMode(charge,OUTPUT); digitalWrite(charge,HIGH); } void loop() { b=digitalRead(12); if(b==1) { tone(10,2000); delay(1000); noTone(10); delay(1000); c=s++; } switch (c){ case 0: lcd.setCursor(0,1); lcd.print("Press the Function"); lcd.setCursor(0,2); lcd.print("Button to start"); delay(1000); break; case 1: chk = DHT.read22(DHT22_PIN); hum = DHT.humidity; lcd.setCursor(0,0); lcd.print("Humidity: "); lcd.print(hum); delay(1000); lcd.clear(); break; case 2: vout=analogRead(sensor); vout=(vout*500)/1023; tempc=vout; // Storing value in Degree Celsius tempf=(vout*1.8)+32; // Converting to Fahrenheit lcd.setCursor(5,0); lcd.print("Temperature"); lcd.setCursor(0,1); lcd.print("DegreeC="); lcd.print(tempc); lcd.setCursor(0,2); lcd.print("Fahrenheit="); lcd.print(tempf); delay(1000); lcd.clear(); break; case 3: RTC.readClock(); ap = RTC.isPM(); if(ap == 1) { tz = "PM"; } else { tz ="AM"; } lcd.home(); lcd.setCursor(4,0); lcd.print("Digital Clock"); hours = RTC.getHours(); minutes = RTC.getMinutes(); seconds = RTC.getSeconds(); dates = RTC.getDate(); months = RTC.getMonth(); years = RTC.getYear(); lcd.setCursor(0, 1); lcd.print("TIME:"); lcd.print(hours); lcd.print(":"); lcd.print(minutes); lcd.print(":"); lcd.print(seconds); lcd.print(" "); lcd.print(tz); lcd.setCursor(0, 2); lcd.print("DATE:"); lcd.print(dates); lcd.print(":"); lcd.print(months); lcd.print(":"); lcd.print(years); delay(500); lcd.clear(); lcd.home(); lcd.setCursor(0, 1); lcd.print("TIME:"); lcd.print(hours); lcd.print(" "); lcd.print(minutes); lcd.print(" "); lcd.print(seconds); lcd.print(" "); lcd.print(tz); lcd.setCursor(0, 2); lcd.print("DATE:"); lcd.print(dates); lcd.print(" "); lcd.print(months); lcd.print(" "); lcd.print(years); delay(500); lcd.clear(); break; case 4: digitalWrite(8, HIGH); a=digitalRead(7); lcd.clear(); lcd.setCursor(2,0); lcd.print("Continuity Tester"); delay(50); if(a==1) { lcd.setCursor(6,2); lcd.print("Line ok"); delay(100); tone(10,2000); delay(1); noTone(10); tone(10,2000); delay(1); noTone(10); } break; case 5: lcd.setCursor(2,0); lcd.print("Frequency Counter"); pulseHigh = pulseIn(pulsePin, HIGH); pulseLow = pulseIn(pulsePin, LOW); pulseTotal = pulseHigh + pulseLow; // Time period of the pulse in microseconds freq = 1000000/ pulseTotal; // Frequency in Hertz (Hz) if(freq<=999) { lcd.setCursor(0,1); lcd.print("Frequency "); lcd.print(freq); lcd.print(" Hz"); delay(500); } if(freq>=1000) { if(freq<100000) { fre = 1000/ pulseTotal; lcd.setCursor(0,1); lcd.print("Frequency "); lcd.print(fre); lcd.print(" Khz"); delay(500); } } if(freq>100000) { fr = 1/ pulseTotal; lcd.setCursor(0,1); lcd.print("Frequency "); lcd.print(fr); lcd.print(" Mhz"); delay(500); } lcd.clear(); break; case 6: lcd.setCursor(2,0); lcd.print("Capacitance Meter"); lcd.setCursor(0,1); lcd.print("RANGE 20pF1000nF"); pinMode(analogPin,INPUT); digitalWrite(analog_charge,HIGH); voltage=analogRead(analogPin); digitalWrite(analog_charge,LOW); //analog_charge = 998 || 999 || 1000 || 1001 and ! 1024 pinMode(analogPin,OUTPUT); if(voltage<1000) { cu=((ck*voltage)/(1024.0-voltage)); if(cu>20.0) { lcd.setCursor(0,2); lcd.print(" "); lcd.setCursor(0,2); lcd.print(cu,2); lcd.print("pF"); } else { lcd.setCursor(0,2); lcd.print("place capacitor "); delay(200); lcd.setCursor(0,2); lcd.print(" "); delay(200); } } else { voltage=0; pinMode(analogPin,OUTPUT); delay(1); pinMode(analog_charge,INPUT_PULLUP); unsigned long start_time = micros(); unsigned long final_time=0; while((voltage < 1) && (final_time < 400000L)) { voltage = digitalRead(analog_charge); unsigned long stop_time = micros(); final_time = stop_time > start_time ? stop_time - start_time : start_time - stop_time; } pinMode(analog_charge, INPUT); voltage = analogRead(analog_charge); digitalWrite(analogPin, HIGH); int delay_T = (int)(final_time / 1000L) * 5; delay(delay_T); pinMode(analog_charge, OUTPUT); digitalWrite(analog_charge, LOW); digitalWrite(analogPin, LOW); cu = -(float)final_time / 34.8 ; cu /= log(1.0 - (float)voltage / (float)1023); if(cu < 1000.0) { lcd.setCursor(0,2); lcd.print(" "); lcd.setCursor(0,2); lcd.print(cu,2); lcd.print("nF"); } else { lcd.setCursor(0,2); lcd.print(" "); lcd.setCursor(0,2); lcd.print("**Out of Range**"); } } delay(1000); break; case 7: lcd.clear(); lcd.setCursor(2,0); lcd.print("Capacitance Meter"); lcd.setCursor(0,1); lcd.print("RANGE 1uF-4700uF"); while(measure()>=1010 && measure()<=1030) { lcd.setCursor(0,2); lcd.print("place capacitor "); delay(200); lcd.setCursor(0,2); lcd.print(" "); delay(200); } delay(2000); lcd.setCursor(0,2); lcd.print(" "); while(1) { //////////////////////////////////////////////discharging pinMode(charge,INPUT); pinMode(discharge,OUTPUT); digitalWrite(discharge,LOW); lcd.setCursor(0,2); lcd.print("Discharging-");//12 while(voltagee>2.0) { voltagee=measure(); delay(100); lcd.setCursor(12,2); answer=voltagee * (99.0 / 1023.0); lcd.print((99-answer),0); lcd.setCursor(14,2); lcd.print("%"); } lcd.setCursor(0,2); lcd.print(" "); delay(1000); lcd.setCursor(0,2); lcd.print("charging-");//9 lcd.setCursor(13,2); lcd.print("%"); //////////////////////////////////////////////charging pinMode(discharge,INPUT); pinMode(charge,OUTPUT); digitalWrite(charge,HIGH); start_timer=micros(); while(measure()<648) { lcd.setCursor(9,2); lcd.print(measure()*(100.0/1023.0),1); } stop_timer=micros(); duration=stop_timer-start_timer; answer=duration/10000; lcd.clear(); // lcd.setCursor(0,1); // lcd.print(" "); lcd.setCursor(0,0); lcd.print("value = "); lcd.print(answer); lcd.print("uF"); delay(3000); while(1) { lcd.setCursor(0,1); lcd.print("reset to measure"); delay(200); lcd.setCursor(0,2); lcd.print(" "); delay(200); } } break; case 8: c=1; break; } } int measure (void) { int value; value=analogRead(analogpin); return value; }