Hello everyone,
I am making one current meter project for myself and i am using ARDUINO UNO, ADS1115 for (16-bit resolution for ADC), sensor and 128X64 LCD display.
i have used digital inputs for range selection switch purpose and i have also attached the schematic.
i have also tried to upload the given code but after uploading it is just displaying "Welcome to the Current meter project" and not proceeding further for the measurement purpose.
Can somebody help me where the issue present. please help.
Thank you in advance
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
#include <U8g2lib.h>
// ADS1115 and LCD config
const int ADS1115_ADDR = 0x48;
const int switchPin1 = 2;
const int switchPin2 = 3;
Adafruit_ADS1115 ads;
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, 13, 11, 10, 8); // CLK, DATA, CS, RESET
void setup() {
Wire.begin();
ads.setGain(GAIN_ONE); // ±4.096V, 0.125 mV/bit
ads.begin(ADS1115_ADDR);
u8g2.begin();
u8g2.setFont(u8g2_font_ncenB08_tr);
// Splash screen
u8g2.clearBuffer();
u8g2.drawStr(20, 28, "Welcome to the");
u8g2.drawStr(5, 40, "Current Meter Project");
u8g2.sendBuffer();
delay(2000);
u8g2.clearBuffer();
pinMode(switchPin1, INPUT_PULLUP);
pinMode(switchPin2, INPUT_PULLUP);
}
void loop() {
int switchState1 = digitalRead(switchPin1);
int switchState2 = digitalRead(switchPin2);
int16_t sensorvalue = ads.readADC_SingleEnded(0);
float sensorvalue_1 = sensorvalue * 1.640; // To convert sensor value to desired sensor value; this multiplication factor used.
float voltage = sensorvalue_1 * 5.0 / 65535.0; // Convert to voltage (V)
if (switchState1 == LOW && switchState2 == HIGH) {
// 5A Range
if (voltage < 0.0072) {
u8g2.drawStr(0, 16, "Under Range");
u8g2.drawStr(0, 32, "Current (A): N/A");
} else if (voltage >= 0.0072 && voltage <= 0.72) {
float current_mA = (voltage / 0.72) * 1000.0;
u8g2.drawStr(0, 16, "Current-5A (mA):");
char buffer[20];
sprintf(buffer, "%.2f", current_mA);
u8g2.drawStr(0, 32, buffer);
} else if (voltage > 3.6) {
u8g2.drawStr(0, 16, "Change Range");
u8g2.drawStr(0, 32, "Current (A): N/A");
} else {
float current = voltage / 0.72;
u8g2.drawStr(0, 16, "Unknown State");
char buffer[20];
sprintf(buffer, "%.3f", current);
u8g2.drawStr(0, 32, buffer);
}
} else if (switchState1 == HIGH && switchState2 == LOW) {
// 50A Range
if (voltage < 0.0011) {
u8g2.drawStr(0, 16, "Under Range");
u8g2.drawStr(0, 32, "Current (A): N/A");
} else if (voltage >= 0.0011 && voltage <= 3.6) {
float current = (voltage / 0.72) * 10.0;
u8g2.drawStr(0, 16, "Current-50A (A):");
char buffer[20];
sprintf(buffer, "%.2f", current);
u8g2.drawStr(0, 32, buffer);
} else {
u8g2.drawStr(0, 16, "OVERLOAD");
u8g2.drawStr(0, 32, "Current (A): N/A");
}
} else {
// Both switches HIGH or LOW: invalid or no sensor connected
u8g2.drawStr(0, 16, "Connect & Switch");
u8g2.drawStr(0, 32, "On the Sensor");
}
u8g2.sendBuffer();
delay(1000); // Refresh every second
}



