Help with Scullcom's millivolt Meter - Page 1
Forum section: electronics / projects

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 02:38:14 am
content: Hi All,I have been working on Scullcom's 6.5 digit Millivolt meter. I have almost finished the hardware build, and now am starting on the software.I down loaded his software for the Version mk2. I came to a problem that the INCLUDE file LiquidCrystal_I2c, had been removed from bitbucket.I found a related post on Aduinocc.com that said I could use LiquidCrystal instead, which I did. I replaced all of the LiquidCrystal_I2c referanceswith LiquidCrystal, and that seemed to work until the compiler got down to the last code fragment "read back 4 bytes" an the compiler hung onthe line just prior to the left curly bracket ({).I have done eveything I can think of without luck, I even contacted the Arduino support group, but they couldn't figure out the error.If any of you out there have tried this design, and come away with success, could you please email me (toolnuts@hotmail.com) with somegood code that works, that I could up-load to my Arduino pro mini. I didn't modify any of Scullcom's code.Thank you for any help you can provide,Paul

author: ledtester
author_rank: Super Contributor
timestamp: May 11, 2022, 02:40:14 am
content: Can you post the code or provide a link to it?

author: ledtester
author_rank: Super Contributor
timestamp: May 11, 2022, 03:21:01 am
content: I found some source for the Mk 2 version at:http://www.scullcom.com/Millivolt_Meter_MK2_ver33.inoUsing the latest Arduino IDE (https://www.arduino.cc/en/software) under Windows I was able to compile it if I worked around the lcd constructor.So... if you can get the LCD library figured out I think you can just use the Arduino IDE to get it to work.Otherwise it would be very helpful to know:1. which LCD library you are using2. what are you using to compile the project (Platform IO?)3. what exactly the compiler error message isNote that the code at the above link has a lot of forward references and so it won't compile under Platform IO unless you rearrange the code.

author: ledtester
author_rank: Super Contributor
timestamp: May 11, 2022, 03:41:24 am
content: Ok, I think I've found an alternate solution...There is a another person's implementation of the project here:https://github.com/tardate/LittleArduinoProjects/tree/master/Equipment/MilliVoltmeterDIYUnfortunately, the git repo it is part of comes in at over 2 GB.However, you can use an online page called "DownGit" to download just a subdirectory.So... try the following:1. Navigate to downgit.github.io2. Enter this URL:https://github.com/tardate/LittleArduinoProjects/tree/master/Equipment/MilliVoltmeterDIY3. Unpack the zip file you've just downloaded4. Open MilliVoltMeterDIY.ino in the Arduino IDE and compile(Btw - the repohttps://github.com/tardate/LittleArduinoProjectscontains over 600 "little electronic art projects" - so it might be worth perusing through when you have some time.)

