I have a similar problem as troylefevre in this thread Simple stepper control using Bourns rotary encoder & LCD - Programming Questions - Arduino Forum
My Code
#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 I2C_ADDR 0x27 // I2C address of typical I2C LCD Backpack
// 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(I2C_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
// Pin x of UNO connected to pin x of Encoder (example: UNO pin 2 connected to pin 1 of encoder, etc...)
ACE128 myACE(2,3,4,5,6,7,8,9, (uint8_t*)encoderMap_12345678);
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(" ");
}
I made the edit suggested by MorganS
After reviewing the library on GitHub and the error message more closely, it seems like you need to edit a line in the library's .h file to enable the "Arduino Pins" option. Find the line below in the .h file and remove the "//" at the beginning of the line...
Code: (Find me) [Select]
// #define ACE128_ARDUINO_PINS
I looked for the library he suggested but could not find it.
My error
Arduino: 1.8.13 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
In file included from C:\Users\MARK\Documents\Arduino\Encoder\Encoder.ino:27:0:
C:\Users\MARK\Documents\Arduino\libraries\ACE128\src/ACE128.h:66:12: fatal error: EEPROM.h: No such file or directory
#include <EEPROM.h>
^~~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board Arduino Nano.
Looking for some guidance.