Project Code trouble shooting

I’ve been working on this project for quite some time now and error messages keep popping up. I’m new to programming and I’m struggling to learn how to correct my mistakes. Any help would be GREATLY appreciated. Thank you for your time.

#include <HX711_ADC.h>
#include <jm_Wire.h>
#include <jm_LiquidCrystal_I2C.h>
#include <jm_Scheduler.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
HX711 scale(5, 6);
#define clk 2
#define dt 3
#define sw 4
#define in1 7
#define in2 8
#define in3 9
#define in4 10
#define in5 11
#define in6 12
volatile boolean TurnDetected;
volatile boolean up;
bool doonce = 0;
char screen = 0;
boolean changestate = 0;
long weight;
int pump1ml = 20;
int pump2ml = 20;
int pump3ml = 20;

void isr0 () {
TurnDetected = true;
up = (digitalRead(clk) == digitalRead(dt));
}

void setup() {
lcd.begin(16, 2);
pinMode(sw, INPUT_PULLUP);
pinMode(clk, INPUT);
pinMode(dt, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(in5, LOW);
digitalWrite(in6, LOW);
attachInterrupt (0, isr0, RISING);
}

void loop() {
if (TurnDetected) {
delay(200);
doonce = 0;
if (changestate == 0) {
if (up) {
screen++;
if (screen > 3) {
screen = 3;
}
}
else {
screen = screen - 1;
if (screen < 0) {
screen = 0;
}
}
}
else {
if (up) {
switch (screen) {
case 0: pump1ml = pump1ml + 10;
break;
case 1: pump2ml = pump2ml + 10;
break;
case 2: pump3ml = pump3ml + 10;
break;
}
}
else {
switch (screen) {
case 0: pump1ml = pump1ml - 10;
break;
case 1: pump2ml = pump2ml - 10;
break;
case 2: pump3ml = pump3ml - 10;
break;
}
}
}
TurnDetected = false;
}

if (digitalRead(sw) == LOW) {
delay(200);
changestate = !changestate;
doonce = 0;
}

if (screen == 0 && doonce == 0) {
lcd.clear();
lcd.print(“Vodka”);
lcd.setCursor(0, 1);
lcd.print(pump1ml);
lcd.setCursor(3, 1);
lcd.print(“ml”);
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print(“Change?”);
}
doonce = 1;
}

if (screen == 1 && doonce == 0) {
lcd.clear();
lcd.print(“Cranberry”);
lcd.setCursor(0, 1);
lcd.print(pump2ml);
lcd.setCursor(3, 1);
lcd.print(“ml”);
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print(“Change?”);
}
doonce = 1;
}

if (screen == 2 && doonce == 0) {
lcd.clear();
lcd.print(“Grpfruit”);
lcd.setCursor(0, 1);
lcd.print(pump3ml);
lcd.setCursor(3, 1);
lcd.print(“ml”);
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print(“Change?”);
}
doonce = 1;
}

if (screen == 3 && doonce == 0) {
lcd.clear();
if (changestate == 0) {
lcd.print(“Start?”);
doonce = 1;
}
else {
lcd.print(“Wait!”);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print(“Pump 1 ON”);
digitalWrite(in1, HIGH);
while (scale.read() - weight < 3000) {

}
lcd.clear();
lcd.print(pump1ml);
lcd.print(“ml”);
delay((pump1ml/11)*1000);
digitalWrite(in1, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print(“Pump 2 ON”);
digitalWrite(in3, HIGH);
while (scale.read() - weight < 3000) {

}
lcd.clear();
lcd.print(pump2ml);
lcd.print(“ml”);
delay((pump2ml/12)*1000);
digitalWrite(in3, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print(“Pump 3 ON”);
digitalWrite(in5, HIGH);
while (scale.read() - weight < 3000) {

}
lcd.clear();
lcd.print(pump3ml);
lcd.print(“ml”);
delay((pump3ml/12)*1000);
digitalWrite(in5, LOW);
delay(2000);
changestate = 0;
}
}
}

Here are the error messages:

Arduino: 1.8.5 (Windows 10), Board: “Arduino/Genuino Uno”

robotic_arm.ino493286461049170848.tmp:7: error: ‘LiquidCrystal_I2C’ does not name a type

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

^

robotic_arm.ino493286461049170848.tmp:8: error: ‘HX711’ does not name a type

HX711 scale(5, 6);

^

C:\Users\ruth2\Documents\Arduino\robotic_arm\robotic_arm.ino493286461049170848.tmp\robotic_arm.ino493286461049170848.tmp.ino: In function ‘void setup()’:

robotic_arm.ino493286461049170848.tmp:35: error: ‘lcd’ was not declared in this scope

lcd.begin(16, 2);

^

C:\Users\ruth2\Documents\Arduino\robotic_arm\robotic_arm.ino493286461049170848.tmp\robotic_arm.ino493286461049170848.tmp.ino: In function ‘void loop()’:

robotic_arm.ino493286461049170848.tmp:105: error: ‘lcd’ was not declared in this scope

lcd.clear();

^

robotic_arm.ino493286461049170848.tmp:119: error: ‘lcd’ was not declared in this scope

lcd.clear();

^

robotic_arm.ino493286461049170848.tmp:133: error: ‘lcd’ was not declared in this scope

lcd.clear();

^

robotic_arm.ino493286461049170848.tmp:147: error: ‘lcd’ was not declared in this scope

lcd.clear();

^

robotic_arm.ino493286461049170848.tmp:155: error: ‘scale’ was not declared in this scope

weight = scale.read();

^

exit status 1
‘LiquidCrystal_I2C’ does not name a type

This report would have more information with
“Show verbose output during compilation”
option enabled in File → Preferences.

#include <HX711_ADC.h>
#include <jm_Wire.h>
#include <jm_LiquidCrystal_I2C.h>
#include <jm_Scheduler.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
HX711 scale(5, 6);

Typically, the name of a file and the name of the class in the file are the same. Are you POSITIVE that this is not true here? If it is not true, why would you use a library where the programmer can’t follow convention?

What’s with the jm_ in the names?

Spend some time studying the examples that come with the libraries to understand how to use their constructors:

  • File > Examples > jm_LiquidCrystal_I2C > jm_LiquidCrystal_I2C_demo
  • File > Examples > HX711_ADC > Read_1x_load_cell