#include <Servo.h>
#include <LiquidCrystal.h>
#include <Adafruit_LiquidCrystal.h>
LiquidCrystal lcd_1(12, 11, 5, 4, 3, 2);
byte bat1[] = {
B00001,
B00001,
B00001,
B00001,
B00001,
B00001,
B11111,
B11111
};
byte bat2[] = {
B11111,
B11111,
B00001,
B00001,
B00001,
B00001,
B00001,
B00001
};
byte batwall1[] = {
B11111,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte batwall2[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11111
};
byte battop1[] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B11111,
B11111
};
byte battop2[] = {
B11111,
B11111,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000
};
byte batdiode1[] = {
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B11111,
B11111
};
byte batdiode2[] = {
B11111,
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B00000
};
byte batch1[] = {
B11111,
B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte batch2[] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000,
B11111
};
byte batch3[] = {
B11111,
B00000,
B01111,
B01111,
B01111,
B01111,
B01111,
B01111
};
byte batch4[] = {
B01111,
B01111,
B01111,
B01111,
B01111,
B01111,
B00000,
B11111
};
byte batch5[] = {
B11111,
B00000,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110
};
byte batch6[] = {
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B00000,
B11111
};
byte lvl[] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000,
B11111
};
byte lvl2[] = {
B11111,
B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
int batt = 3;
int timer = 1;
int state = 0;
int first = 0;
int feet = 0;
void setup()
{
lcd_1.begin(16, 2); // Set up the number of columns and rows on the LCD.
// Print a message to the LCD.
lcd_1.createChar(0, bat1);
lcd_1.createChar(1, bat2);
lcd_1.createChar(2, batwall1);
lcd_1.createChar(3, batwall2);
lcd_1.createChar(4, battop1);
lcd_1.createChar(5, battop2);
lcd_1.createChar(6, lvl);
lcd_1.createChar(7, lvl2);
pinMode(9, INPUT);
}
void loop()
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting
// begins with 0):
digitalWrite(13, LOW);
timer += 1;
if (timer > 100) {
timer = 1;
}
if (state == 1) {
if (batt == 3) {
state = 0;
first = 0;
}
}
if (digitalRead(9) == HIGH) {
if (first == 0){
if (batt == 1) {
feet = 1;
}
}
}
if (digitalRead(9) != HIGH) {
if (state == 0) {
if (batt != 3) {
state = 1;
batt = 3;
first = 0;
}
}
}
if (digitalRead(9) != HIGH) {
if (state == 0) {
if (first == 1) {
if (batt == 3) {
state = 1;
batt = 0;
first = 0;
}
}
}
}
if (digitalRead(9) == HIGH) {
if (state == 0) {
digitalWrite(7, HIGH);
}
} else {
digitalWrite(7, LOW);
}
if (timer == 1) {
{
if (digitalRead(9) == HIGH || feet == 1) {
if (state == 0) {
if (first == 1){
feet = 0;
}
if (first == 0){
batt = 0;
first = 1;
}
if (batt < 3) {
batt += 1;
}
}
}
if (state == 1) {
if (first == 0){
batt = 0;
first = 1;
}
if (batt < 3) {
batt += 1;
}
}
}
lcd_1.clear();
lcd_1.setCursor(15, 1);
lcd_1.write(byte(0));
lcd_1.setCursor(15, 0);
lcd_1.write(byte(1));
lcd_1.setCursor(0, 1);
lcd_1.write(byte(1));
lcd_1.setCursor(0, 0);
lcd_1.write(byte(0));
lcd_1.setCursor(1, 1);
lcd_1.write(byte(4));
lcd_1.setCursor(1, 0);
lcd_1.write(byte(5));
if (batt == 0) {
lcd_1.setCursor(14, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(13, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(12, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(11, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(10, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(9, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(8, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(7, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(6, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(5, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(4, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(3, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(2, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(14, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(13, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(12, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(11, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(10, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(9, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(8, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(7, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(6, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(5, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(4, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(3, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(2, 0);
lcd_1.write(byte(2));
}
if (batt == 1) {
lcd_1.setCursor(14, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(13, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(12, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(11, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(10, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(9, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(8, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(7, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(6, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(5, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(4, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(3, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(2, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(14, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(13, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(12, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(11, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(10, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(9, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(8, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(7, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(6, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(5, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(4, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(3, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(2, 0);
lcd_1.write(byte(2));
}
if (batt == 2) {
lcd_1.setCursor(14, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(13, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(12, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(11, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(10, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(9, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(8, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(7, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(6, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(5, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(4, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(3, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(2, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(14, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(13, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(12, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(11, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(10, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(9, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(8, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(7, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(6, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(5, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(4, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(3, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(2, 0);
lcd_1.write(byte(2));
}
if (batt == 2) {
lcd_1.setCursor(14, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(13, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(12, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(11, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(10, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(9, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(8, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(7, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(6, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(5, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(4, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(3, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(2, 1);
lcd_1.write(byte(3));
lcd_1.setCursor(14, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(13, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(12, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(11, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(10, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(9, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(8, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(7, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(6, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(5, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(4, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(3, 0);
lcd_1.write(byte(2));
lcd_1.setCursor(2, 0);
lcd_1.write(byte(2));
}
if (batt == 3) {
lcd_1.setCursor(14, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(13, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(12, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(11, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(10, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(9, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(8, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(7, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(6, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(5, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(4, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(3, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(2, 1);
lcd_1.write(byte(6));
lcd_1.setCursor(14, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(13, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(12, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(11, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(10, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(9, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(8, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(7, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(6, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(5, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(4, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(3, 0);
lcd_1.write(byte(7));
lcd_1.setCursor(2, 0);
lcd_1.write(byte(7));
if (state == 1) {
if (batt == 3) {
delay(1000);
}
}
}
}
delay(10);
}
The code and image above are both part of my same project. The code and circuit work in the tinkercad simulator but the LCD freaks out when being used with the DC motor. I unplugged the motor and tested it and everything worked. I have heard that motors send out a lot of power when turned on and off, could that be the problem? I have looked through more than a few forums but I haven't found a solution that works for me.



