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.