I’ve been trying to make this project: https://create.arduino.cc/projecthub/chummer1010/electronic-safe-with-arduino-25d039
I’m confident that I’ve assembled everything correctly, but my LCD doesn’t display characters. Other projects seem to have fixed it by changing the potentiometer but I’m not using one.
Arduino code:
/*
Made by Marco Fusco
May 20, 2016
Contact me at: marcofusco111@gmail.com
*/
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Servo.h>
int address = 0;
static unsigned long SaveTimer;
static unsigned long SaveDelay = (30 * 1000);
char CODE[10] = "1234E";
char Str[10];
char CodeLength = 4;
int Pos = 0;
bool Unlocked;
static unsigned long DisplayTimer;
static unsigned long DisplayDelay = 200;
LiquidCrystal lcd(12, 11, 9, 8, 7, 6);
int buttonPin1 = 2;
int buttonPin2 = 3;
int buttonPin3 = 4;
int buttonPin4 = 5;
int enterbutton = 10;
int clearlockbutton = 13;
Servo myServo;
void setup() {
myServo.attach(A1);
int EEPROMCodeOK = true;
for (Pos = 0; Pos <= (CodeLength); Pos++) {
Str[Pos] = EEPROM.read(Pos);
if (!(strrchr("1123456789", Str[Pos]))) {
// not a valid code
EEPROMCodeOK = false;
}
}
Pos++;
Str[Pos] = EEPROM.read(Pos);
if (Str[CodeLength + 1] != 'E') EEPROMCodeOK = false;
if (EEPROMCodeOK) {
Str[CodeLength + 2] = '\0';
strncpy(CODE, Str, CodeLength + 1);
}
ClearCode();
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(enterbutton, INPUT_PULLUP);
pinMode(clearlockbutton, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Hello.");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password:");
DisplayTimer = millis() + 200;
}
void loop() {
Lock();
Pos = constrain(Pos, 0, CodeLength);
int buttonState1 = digitalRead(buttonPin1);
int buttonState2 = digitalRead(buttonPin2);
int buttonState3 = digitalRead(buttonPin3);
int buttonState4 = digitalRead(buttonPin4);
int clButtonState = digitalRead(clearlockbutton);
int enterButtonState = digitalRead(enterbutton);
lcd.setCursor(9, 0);
if (buttonState1 == LOW) {
Str[Pos] = '1';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {
Str[Pos] = '2';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(buttonPin2) == LOW);
}
else if (buttonState3 == LOW) {
Str[Pos] = '3';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(buttonPin3) == LOW);
}
else if (buttonState4 == LOW) {
Str[Pos] = '4';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(buttonPin4) == LOW);
}
else if (enterButtonState == LOW) {
Str[Pos] = 'E';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(buttonPin1) == LOW);
if (strcmp (Str,CODE) == 0) {
Unlocked = true;
lcd.setCursor(0, 0);
lcd.print(" Access Granted");
delay(2000);
lcd.clear();
lcd.print(" Unlocked");
}
else if (SaveTimer > millis() && (Pos + 1) == CodeLength) {
strcpy(CODE, Str);
for (Pos = 0; Pos <= (CodeLength + 1); Pos++) {
EEPROM.write(Pos, Str[Pos]);
}
lcd.setCursor(0, 0);
lcd.print("Saving Code:");
lcd.setCursor(0, 1);
lcd.print(Str);
Unlocked = true;
}
else {
lcd.clear();
lcd.print(" Access Denied.");
delay(2000);
lcd.clear();
lcd.print("Password:");
}
while (Unlocked) {
Unlock();
if (digitalRead(clearlockbutton) == LOW) {
delay(200);
lcd.clear();
lcd.print(" Locked");
delay(2000);
lcd.clear();
Unlocked = false;
SaveTimer = millis() + 30000;
}
}
ClearCode();
}
else if (clButtonState == LOW) {
delay(500);
while (clearlockbutton == LOW);
if ((millis() - SaveTimer) > 4500) {
}
ClearCode();
}
if ( (long)( millis() - DisplayTimer ) >= 0) {
DisplayTimer += DisplayDelay;
lcd.setCursor(9, 0);
lcd.print(Str);
lcd.print(" ");
}
}
void ClearCode() {
Pos = 0;
Str[Pos] = '\0';
lcd.setCursor(0, 0);
lcd.print("Password:");
lcd.setCursor(0, 1);
lcd.print(" ");
}
void Unlock() {
myServo.write(150);
}
void Lock() {
myServo.write(50);
}
but I’m not using one
; why don't your? You can't just leave out parts of a circuit and expect it to still work. If you don't have any potentiometers, you test out combinations of two resistors, till the contrast is good. Lastly the question in the title has nothing to do with the question in the rest of the text. – Gerben Jan 5 '20 at 16:19