author: IanJ
author_rank: Unknown
timestamp: May 11, 2022, 10:55:38 am
content: Hi,If I read correctly, not sure why you can't just locate another copy of the library that Louis (Scullcom) used in his project, rather than try and change it to something else.Other than that, did Louis export a hex file by any chance?......you could program your device using Avrdudess........provided you dont want to make any mods.Ian.

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 04:53:02 pm
content: // SCULLCOM HOBBY ELECTRONICS// Millivolt Meter MK2// MILLIVOLT METER USING LTC2400 24bit ADC CHIP// Software version 33.00 (uses I2C LCD 16x2 Display)// Uses PCB designed by Greg Christenson  which is available from OSH Park// This PCB is available worldwide (free shipping) from OSH Park for just a few dollars. Check their link below for this project://https://oshpark.com/shared_projects/qgv0fpKN// The PCB design file is also available on this webpage to download.//https://644db4de3505c40a0444-327723bce298e3ff5813fb42baeefbaa.ssl.cf1.rackcdn.com/0fa8729a07e906a84e6cf5762d45a390.brd// 4.096 volt precision reference (ADR4540)//LTC2400 SCK to digital pin 13//LTC2400 SDO to digital pin 12//LTC2400 CS to digital pin 10// --- Library includes -----------------------------------------------------------------------#include <EEPROM.h> // include EEPROM library#include <SPI.h> // Serial Peripheral Interface Library used to communicate with LTC2400 (MISO, MOSI and SCK)#include <Wire.h> // Library allows you to communicate with I2C devices [A4 (SDA), A5 (SCL)]#include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library//https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/NewliquidCrystal_1.3.4.zip// --- PIN assignments ------------------------------------------------------------------------#define LTC2400_CS 10 // chip select pin for ADC#define BUTTON_CLEAR 2 // D2 used for Clear Calibration Memory button#define BUTTON_CAL 3 // D3 used for Calibration button#define BUTTON_DEC 4 // D4 used for Number of Decimal Places button#define BUTTON_HOLD 5 // D5 used for Hold Current Reading on display#define BUTTON_BAR 6 // D6 used to toggle Bar Graph Voltage Display (max 16 volt)// --- Constants ------------------------------------------------------------------------------#define NUMBER_OF_SAMPLES 5 // Number of samples to average (was 5)#define VOLTAGE_REFERENCE 4.096 // voltage reference used for LTC2400#define MAIN_LOOP_DELAY_MS 30 // value determines voltage reading update rate (1000 will give a slow update option)#define DEBOUNCE_DELAY_MS 250 // value determines button debounce delay was 150#define INTRO_DELAY_MS 2000 // intro screen delays#define CALIBRATION_PROMPT_DELAY_MS 2000 // calibration prompt delay time// --- Global variables -----------------------------------------------------------------------//Set the pins on the I2C chip used for LCD connections//ADDRESS,EN,R/W,RS,D4,D5,D6,D7LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address (this could be different for some modules)uint32_t g_samples = {0};uint32_t g_current_sample = 0;uint8_t g_number_of_decimals = 6;int holdButtonState = 0;int eeprom_Address = 0;uint32_t calibration_offset = 0;float barVoltage = 0;int barGraphState = 0;float barVolt2 = 0;int barVolt1 = 0;float barDiffVolts = 0;//--- Battery Status variables -----------------------------------------------------------------------int analogInput = 0; // sets analog input to A0 for battery checkint battery = 0;float vout = 0.0;float batteryVolts = 0.0;float R1 = 1000000.0; // resistance of R1 (1M) // part of resistor divider for battery status checkfloat R2 = 100000.0; // resistance of R2 (100K) // part of resistor divider for battery status check//--- Bar Graph Special Characters Bit Map------------------------------------------------------------byte p20  = {B10000,B10000,B10000,B10000,B10000,B10000,B10000,B10000,};byte p40  = {B11000,B11000,B11000,B11000,B11000,B11000,B11000,B11000,};byte p60  = {B11100,B11100,B11100,B11100,B11100,B11100,B11100,B11100,};byte p80  = {B11110,B11110,B11110,B11110,B11110,B11110,B11110,B11110,};byte p100 = {B11111,B11111,B11111,B11111,B11111,B11111,B11111,B11111,};// --- Setup function (only runs once) --------------------------------------------------------void setup(void) {setupIOPins();setupSPIBus();setupLCD();barGraphCharacter(); //bar graph character bit map setupshowIntro();batteryStatus();calibration_offset = (EEPROMreadlong(eeprom_Address));showCalibrationData();}// --- Main Programme loop ------------------------------------------------------------------------------void loop(void) {if (digitalRead(BUTTON_CLEAR) == LOW) { // Pull-down on board; active HIGHcalibrationClear();} else if (digitalRead(BUTTON_DEC) == LOW) { // Internal pull-up used; active LOWadjustDecimalPlaces();} else if (digitalRead(BUTTON_HOLD) == LOW) { // Internal pull-up used; active LOWholdReading();} else if (digitalRead(BUTTON_BAR) == LOW) { // Internal pull-up used; active LOWbarGraphSetup();} else if (digitalRead(BUTTON_CAL) == LOW) { // Internal pull-up used; active LOWcalibrationTrim();} else {readADC(); // read voltage from ADCshowReading(); // Display voltage on LCD}delay(MAIN_LOOP_DELAY_MS);}// --- Various setup functions -----------------------------------------------------------------------------void setupIOPins(void) {pinMode(BUTTON_CLEAR, INPUT_PULLUP); // set to input with internal pull up resistorpinMode(BUTTON_CAL, INPUT_PULLUP); // set to input with internal pull up resistorpinMode(BUTTON_DEC, INPUT_PULLUP); // set to input with internal pull up resistorpinMode(BUTTON_HOLD,INPUT_PULLUP); // set to input with internal pull up resistorpinMode(BUTTON_BAR, INPUT_PULLUP); // set to input with internal pull up resistorpinMode(analogInput, INPUT); // used for battery status checkpinMode(LTC2400_CS, OUTPUT); // set for outputdigitalWrite(LTC2400_CS, HIGH); // Setting chips select HIGH disables ADC initially}void setupSPIBus(void) {SPI.begin(); //initialise SPI busSPI.setBitOrder(MSBFIRST); //Sets the order of bits shifted out and in to SPI bus, MSBFIRST (most-significant bit first)SPI.setDataMode(SPI_MODE0); // Mode 0 (MOSI read on rising edge (CPLI=0) and SCK idle low (CPOL=0))SPI.setClockDivider(SPI_CLOCK_DIV16); // Divide Arduino clock by 16 to give a 1 MHz SPI clock}void setupLCD(void) {lcd.begin(16, 2); // LCD set for 16 by 2 displaylcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)lcd.setBacklight(HIGH); // LCD backlight turned ON}// --- Convert ADC reading to Decimal Voltage reading -------------------------------------------------------float convertToVoltage(uint32_t reading) {return reading * 10 * VOLTAGE_REFERENCE / 16777216;}//--- Read voltage from LTC2400 ADC --------------------------------------------------------------------------unsigned long readADC(void) {digitalWrite(LTC2400_CS, LOW); //LTC2400 chip select pin taken low to allow data transfer from ADCdelayMicroseconds(10); //timing delay but may not be requiredwhile ((PINB & (1 << 4))) { } //check to see if ADC is ready by testing EOC - wait while conversion completeduint32_t reading = 0;for (int i = 0; i < 4; ++i) { // Ready 4 bytes (32 bits) from the ADCreading <<= 8; // Before each readin shift the existing content over to make roomreading |= SPI.transfer(0xFF); // Read one byteif (i == 0)reading &= 0x0F; // Discard 4 status bits of the first byte}reading >>= 4; // Discard 4 left most sub LSB bitsdigitalWrite(LTC2400_CS, HIGH); //LTC2400 chip select pin taken high disables ADC output.g_samples[g_current_sample++] = reading; // Store value in the bucket used to calculate averagesif (g_current_sample == NUMBER_OF_SAMPLES) // Jump back to the first slot once we go past the last slotg_current_sample = 0;}//--- Calculate Voltage reading running average and add zero Calibration and trim Calibration factors ----uint32_t getADCAverage(void) {uint32_t sum = 0;for (int i = 0; i < NUMBER_OF_SAMPLES; i++)sum += g_samples; // Sum of all stored up samplessum = sum / NUMBER_OF_SAMPLES; // Calculate average by dividing total readings value by number of samples takensum = sum + calibration_offset; // Add Calibration Correction Valuereturn sum;}//--- Print Voltage Reading to Display -----------------------------------------------------------------void showReading(void) {uint32_t reading = getADCAverage();float volt = convertToVoltage(reading);barVoltage = volt; // added for bar graph optionchar prefix = 0;if (volt < 0.001) {volt = volt * 1000000;prefix = 'u';} else if (volt < 1) {volt = volt * 1000;prefix = 'm';}//lcd.setCursor(0, 1); // Jump to second line in the display (bottom)lcd.setCursor(0, 0); //lcd.print(volt, g_number_of_decimals); // Print voltage as floating number with the right number of decimal placeslcd.print(" "); // Add one blank space after voltage readingif (prefix)lcd.print(prefix);lcd.print("V "); // Extra spaces to clean up when voltages go from large to small (8 spaces)if (barGraphState == 1) { //Display voltage bar graph if option selectedbarGraphDisplay();}else{delay(1);}}//--- Number of Decimal Places routine --------------------------------------------------------------------void adjustDecimalPlaces(void) {++g_number_of_decimals;if (g_number_of_decimals > 6)g_number_of_decimals = 0;delay(DEBOUNCE_DELAY_MS); // Very simple de-bounce delay}//---Intro Screen at Switch On -----------------------------------------------------------------void showIntro(void) {lcd.clear();lcd.setCursor(4, 0);lcd.print("SCULLCOM");lcd.setCursor(0, 1);lcd.print("Hobby Electronic");delay(INTRO_DELAY_MS);lcd.clear();lcd.setCursor(0, 0);lcd.print("Millivolt Meter");lcd.setCursor(0, 1);lcd.print("Software Ver. 33");delay(INTRO_DELAY_MS);lcd.clear();}//--- Show Calibration Data -----------------------------------------------------------------void showCalibrationData(void) {lcd.clear();lcd.setCursor(0, 0);lcd.print("Cal. Data = ");lcd.print(calibration_offset);delay(CALIBRATION_PROMPT_DELAY_MS);lcd.clear();}//--- Bar Graph Characters Define ----------------------------------------------------------void barGraphCharacter(void) {lcd.createChar (1,p20);lcd.createChar (2,p40);lcd.createChar (3,p60);lcd.createChar (4,p80);lcd.createChar (5,p100);}//--- Battery Voltage Status Routine --------------------------------------------------------void batteryStatus(void) {battery = analogRead(analogInput); // read the value at analog inputvout = (battery * 5.0) / 1024.0; //batteryVolts = vout / (R2/(R1+R2));lcd.setCursor(1,0);lcd.print("Battery Status");lcd.setCursor(3,1);lcd.print(batteryVolts,2);lcd.print(" Volts");delay(INTRO_DELAY_MS);lcd.clear();}//--- Voltage Bar Graph Routine ---------------------------------------------------------------void barGraphDisplay(void) {barDiffVolts = (barVolt1 + barVolt2) - barVoltage;if (barDiffVolts > 0.1 || barDiffVolts < -0.1) { // only refresh bar graph if voltage changed (stops ficker)barVolt1 = (int) barVoltage; // voltage reading before the decimal pointbarVolt2 = barVoltage - barVolt1; // voltage reading after the decimal pointlcd.setCursor(0,1);lcd.print(" "); // clear second row with 16 spacesfor (int i=0; i <(barVolt1); ++i) { // display full bars showing voltage reading before the decimal pointlcd.setCursor(i,1); // increment display cursor positionlcd.write(5); // full bar segment character}if (barVolt2 > 0.9) { // if decimal value is greater than 0.9vlcd.setCursor(barVolt1,1); // increment display cursor position by onelcd.write(5); // display full 5 line segments of character block} else if (barVolt2 > 0.7) { // if decimal value is greater than 0.7vlcd.setCursor(barVolt1,1); // increment display cursor position by onelcd.write(4); // display 4 line segments of character block} else if (barVolt2 > 0.5) { // if decimal value is greater than 0.5vlcd.setCursor(barVolt1,1); // increment display cursor position by onelcd.write(3); // display 3 line segments of character block} else if (barVolt2 > 0.3) { // if decimal value is greater than 0.3vlcd.setCursor(barVolt1,1); // increment display cursor position by onelcd.write(2); // display 2 line segments of character block} else if (barVolt2 > 0.1){ // if decimal value is greater than 0.1vlcd.setCursor(barVolt1,1); // increment display cursor position by onelcd.write(1); // display 1 line segments of character block}}}//--- Hold Current Voltage Reading and Display ---------------------------------------------------------------void holdReading(void) {if (holdButtonState == 0) {barGraphState= 0; //Clear bar graph if activelcd.setCursor(0, 1);lcd.print(" "); //clear second row with 16 spaceslcd.setCursor(0, 1);uint32_t reading = getADCAverage();float volt = convertToVoltage(reading);char prefix = 0;if (volt < 0.001) {volt = volt * 1000000;prefix = 'u';} else if (volt < 1) {volt = volt * 1000;prefix = 'm';}lcd.setCursor(0, 1); // Jump to second line in the display (bottom)lcd.print(volt, g_number_of_decimals); // Print voltage as floating number w/ the right number of decimal placeslcd.print(" "); // Add one blank space after voltage readingif (prefix)lcd.print(prefix);lcd.print("V "); // Extra spaces to clean up when voltages go from large to smalllcd.setCursor(15,1);lcd.print("H ");holdButtonState = 1; // set hold button state for next pressdelay(DEBOUNCE_DELAY_MS); // Very simple de-bounce delay}else if (holdButtonState == 1) { // Toggle hold button statelcd.setCursor(0, 1);lcd.print(" "); //clear second row with 16 spacesholdButtonState = 0;delay(DEBOUNCE_DELAY_MS); // Very simple de-bounce delay}}//----Calculate Calibration Value and save in eeprom -------------------------------------------------------------------------void calibrationTrim(void) {lcd.clear();lcd.setCursor(0, 0);lcd.print("Apply 5v Ref");delay(1000);calibration_offset = 0; // Reset Trim calibration valuefor (int i = 0; i < NUMBER_OF_SAMPLES; ) // Get multiple measurements{if (readADC()) { // Wait for the ADC measurements to be ready++i;lcd.print('.');}}calibration_offset = getADCAverage(); // Read new average valuecalibration_offset = 2048000 - calibration_offset; // 5 volt reference is equal to and ADC value of 2048000EEPROMwritelong(eeprom_Address,calibration_offset);calibration_offset = (EEPROMreadlong(eeprom_Address));lcd.setCursor(0, 1);lcd.print("Cal. Data = ");lcd.print(calibration_offset);delay(3000);lcd.clear();}//--- Clear Calibration Data -------------------------------------------------------void calibrationClear(void) {uint32_t calibration_offset = 0;EEPROMwritelong(eeprom_Address,calibration_offset);lcd.setCursor(0,1);lcd.print("Cal Data Cleared = ");calibration_offset = (EEPROMreadlong(eeprom_Address));delay(CALIBRATION_PROMPT_DELAY_MS);lcd.setCursor(0,1);lcd.print(" ");}//--- Bar Graph on/off function ----------------------------------------------------------------void barGraphSetup(void) {if (barGraphState == 0) {barGraphState = 1;barVolt1 = 0;barVolt2 = 0;} else {barGraphState= 0;lcd.setCursor(0,1);lcd.print(" ");}delay(DEBOUNCE_DELAY_MS); // Very simple de-bounce delay}//--- EEPROM routine used for saving Calibration Data -------------------------------------// routine to write a 4 byte (32 bit) long to EEPROM at specified addressesvoid EEPROMwritelong(int eeprom_Address, long value){byte four = (value & 0xFF); //four = least significant bytebyte three = ((value>>& 0xFF);byte two = ((value>>16) & 0xFF);byte one = ((value>>24) & 0xFF); //one = most significant byteEEPROM.write(eeprom_Address, four); //write the four bytes into EEPROMEEPROM.write(eeprom_Address +1, three);EEPROM.write(eeprom_Address +2, two);EEPROM.write(eeprom_Address +3, one);}// routine to read back 4 bytes and return with (32 bit) long as valuelong EEPROMreadlong(long eeprom_Address){long four = EEPROM.read(eeprom_Address); //read the 4 bytes from EEPROMlong three = EEPROM.read(eeprom_Address + 1);long two = EEPROM.read(eeprom_Address + 2);long one = EEPROM.read(eeprom_Address + 3);return (four)+(three <<+(two << 16)+(one << 24);}

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 05:01:26 pm
content: I am using Arduino 1.8.19 IDELibrary: LiquidCrystal.herror message: a function definition is not allowed here before "{"note: this error occurs at the very last "{" in the code (at the very end)

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 05:04:48 pm
content: Believed me I have tried to locate a copy of LiquidCrystal_I2c.If anyone has a copy or knows where I can find one send me an email: toolnut@hotmail.com

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 05:18:01 pm
content: The Github version of the Millivolt is a modified version of the Scullcom mk2. It uses the UNO instead of the Pro Mini.It also substitutes LiquidCrystal.h or the original LiquidCrystal_I2c.h, as I have done.

