Hello, I have an issue with a sketch made for operating a stepper motor with a Bourns rotary encoder and an LCD to display position and I have received this error:
no matching function for call to 'ACE128::ACE128(int, int, int, int, int, int, int, int, uint8_t*)'
I know this is probably and easy fix but I just can't seem to get my head around it. I've tried to reach the original author but have received no com. Keep in mind that I am a new coder and would like as much info about this that anyone will give. I have spent a few hours reading forums, searching the web and just looking for code that is similar that might help.
Thank you.
Here is the code:
#include <LiquidCrystal_I2C.h> // I2C LCD Library by Francisco Malpartida https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
#include <AccelStepper.h> // AccelStepper Library AccelStepper - Arduino Libraries
#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> // GitHub - arielnh56/ACE128: Arduino library for Bourns 128 position Absolute Contacting Encoder
#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(" ");
}