Using atom-mate with cback-driver.
-
I¡m trying to run a couple of servos with atom lite, using the atom-mate and the cback-driver for m5stick. Using platformio, I've copied CBACK_DRIVER.h and CBACK_DRIVER.cpp to the include dir in the project, modified the obvious #include <M5Atom.h>, and with this code:
#include <M5Atom.h> #include "CBACK_DRIVER.h" bool flag = true; CBACK_DRIVER Driver; int C_BLACK = 0x000000; int C_WHITE = 0xffffff; int C_RED = 0xff0000; int C_GREEN = 0x00ff00; int C_BLUE = 0x0000ff; void setup() { M5.begin(true, false, true); // let's check the atom is ok delay(50); M5.dis.drawpix(0, C_GREEN); // green delay(1000); M5.dis.drawpix(0, C_BLACK); // black Serial.begin(115200); Driver.Init(); delay(1000); Serial.println("C Back Driver Test..."); } void loop() { if(M5.Btn.wasPressed()){ flag = !flag; Serial.println("toggle flag value"); } if(flag){ for(int i=1; i<=4;i++){ Driver.SetServoAngle(i,90); Serial.println("servo 90"); // Driver.ReadServoPulse(i,1500); } Driver.SetOutput(1); }else{ for(int i=1; i<=4;i++){ Driver.SetServoAngle(i,120); Serial.println("servo 120"); // Driver.ReadServoPulse(i,2000); } Driver.SetOutput(0); } Serial.print("PortB ADC: "); Serial.println(Driver.ReadADC()); M5.update(); }
I get this error:
Building in release mode Linking .pio/build/m5stack-atom/firmware.elf .pio/build/m5stack-atom/src/main.cpp.o:(.literal._Z5setupv+0x2c): undefined reference to `CBACK_DRIVER::Init()' .pio/build/m5stack-atom/src/main.cpp.o:(.literal._Z4loopv+0x18): undefined reference to `CBACK_DRIVER::SetServoAngle(unsigned char, unsigned char)' .pio/build/m5stack-atom/src/main.cpp.o:(.literal._Z4loopv+0x1c): undefined reference to `CBACK_DRIVER::SetOutput(unsigned char)' .pio/build/m5stack-atom/src/main.cpp.o:(.literal._Z4loopv+0x20): undefined reference to `CBACK_DRIVER::ReadADC()' .pio/build/m5stack-atom/src/main.cpp.o: In function `setup()': /home/benalb/Projects/m5atom/cback/src/main.cpp:22: undefined reference to `CBACK_DRIVER::Init()' .pio/build/m5stack-atom/src/main.cpp.o: In function `loop()': /home/benalb/Projects/m5atom/cback/src/main.cpp:36: undefined reference to `CBACK_DRIVER::SetServoAngle(unsigned char, unsigned char)' /home/benalb/Projects/m5atom/cback/src/main.cpp:40: undefined reference to `CBACK_DRIVER::SetServoAngle(unsigned char, unsigned char)' /home/benalb/Projects/m5atom/cback/src/main.cpp:44: undefined reference to `CBACK_DRIVER::SetOutput(unsigned char)' /home/benalb/Projects/m5atom/cback/src/main.cpp:47: undefined reference to `CBACK_DRIVER::ReadADC()' collect2: error: ld returned 1 exit status *** [.pio/build/m5stack-atom/firmware.elf] Error 1 ========================================================= [FAILED] Took 13.90 seconds =========================================================
any ideas?
-
Hello @benalb
the
.cpp
file should go into thesrc
instead of theinclude
directory, else it doesn't get compiled nor linked.Thanks
Felix -
@felmue thanks, now it compiles and uploads to the atom. But it does not work. I have also changed the ports in CBACK_DRIVER.cpp to match the ones of the atom-mate, from
Wire.begin(0, 26);
to
Wire.begin(19,22);
but no luck.
-
Hello @benalb
according to the C Back Driver schematic the four channels are powered from the
+BAT
pin the M5StickC provides but is missing when using an M5Atom with the atom-mate.Thanks
Felix