author: ledtester
author_rank: Super Contributor
timestamp: May 11, 2022, 05:29:33 pm
content: (btw - next time just post the code as an attachment)FWIW, the MilliVoltmeterDIY version compiles in the Arduino IDE 1.8.19 with the board set to "Arduino Pro or Pro Mini" as well as "Arduino UNO".

author: pqass
author_rank: Super Contributor
timestamp: May 11, 2022, 06:09:28 pm
content: Quote from: toolnuts on May 11, 2022, 05:04:48 pmIs this what you're looking for?Release 1.1.2 at bottom of page:https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/

author: toolnuts
author_rank: Contributor
timestamp: May 11, 2022, 08:32:04 pm
content: I down loaded the LiquidCrystal_I2c and replaced the references, and tried to compile it,without luck.

author: pqass
author_rank: Super Contributor
timestamp: May 11, 2022, 09:11:37 pm
content: Quote from: toolnuts on May 11, 2022, 08:32:04 pmHmmm...I just downloaded the 1.1.2 zip fromhttps://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/to my /tmp dir.Then in the Arduino IDE underSketch->Include Library->Add Zip Librarypointed to the /tmp/LiquidCrystal_I2C-1.1.2.zip file.This created a subdir under /home/dev/sketchbook/libraries/LiquidCrystal_I2C-1.1.2.Then I copied the contents ofhttp://www.scullcom.com/Millivolt_Meter_MK2_ver33.inointo a blank sketch file and compiled.I didn't get any issues. Although, I do run an old 1.6.8 IDE version (with Show verbose output Preferences enabled). See below.EDIT: Nevermind. I didn't save the sketch. When I did, the compiler reported:Code:no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'EDIT: Okay, I got it now....a. Change the lcd var declaration from/to://LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address (this could be different for some modules)LiquidCrystal_I2C lcd(0x27,16, 2); // address, rows, colsb. Comment-out this line in: setupLCD()// lcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)This assumes that your I2C LCD module maps transmitted bits 0..7 to LCD pins RS, R/W, EN, backlight, D4, D5, D6, D7.If your LCD module has different pin mapping change the following in LiquidCrystal_I2C.hCode:// flags for backlight control#define LCD_BACKLIGHT 0x08#define LCD_NOBACKLIGHT 0x00#define En B00000100 // Enable bit#define Rw B00000010 // Read/Write bit#define Rs B00000001 // Register select bitNow it compiles successfully to:Code:..."/home/dev/arduino-1.6.8/hardware/tools/avr/bin/avr-gcc" -Wall -Wextra -Os -Wl,--gc-sections -mmcu=atmega328p -o "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch_may11a_millivoltmeter.ino.elf" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch/sketch_may11a_millivoltmeter.ino.cpp.o" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/libraries/SPI/SPI.cpp.o" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/libraries/Wire/Wire.cpp.o" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/libraries/Wire/utility/twi.c.o" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/libraries/LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.cpp.o" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/core/core.a" "-L/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp" -lm"/home/dev/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch_may11a_millivoltmeter.ino.elf" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch_may11a_millivoltmeter.ino.eep""/home/dev/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy" -O ihex -R .eeprom "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch_may11a_millivoltmeter.ino.elf" "/tmp/build63615c05f59ea1fa07c0eeee16a88366.tmp/sketch_may11a_millivoltmeter.ino.hex"Using library EEPROM at version 2.0 in folder: /home/dev/arduino-1.6.8/hardware/arduino/avr/libraries/EEPROMUsing library SPI at version 1.0 in folder: /home/dev/arduino-1.6.8/hardware/arduino/avr/libraries/SPIUsing library Wire at version 1.0 in folder: /home/dev/arduino-1.6.8/hardware/arduino/avr/libraries/WireUsing library LiquidCrystal_I2C-1.1.2 at version 1.1.2 in folder: /home/dev/sketchbook/libraries/LiquidCrystal_I2C-1.1.2Sketch uses 8,716 bytes (27%) of program storage space. Maximum is 32,256 bytes.Global variables use 536 bytes (26%) of dynamic memory, leaving 1,512 bytes for local variables. Maximum is 2,048 bytes.

