Sources...
The original code references both LCD and LCD_I2C... so, pick one and change all the references inside the code... it eventually compiles.
/* Control Stepper Motor with I2C 'Bourns EAW' encoder
Created by Yvan / https://Brainy-Bits.com
This code is in the public domain...
You can: copy it, use it, modify it, share it or just plain ignore it!
Thx!
*/
#include <LiquidCrystal_I2C.h> // I2C LCD Library by Francisco Malpartida https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
#include <AccelStepper.h> // AccelStepper Library https://www.arduinolibraries.info/libraries/accel-stepper
#define lcd_addr 0x27 // I2C address of typical I2C LCD Backpack
#define bourns_addr 0x20 // I2C address of I2C Expander module (A0-A1-A2 dip switch to off position)
// LCD Pins to I2C LCD Backpack - These are default for HD44780 LCD's
#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
// Create instance for LCD called: i2c_lcd
LiquidCrystal_I2C i2c_lcd(lcd_addr,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
const int pinSTEP=11; // STEP pin of EasyDriver connected to pin 11 of UNO
const int pinDIR=10; // DIR pin of EasyDriver connected to pin 10 of UNO
AccelStepper stepper(1, pinSTEP, pinDIR); // Stepper setup
// Include the Bourns EAW Encoder library and maps
#include <ACE128.h> // https://github.com/arielnh56/ACE128
#include <ACE128map12345678.h> // mapping for pin order 12345678
ACE128 myACE((uint8_t)bourns_addr, (uint8_t*)encoderMap_12345678); // Using I2C connections
//ACE128 myACE(2,3,4,5,6,7,8,9, (uint8_t*)encoderMap_12345678); // Using direct connections
int16_t multiturn_encoder_value; // Variable to hold multiturn value of encoder (-32768 to 32767)
void setup() {
i2c_lcd.begin (16,2); // our LCD is a 16x2, change for your LCD if needed
// LCD Backlight ON
i2c_lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
i2c_lcd.setBacklight(HIGH);
i2c_lcd.clear(); // Clear the LCD screen
stepper.setCurrentPosition(0); // Set current position of stepper at startup to zero
stepper.setMaxSpeed(1000.0); // Set Max Speed of stepper
stepper.setAcceleration(5000.0); // Acceleration of stepper
stepper.setSpeed(1000.0); // Speed of stepper
myACE.begin(); // initialize the encoder library
}
void loop() {
multiturn_encoder_value = myACE.mpos(); // get multiturn value from encoder
stepper.moveTo(multiturn_encoder_value); // set stepper new position to move to
while (stepper.distanceToGo() != 0) { // if stepper hasn't reached new position
stepper.runSpeedToPosition(); // move the stepper until new position reached
}
// Display the encoder multiturn and stepper position on LCD
i2c_lcd.setCursor(0,0);
i2c_lcd.print("Encoder: ");
i2c_lcd.setCursor(9,0);
i2c_lcd.print(multiturn_encoder_value);
i2c_lcd.print(" ");
i2c_lcd.setCursor(0,1);
i2c_lcd.print("Stepper: ");
i2c_lcd.setCursor(9,1);
i2c_lcd.print(stepper.currentPosition());
i2c_lcd.print(" ");
}