Eggduino Eggbot undefined reference error Old Man New technologies..

Hello everyone...

So I am new to this long story short I want to make the eggbot, or in this case the sphere-bot so my daughter and I can make some cool eggs for easter.

So I have purchased the arduino uno because that was the one in the project, I am a simple guy and like things simple..

I downloaded the entire project from this website: https://github.com/papabricole/EggDuino

and when I try to compile it I get several errors at the end. errors lower down.. I did not write this software and have no idea about what the errors are. I have tried several things, like installing the .h files in manually as well as the .cpp files I did install the blink program to the uno after changing the blink times and it worked fine.. I Chose to use this one because of the integration with inkscape and because it was easier and less expensive to build..

Thank you for reading. and I apologize in advance if this is a dumb question, I did try a google search but not knowing what they are talking about it did not help..

So this is the code as it is when I try to compile it

include "config.h"

include "EBBHardware.h"

EBBHardware ebb(Serial);

void setup() { Serial.begin(9600); ebb.init(); }

void loop() { ebb.processEvents(); }

These are the errors I am getting.

Archiving built core (caching) in: C:\Users\Lokinb\AppData\Local\Temp\arduino_cache_238213\core\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a Linking everything together... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\Lokinb\AppData\Local\Temp\arduino_build_742042/EggDuino.ino.elf" "C:\Users\Lokinb\AppData\Local\Temp\arduino_build_742042\sketch\EggDuino.ino.cpp.o" "C:\Users\Lokinb\AppData\Local\Temp\arduino_build_742042\libraries\Stepper\Stepper.cpp.o" "C:\Users\Lokinb\AppData\Local\Temp\arduino_build_742042/core\core.a" "-LC:\Users\Lokinb\AppData\Local\Temp\arduino_build_742042" -lm C:\Users\Lokinb\AppData\Local\Temp\ccTNA8aL.ltrans0.ltrans.o: In function `__static_initialization_and_destruction_0':

C:\Users\Lokinb\Downloads\EggDuino-master(1)\EggDuino-master\EggDuino/EggDuino.ino:4: undefined reference to `EBBHardware::EBBHardware(Stream&)'

C:\Users\Lokinb\AppData\Local\Temp\ccTNA8aL.ltrans0.ltrans.o: In function `setup':

C:\Users\Lokinb\Downloads\EggDuino-master(1)\EggDuino-master\EggDuino/EggDuino.ino:9: undefined reference to `EBBHardware::init()'

C:\Users\Lokinb\AppData\Local\Temp\ccTNA8aL.ltrans0.ltrans.o: In function `loop':

C:\Users\Lokinb\Downloads\EggDuino-master(1)\EggDuino-master\EggDuino/EggDuino.ino:14: undefined reference to `EBBHardware::processEvents()'

collect2.exe: error: ld returned 1 exit status

Using library config in folder: C:\Program Files (x86)\Arduino\libraries\config (legacy) Using library EBBHardware.bak in folder: C:\Program Files (x86)\Arduino\libraries\EBBHardware.bak (legacy) Using library EBBParser in folder: C:\Program Files (x86)\Arduino\libraries\EBBParser (legacy) Using library Button in folder: C:\Program Files (x86)\Arduino\libraries\Button (legacy) Using library Stepper at version 1.1.3 in folder: C:\Program Files (x86)\Arduino\libraries\Stepper Using library VarSpeedServo in folder: C:\Program Files (x86)\Arduino\libraries\VarSpeedServo (legacy) exit status 1 Error compiling for board Arduino/Genuino Uno.

Thanks again

From that output, it looks like you did a lot of really weird and unnecessary stuff when trying to get this installed, which I believe to be the cause of your problem. Let’s start fresh:

  • Download https://github.com/papabricole/EggDuino/archive/v1.0.zip
  • Unzip the downloaded file. You can move it to any convenient location on your computer if you like.
  • VERY IMPORTANT Rename the unzipped folder to EggDuino. Not doing this was the root cause of all your later difficulties.
  • In the Arduino IDE: File > Open > select the file EggBot\EggBot.ino (the new copy you just downloaded/unzipped/renamed, not the old one).

You should now be able to compile/upload that sketch without any troubles. If there are problems please let me know and I’ll see what I can do.

#include "EBBHardware.h"

This form of #include implies that the EBBHardware.h file (and the corresponding .cpp file) is in the same folder as the sketch. Is that where it is located on your PC ?

When you download the .zip file of a repository from GitHub it adds the branch/release/commit name to the folder name. This is problematic for multi-file sketches which are in the root of the repository because the Arduino IDE requires that a sketch be in a folder that has the same name as one of the .ino files. So if you open the file EggDuino-master/EggDuino.ino the Arduino IDE shows a dialog:

The file "EggDuino.ino" needs to be inside a sketch folder named "EggDuino. Create this folder, move the file, and continue?

If you're a beginner you're likely to just click "OK" and hope for the best. Unfortunately the current behavior of the Arduino IDE is to only move the file EggDuino.ino to the newly created EggDuino-master/EggDuino folder, leaving all those other important files for the sketch back in the EggDuino-master folder.

So then when you compile you get the dreaded "fatal error: config.h: No such file or directory" error. A conscientious person will do a search for that sort of error and see that the answer over and over again is "Install the library". So it looks like at this point lokinb took those sketch files from the EggDuino-master folder and installed them as libraries, which is not necessarily the wrong thing to do but is certainly not the ideal user experience and does increases the chance of some problem being introduced along the way, which it looks like it did.

There is currently a proposal that would solve this issue of only the one .ino file being moved: https://github.com/arduino/Arduino/pull/6404 but, despite having been written by one of the lead Arduino developers, it has not been merged for some reason. So for now it's better for anyone publishing a sketch to make sure that the folder name of the downloaded files will match the sketch name. On GitHub, and likely other hosting services, this is accomplished by putting the sketch in an appropriately named subfolder of the repository. I'm preparing a pull request to make this change to the EggDuino repository right now.

Thank you all, after some re-installs and deleting of libraries I did get it to work. Part of the problem was that my extractor program creates a folder of the file name and puts the extracted files in there so I was getting eggduino folder then another eggduino folder inside of that with the files in it, and then i would try and compile and it would give me the box I would click ok and then all hell broke loose....

Thank you.

I have a follow up question now, I know you were expecting this.

SO the board is seen by the arduino IDE and I can compile and install the sketch onto the arduino but then there is no communication over the serial usb. I have tried to use the serial monitor with both NL&CR set and a baud rate of 115200 I send commands and nothing happens...

I was trying to get it to work with inkscape but was always getting the same error so I tried the serial monitor and I can not even get the servo to move...

The IDE claims my uno is on com6 and as I said it does transfer the sketch and work for that but not for sending serial communication...

Any Ideas as to what is happening? Should I start a new thread instead of doing this here???

Break the problem down into parts.

Write a simple sketch that tests whether Serial communication works. (Hint: if you don't want to write one then you will find pre-written sketches for this under File > Examples > 04.Communication).

Write a simple sketch that tests whether the servo works. (Hint: if you don't want to write one then you will find pre-written sketches for this under File > Examples > Servo).

You can find tutorials for the examples here: https://www.arduino.cc/en/Tutorial/HomePage