author: toolnuts
author_rank: Contributor
timestamp: May 12, 2022, 05:18:25 pm
content: Hi Pqass,Is there any way, with the Arduino IDE, to load your compiled code onto my IDE,and send it to my Pro Mini.If so could you tell me how to do it, and email me that code.Thanks for all your help Pqass,Paul

author: pqass
author_rank: Super Contributor
timestamp: May 12, 2022, 05:52:27 pm
content: Quote from: toolnuts on May 12, 2022, 05:18:25 pmI think it would be best if you compiled it yourself rather than accept a hex (object file) that you could only upload (not change) to the pro mini.The instructions on how to do that are:1. download release 1.1.2 fromhttps://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/and put it in a temporary location,2. in the Arduino IDE, clickSketch->Include Library->Add Zip Librarypointing to the downloaded LiquidCrystal_I2C-1.1.2.zip file,3. in the Arduino IDE, create a new blank sketch, and download and paste into the blank sketch thishttp://www.scullcom.com/Millivolt_Meter_MK2_ver33.inofile,4. make these changes to the sketch:a. replace/comment-out this line:Code:LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address (this could be different for some modules)with this line:Code:LiquidCrystal_I2C lcd(0x27,16, 2); // address, rows, colsb. remove/comment-out this line:Code:lcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)5. save the sketch,6. clickSketch->Verify/compile(ensure before compiling thatShow verbose output string: compilation and uploadare both checked, in File->Preferences popup)7. if no errors, (looks like the output in my last message), with your pro mini usb attached to your computer, then clickSketch->UploadWe can work through any errors together.

