Start with connecting up power, red goes to +5V and black goes to ground. Perform the tests in the LCD tutorial to verify the contrast pot works.
Connect the remaining wires as such:
- EN → Digital #2
- RS → Digital #3
- D4 → Digital #4
- D5 → Digital #5
- D6 → Digital #6
- D7 → Digital #7
Then try out the LCD by uploading the sketch. You should get the LCD working even if it's not displaying anything.
// SPDX-FileCopyrightText: 2019 Anne Barela for Adafruit Industries
//
// SPDX-License-Identifier: MIT
/*
Portable solar panel efficiency tracker. For testing out solar panels!
See https://learn.adafruit.com/portable-solar-charging-tracker for more information
Code is public domain, MIT License by Limor "Ladyada" Fried
*/
// include the library code:
#include <LiquidCrystal.h>
#include <Wire.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 4, 5, 6, 7 );
#define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
int lipoPin = 3; // the battery
float lipoMult = 1.666; // how much to multiply to get the original voltage
int PVPin = 2; // the cell
float PVMult = 2; // how much to multiply to get the original voltage
int currentPin = 1;
float currentMult = 208; // how much to multiply to get the original current draw
void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
lcd.clear();
// Print a message to the LCD.
lcd.print("Solar logger");
delay(2000);
lcd.clear();
// If you want to set the aref to something other than 5v
analogReference(EXTERNAL);
byte delta[8] = {
B00000,
B00100,
B00100,
B01010,
B01010,
B10001,
B11111,
B00000
};
lcd.createChar(0, delta);
}
void loop(void) {
int adcreading;
adcreading = analogRead(lipoPin);
Serial.println(adcreading);
float lipoV = adcreading;
lipoV *= aref_voltage;
lipoV /= 1024;
lipoV *= lipoMult;
lcd.clear();
Serial.print("LiPo voltage = ");
Serial.println(lipoV); // the raw analog reading
lcd.setCursor(0, 0);
lcd.print("LiPo=");
lcd.print(lipoV);
lcd.print(' ');
lcd.write((uint8_t)0);
adcreading = analogRead(PVPin);
float PVV = adcreading;
PVV *= aref_voltage;
PVV /= 1024;
PVV *= PVMult;
lcd.print((int)((PVV-lipoV) * 1000), DEC); // in mV
lcd.print("mV");
Serial.print("PV voltage = ");
Serial.println(PVV); // the raw analog reading
lcd.setCursor(0, 1);
lcd.print("PV=");
lcd.print(PVV);
adcreading = analogRead(currentPin);
float currentI = adcreading;
currentI *= aref_voltage;
currentI /= 1024;
currentI *= currentMult;
Serial.print("Current (mA) = ");
Serial.println(currentI); // the raw analog reading
lcd.print(" I=");
lcd.print((int)currentI);
lcd.print("mA");
delay(1000);
}
Page last edited January 21, 2025
Text editor powered by tinymce.