author: toolnuts
author_rank: Contributor
timestamp: May 12, 2022, 05:56:54 pm
content: Hello again Pqass,I copied you previous directions, and it worked great!!!!!!!!!!Thank you so much!!!!!!!!!!!Paul

author: pqass
author_rank: Super Contributor
timestamp: May 12, 2022, 06:03:26 pm
content: Quote from: toolnuts on May 12, 2022, 05:56:54 pmGlad to hear.If you don't see any output on your LCD module, you may need to confirm the correct I2C address and/or the correct pin mapping; ie which bits go to pins RS, R/W, EN, backlight, D4, D5, D6, D7. Then recompile, reupload.

author: toolnuts
author_rank: Contributor
timestamp: May 14, 2022, 11:08:24 pm
content: Hi Pqass,I don't get anything useful on the LCD, so I guess I will proceed as you have suggested.Thanks again, PqassPaul

author: toolnuts
author_rank: Contributor
timestamp: May 14, 2022, 11:35:52 pm
content: Pqass,I misspoke. I do get a back light, and the bottom row of squares are all on, but no alphaneumatric.Paul

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 12:01:39 am
content: Pqass,My Scullcom code has ADDRESS,EN,R/W,RS,D4,D5,D6,D7 for the LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address.Your code has LiquidCrystal_I2C lcd(0x27,16,2)It seems there is a large miss match between the two.Has the LiquidCrystal_I2C library code changed that much over the library code that Scullcom originally used??Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:02:06 am
content: Quote from: toolnuts on May 14, 2022, 11:35:52 pmIt would seem that the LCD controller isn't getting initialized.Check the traces going from I2C chip to LCD pins RS(4), R/W(5), EN(6), backlight, D4(11), D5(12), D6(13), D7(14).Do you have a make/model number/link to your version of a I2C-LCD module?

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 12:08:04 am
content: Pqass,By checking the traces you mean the continuity between labeled signals and their respective pins?I saw on an Arduino forum they fixed a similar problem be re-soldering.There is no name on the I2C module.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:09:01 am
content: Quote from: toolnuts on May 15, 2022, 12:01:39 amScullcom's code seems to be to a version that the user can specify the serial bit stream to LCD pin mapping.Whereas the the I2C LCD library you have assumes a hard-coded mapping.If you first figure-out what your LCD mapping is, we can change it in the .h file.I think maybe too much configur-ability confuses beginners so the library probably simplified and defaults to what 99% of the I2C-LCD use. Or Scullcom probably made his own custom constructor. I dunno.

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:11:21 am
content: Quote from: toolnuts on May 15, 2022, 12:08:04 amThe traces between the I2C chip pins and the LCD pins.Why change hardware when we can very easily remap in software.Can you read the I2C chip label?

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 12:23:40 am
content: Pqass,I checked the continuity, and all is well.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:25:01 am
content: Quote from: toolnuts on May 15, 2022, 12:23:40 amFrom where to where?

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 12:29:40 am
content: Pqass,I don't know what you mean by the LCD mapping? This is my first Arduino project.How would I find out what the mapping is?Scullcom used library:F. Malpartida's NewLiquidCrystal libraryPaul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:36:07 am
content: Quote from: toolnuts on May 15, 2022, 12:29:40 amMost 16x2 LCDs use an ancient parallel interface like this:I2C capability adds a piggy back board with an I2C chip on it like this:The mapping I speak of is between the parallel output of the I2C shift register to the LCD pins.Usually your I2C piggy back board has documentation/link where we can determine the correct pin mapping.Or, it may come with a library where we can dig it out of.

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 12:45:40 am
content: Okay, I just found Malpartida's github here:https://github.com/fmalpartida/New-LiquidCrystalAnd I see he has a constructor where you can specify a custom pin mapping just like Scullcom's original line.Regardless, if you were to use Malpartida's library instead, you'd still need confirm that Scullcom's original line is the same mapping for your particular I2C piggy-back board or change it appropriately. And also confirm the correct I2C address for your board too.

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 01:09:24 am
content: It might be worthwhile for you to get to know your I2C-LCD module first.Have a look at thishttps://www.make-it.ca/i2c-lcd-display-on-arduino/.Particularly the "Determining the I2C Address of the LCD Module" section.And the "Hello World! – First Simple Sketch" section too.

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 01:54:18 am
content: Continuity from the I2c pin to the LCD matching pin.Looking for a bad solder joint?Would anyone have a copy of the library: F. Malpartida's NewLiquidCrystal library (from about 5 or more years ago), and if sowould you send me a copy please. It's the library that Scullcom used in his Millivolt multimeter MK2 design, and it was hosted on bitbucket.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 02:03:02 am
content: Quote from: toolnuts on May 15, 2022, 01:54:18 amNot likely.Humor me and run the the "Determining the I2C Address of the LCD Module" program here:https://www.make-it.ca/i2c-lcd-display-on-arduino/EDIT:Download it here:https://github.com/fmalpartida/New-LiquidCrystal/archive/refs/heads/master.zipFirst remove the other library from <homedir>/sketchbook/libraries/LiquidCrystal_I2C-1.1.2Then after downloading, clickSketch->Include Library->Add Zip Librarypointing to the downloaded zip file.Use the original Scullcom ino file; ie. revert the two line changes we made earlier.Save, recompile, reupload.But you really should confirm the correct I2C address first otherwise Scullcom's original line won't work either.

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 07:07:35 pm
content: Pqass,Humored you.I went to the site and down loaded the LiquidCrystal_I2c_master.zip file and installed it.I got rid of all the other LiquidCrystal_I2c.zip files.I copied the I2c scanner program and ran it, and I error out for no 'wire' library, so, I lookedin the library, and could find no just 'wire' library. where do I find the 'wire' library?I ran the original Scullcom file with the downloaded and installed LiquiCrystal_I2c-master andit came to the first instance of Liquidcrystal and gave me an error.By the way, my I2c has A0, A1, and A2 have no solder so they are A1=0, A2=0, and A0=0 so I2c=0x27Just to add, I am using an Arduino Pro Mini (not on the list)Thanks for all of your help,Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 07:56:16 pm
content: Quote from: toolnuts on May 15, 2022, 07:07:35 pmWire is part of the base Arduino installation. I don't know why it gave you a library not found error; was it the ampersand lt/gt escapes?I just downloaded the latest 1.8.19 and see there is now a I2C scanner example.Try this one instead:File->Examples->Wire->i2c_scanner(it's at the bottom of the menu) I was able to compile it without issue.Code:Sketch uses 4032 bytes (12%) of program storage space. Maximum is 32256 bytes.Global variables use 522 bytes (25%) of dynamic memory, leaving 1526 bytes for local variables. Maximum is 2048 bytes.As for the likely i2c address... yes it's probably 0x27 as per the state of the address pads.However, running the scanner should at least tell you that communications between microcontroller and i2c chip are working.Then it would be a matter of which order of the i2c chip pins are connected to the LCD parallel interface. Let's eliminate the former.In future, it would helpful if you copy/paste any errors.There is a "Tools->Board: Arduino Pro or Pro Mini".Then pick which "Processor: ATmega328P ..." 5V/16Mhz, 5V/8Mhz, 3.3V/16Mhz, 3.3V/8Mhz

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 09:04:14 pm
content: Pqass,I loaded and ran i2c_scanner. It ran just fine, but I don't see any address anywhere.My LCD has the background on and one row squares are lit up.Where am I suppose to see the correct address displayed?I waited for awhile, then hit reset, but nothing.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 15, 2022, 09:33:18 pm
content: Quote from: toolnuts on May 15, 2022, 09:04:14 pmOpen upTools->Serial Monitorat 9600 baud, clickClear outputbutton and wait for messages.I don't have anything connected and I see this:Code:Scanning...No I2C devices foundScanning...No I2C devices foundScanning...No I2C devices foundScanning...No I2C devices foundIf you see the same, you'll have to fix why the Pro Mini to i2c chip aren't communicating first.Correct SCL,SCA, power, pinout? Are both the Pro Mini and I2C-LCD using same voltage (5V, 3.3V)? Did you kill it?If you see a "I2C device found at address 0x..." then that confirms it.Use that address in the first parameter of the "LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); " line.

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 11:48:39 pm
content: Pqass,The serial monitor say they saw the device at 0x27.So, I guess I got that one right.Now I'll move on to your other directions.Thanks again,Paul

author: toolnuts
author_rank: Contributor
timestamp: May 15, 2022, 11:55:57 pm
content: Pqass,I don't know what the voltage of my i2c or LCD are, my pro mini is a 5v 16 mhtz.I see no markings to indicate either the voltage or the manufacturer, on either the i2c or the LCD.If I killed one, which would it be or both?The LCD is on, background and one row of squares.Pins 15 and 16 are labeled A and K, and not LCD plus or LCD minus, otherwisethey are the same as in your photo.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 12:12:12 am
content: Quote from: toolnuts on May 15, 2022, 11:48:39 pmBaby steps....You can also try this sketch to see if you can successfully communicate with your I2C-LCD:FYI: I can't try this because I don't have an I2C-LCD but it should work.It will confirm the correct I2C to parallel LCD pin mapping.It this works, you're back on-track with Scullcom's code.Code:#include <Wire.h>#include <LiquidCrystal_I2C.h>// Set the LCD address to 0x27 for a 16 chars and 2 line displayLiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);void setup() {lcd.begin(16, 2); // initialize LCD and set for 16 by 2 displaylcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)lcd.setBacklight(HIGH); // LCD backlight turned ONlcd.print("Hello, world!"); // print test message}void loop() {// Do nothing here...}

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 12:32:29 am
content: Quote from: toolnuts on May 15, 2022, 11:55:57 pmLCDs usually are 5V. If you did kill it, you wouldn't get a "I2C device found at address 0x27" response.For future reference, if you connect a 5V device to a 3.3V device, it's the 3.3V device that'll suffer.I wish manufacturers would make it more obvious on the device itself but that's why you always need to read the documentation first.The squares can be random, shows that the onboard LCD controller wasn't initialized.The A/K mean anode/cathode. It means the same as plus/minus; depends on the manufacturer labeling preference.FYI: This is the schematic of one such I2C-LCD piggy-back board. Yours may be similar (may not use the same chip). Note how the pins go from the I2C chip to the LCD parallel interface. That's the pin mapping expressed in the "LiquidCrystal_I2C lcd(0x27, ...);" declaration. We may need to change that if the test program in my previous message doesn't work.From here:https://alselectro.wordpress.com/2016/05/12/serial-lcd-i2c-module-pcf8574/

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 12:41:10 am
content: Pqass,It died where all the Scullcom's died with a call to LiquidCristal trying to assign 0x27,......,D7.Arduino: 1.8.19 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Paul\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Paul\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Users\Paul\Documents\Arduino\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -vid-pid=10C4_EA60 -ide-version=10819 -build-path C:\Users\Paul\AppData\Local\Temp\arduino_build_726067 -warnings=none -build-cache C:\Users\Paul\AppData\Local\Temp\arduino_cache_715117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avr-gcc.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -verbose C:\Users\Paul\AppData\Local\Temp\untitled639191399.tmp\sketch_may15a\sketch_may15a.inoC:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Paul\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Paul\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Users\Paul\Documents\Arduino\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -vid-pid=10C4_EA60 -ide-version=10819 -build-path C:\Users\Paul\AppData\Local\Temp\arduino_build_726067 -warnings=none -build-cache C:\Users\Paul\AppData\Local\Temp\arduino_cache_715117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avr-gcc.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -verbose C:\Users\Paul\AppData\Local\Temp\untitled639191399.tmp\sketch_may15a\sketch_may15a.inoUsing board 'pro' from platform in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5Using core 'arduino' from platform in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5Detecting libraries used..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp" -o nulAlternatives for LiquidCrystal_I2C.h: [LiquidCrystal_I2C-master@1.1.4]ResolveLibrary(LiquidCrystal_I2C.h)-> candidates: [LiquidCrystal_I2C-master@1.1.4]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp" -o nulAlternatives for Wire.h: [Wire@1.0]ResolveLibrary(Wire.h)-> candidates: [Wire@1.0]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "D:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master\\LiquidCrystal_I2C.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src\\Wire.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src\\utility\\twi.c" -o nulGenerating function prototypes..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp" -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\preproc\\ctags_target_for_gcc_minus_e.cpp""C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\preproc\\ctags_target_for_gcc_minus_e.cpp"Compiling sketch..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-ID:\\Users\\Paul\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C-master" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp" -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_726067\\sketch\\sketch_may15a.ino.cpp.o"sketch_may15a:7:41: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);^In file included from C:\Users\Paul\AppData\Local\Temp\untitled639191399.tmp\sketch_may15a\sketch_may15a.ino:1:0:D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:57:3: note: candidate: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);^~~~~~~~~~~~~~~~~D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:57:3: note: candidate expects 3 arguments, 8 providedD:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)class LiquidCrystal_I2C : public Print {^~~~~~~~~~~~~~~~~D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 providedD:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(LiquidCrystal_I2C&&)D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 providedC:\Users\Paul\AppData\Local\Temp\untitled639191399.tmp\sketch_may15a\sketch_may15a.ino: In function 'void setup()':sketch_may15a:11:7: error: 'class LiquidCrystal_I2C' has no member named 'setBacklightPin'; did you mean 'setBacklight'?lcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)^~~~~~~~~~~~~~~setBacklightsketch_may15a:11:25: error: 'POSITIVE' was not declared in this scopelcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)^~~~~~~~Using library LiquidCrystal_I2C-master at version 1.1.4 in folder: D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-masterUsing library Wire at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\libraries\Wireexit status 1no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 12:57:02 am
content: I think you have a remnant of an old library still.Notice the errors are prefixed with:D:\Users\Paul\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 providedList the contents of directory: D:\Users\Paul\Documents\Arduino\librariesYou may see another one called:New-LiquidCrystal-masterThat's the one you want.If you see both:LiquidCrystal-masterandNew-LiquidCrystal-master, remove the first;LiquidCrystal-masterEDIT:Q: Why is there two I2C-LCD libraries?A: Because the standard I2C-LCD library (as defined herehttps://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/) and fmalpartida's New-LiquidCrystal library BOTH share the same name for the LiquidCrystal_I2C.h file! And the latter's API IS NOT a superset of the former. I'm not sure how to make them co-exist when some sketches need one vs. the other. That's why I asked you to remove the standard one; for expediency.

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 01:13:55 am
content: Pqass,I see 3 files; liquidCrytal_I2C.cpp, liquidCrytal_I2C.h, and liquidCrytal_I2C-master.Do I delete cpp and .h , and keep -master?Then what do I do?I think when I installed LCD...., I installed LiquidCrystal_I2c-master.zipPaul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 01:27:35 am
content: Quote from: toolnuts on May 16, 2022, 01:13:55 amI think you should remove all three (last one I expect it being a directory):D:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.cppD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.hD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C-masterIf you didn't see another directory in D:\Users\Paul\Documents\Arduino\libraries\ called New-LiquidCrystal-master,then reload the NewLiquidCrystal-master.zip library viaSketch->Include Library->Add Zip Librarypointing to the downloaded zip file.If you didn't save it earlier, this is the link again:https://github.com/fmalpartida/New-LiquidCrystal/archive/refs/heads/master.zipThen recompile the Skullcom ino.

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 02:35:40 am
content: Pqass,Your link:https://github.com/fmalpartida/New-LiquidCrystal/archive/refs/heads/master.ziptakes me to a blank page.Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 02:53:55 am
content: Quote from: toolnuts on May 16, 2022, 02:35:40 amThat's strange, the link in your message works for me.Anyway, just go to the New-LiquidCrystal github pagehttps://github.com/fmalpartida/New-LiquidCrystalThen click the green "Code" button, and then click the Download ZIP.

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 03:16:56 am
content: Pqass,I use Firefox.I found New-LiquidCrystal-master.zip, in my downloads.I re-installed using the zip install, and I got an error 'all ready installed'So I went into the library manager to see, and I can't find it. I searched and nothing???ERROR:Arduino: 1.8.19 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"A library named NewliquidCrystal already existsSo what do I do now?What do I call the new installed library call #include <LiquidCrystal_I2C.h, #include <newLiquidCrystal_I2C.h, /#include <newLiquidCrystal_I2C-master.h??Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 03:28:09 am
content: Quote from: toolnuts on May 16, 2022, 03:16:56 amOkay, the Arduino IDE recognized that the New-LiquidCrystal library is already installed (you didn't say whether the New-LiquidCrystal-master directory was present in D:\Users\Paul\Documents\Arduino\libraries\). This is good news. You should just recompile the Scullcom script as is; no changes.The header file remains: #include <LiquidCrystal_I2C.h>BUT you MUST remove those 3 old library files/directory (below) because they're confusing the compiler.D:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.cppD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.hD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C-master

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 03:35:42 am
content: Pqass,I found the LiquidCrystal with the library manager set to installed. The name was just 'LiquidCrystal' (no .h)I got rid of the I2c, and put .h, and the compiler went past it to the reference an then errored out:Arduino: 1.8.19 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Paul\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Paul\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Users\Paul\Documents\Arduino\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -vid-pid=10C4_EA60 -ide-version=10819 -build-path C:\Users\Paul\AppData\Local\Temp\arduino_build_342850 -warnings=none -build-cache C:\Users\Paul\AppData\Local\Temp\arduino_cache_749214 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avrdude.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -verbose D:\Users\Paul\Documents\Arduino\sketch_millivolt_1\sketch_millivolt_1.inoC:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Paul\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Paul\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Users\Paul\Documents\Arduino\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -vid-pid=10C4_EA60 -ide-version=10819 -build-path C:\Users\Paul\AppData\Local\Temp\arduino_build_342850 -warnings=none -build-cache C:\Users\Paul\AppData\Local\Temp\arduino_cache_749214 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avrdude.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -verbose D:\Users\Paul\Documents\Arduino\sketch_millivolt_1\sketch_millivolt_1.inoUsing board 'pro' from platform in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5Using core 'arduino' from platform in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5Detecting libraries used..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o nulAlternatives for EEPROM.h: [EEPROM@2.0]ResolveLibrary(EEPROM.h)-> candidates: [EEPROM@2.0]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o nulAlternatives for SPI.h: [SPI@1.0]ResolveLibrary(SPI.h)-> candidates: [SPI@1.0]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o nulAlternatives for Wire.h: [Wire@1.0]ResolveLibrary(Wire.h)-> candidates: [Wire@1.0]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o nulAlternatives for LiquidCrystal.h: [NewliquidCrystal LiquidCrystal@1.0.7]ResolveLibrary(LiquidCrystal.h)-> candidates: [NewliquidCrystal LiquidCrystal@1.0.7]"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src\\SPI.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src\\Wire.cpp" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src\\utility\\twi.c" -o nul"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src\\LiquidCrystal.cpp" -o nulGenerating function prototypes..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\preproc\\ctags_target_for_gcc_minus_e.cpp""C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\preproc\\ctags_target_for_gcc_minus_e.cpp"Compiling sketch..."C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\eightanaloginputs" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\EEPROM\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\SPI\\src" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\LiquidCrystal\\src" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp" -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_342850\\sketch\\sketch_millivolt_1.ino.cpp.o"sketch_millivolt_1:50:37: error: no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int, int, int, int, int, int)'LiquidCrystal lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address (this could be different for some modules)^In file included from D:\Users\Paul\Documents\Arduino\sketch_millivolt_1\sketch_millivolt_1.ino:21:0:C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:55:3: note: candidate: LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)LiquidCrystal(uint8_t rs, uint8_t enable,^~~~~~~~~~~~~C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:55:3: note: candidate expects 6 arguments, 8 providedC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:53:3: note: candidate: LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,^~~~~~~~~~~~~C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:53:3: note: candidate expects 7 arguments, 8 providedC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:50:3: note: candidate: LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,^~~~~~~~~~~~~C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:50:3: note: candidate expects 11 arguments, 8 providedC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:47:3: note: candidate: LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)LiquidCrystal(uint8_t rs, uint8_t enable,^~~~~~~~~~~~~C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:47:3: note: candidate expects 10 arguments, 8 providedC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:45:7: note: candidate: constexpr LiquidCrystal::LiquidCrystal(const LiquidCrystal&)class LiquidCrystal : public Print {^~~~~~~~~~~~~C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:45:7: note: candidate expects 1 argument, 8 providedC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:45:7: note: candidate: constexpr LiquidCrystal::LiquidCrystal(LiquidCrystal&&)C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:45:7: note: candidate expects 1 argument, 8 providedD:\Users\Paul\Documents\Arduino\sketch_millivolt_1\sketch_millivolt_1.ino: In function 'void setupLCD()':sketch_millivolt_1:150:7: error: 'class LiquidCrystal' has no member named 'setBacklightPin'lcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)^~~~~~~~~~~~~~~sketch_millivolt_1:150:25: error: 'POSITIVE' was not declared in this scopelcd.setBacklightPin(3,POSITIVE); // (BL, BL_POL)^~~~~~~~sketch_millivolt_1:151:7: error: 'class LiquidCrystal' has no member named 'setBacklight'lcd.setBacklight(HIGH); // LCD backlight turned ON^~~~~~~~~~~~Multiple libraries were found for "LiquidCrystal.h"Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystalNot used: D:\Users\Paul\Documents\Arduino\libraries\NewliquidCrystalUsing library EEPROM at version 2.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\libraries\EEPROMUsing library SPI at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\libraries\SPIUsing library Wire at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\libraries\WireUsing library LiquidCrystal at version 1.0.7 in folder: C:\Program Files (x86)\Arduino\libraries\LiquidCrystalexit status 1no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int, int, int, int, int, int)'Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 03:44:02 am
content: QuoteNo, don't do that. It has to be: #include <LiquidCrystal_I2C.h>Otherwise, it's going to assume a directly attached LCD; no I2C chip in between. That's not what you have.It even says so:Code:Multiple libraries were found for "LiquidCrystal.h"Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystalNot used: D:\Users\Paul\Documents\Arduino\libraries\NewliquidCrystalUse Windows file explorer and go to D:\Users\Paul\Documents\Arduino\libraries\ and delete the files/directory:D:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.cppD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C.hD:\Users\Paul\Documents\Arduino\libraries\liquidCrytal_I2C-master

author: toolnuts
author_rank: Contributor
timestamp: May 16, 2022, 03:56:59 am
content: Pqass,Why was the library entry call LiquidCrystal and not Liquidcrystal_I2C?Very confusing.I am happy to announce that my millivolt meter is working as it should be at first glance, andI owe it all to you.I thank you very very much, I doubt that I would have figured it out on my own.Thanks again for all of your help in getting an old (78) Newby through it,Best Regards,Paul

author: pqass
author_rank: Super Contributor
timestamp: May 16, 2022, 05:02:57 am
content: Quote from: toolnuts on May 16, 2022, 03:56:59 amThat is the world of Arduino. Everybody's got a pet library and it's becoming a naming minefield.Glad to help. Keep learning to stay sharp.Good night.