Code Monkey home page Code Monkey logo

bare-arduino-project's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bare-arduino-project's Issues

Problems with dependencies with different folder names

Hi, I'm newbie on python, and I have a complex arduino program that uses some libraries in just one folder. I guess your program works taking the names of the folders and using to know the name of the libraries on it. But I have many libraries on just one folder of the lib, and the software can't include this files on the project. I tried put one folder for each files but some files includes other libraries. Can you help me with it? Thanks

External libraries do not pick up

I'm trying to build a project that uses F Malpartida's New LiquidCrystal libraries (LCD.h and LiquidCrystal_I2C.h). I put those into lib of the project folder as suggested. I'm also using FooProject folder, as it already contains a Makefile after I run the check that everything is working.
When I "make" my project the terminal goes on computing and so on and then:

mkdir -p /Users/ilvadol/ardprj/bin/FooProject/uno
/usr/local/bin/avr-g++ -MMD -c -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=167 -DARDUINO_ARCH_AVR -D__PROG_TYPES_COMPAT__ -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard    -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire/utility  -Wall -ffunction-sections -fdata-sections -Os -pedantic -Wall -Wextra -fdiagnostics-color -fno-exceptions -std=gnu++11 FooProject.cpp -o /Users/ilvadol/ardprj/bin/FooProject/uno/FooProject.cpp.o
FooProject.cpp:3:17: fatal error: LCD.h: No such file or directory
 #include "LCD.h"
                 ^
compilation terminated.
make: *** [/Users/ilvadol/ardprj/bin/FooProject/uno/FooProject.cpp.o] Error 1

I tried to #include <LCD.h> but it doesn't work.
I also tried to put libs into Arduino IDE Java/libraries folder, but no luck.
My Makefile is unchanged since the initial check. What am I doing wrong?
I'm on a MacOSX 10.11.2
Using MacVIM 7.4.1147
Arduino IDE v.1.6.7
Trying to run on UNO board.

Thanks a lot in advance.

Arduino-Makefile submodule unable to checkout

i follow the instructions in INSTALL.md and when using the command:
git submodule update --init --recursive
i get:
fatal: reference is not a tree: d1ea8699a49962f7c58beeaa25878755e0910195
Unable to checkout 'd1ea8699a49962f7c58beeaa25878755e0910195' in submodule path 'Arduino-Makefile'

Builds fail for more complex user library structures

The provided example code has a user library structure as

lib/FooLib/FooLib.h

Including this header works as expected in the current structure. However, if the intended header file name does not match the parent directory name then the build will fail with a "No such file or directory" error.

To reproduce, change the filename of lib/FooLib/FooLib.h to lib/FooLib/FooLib2.h and try to include it from FooProject.cpp. This is problematic for libraries with more than one header file.

libraries import

Hi,

I'm trying to import the ros_lib libraries. It seems the libraries import works only if the name of the header is the name of the folder (ie the name of the lib). Is there a fix for this ?

What for BOARD_TAG & BOARD_SUB?

Hi,
I had some troubles to set up BOARD_TAG & BOARD_SUB in the Makefile. May I suggest to improve INSTALL.md?
Here is what I did to set up the good values:

  • Open the BOARDS_TXT file (for example /Users/me/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt) as specified when 'make' is launched.
  • Find for the board used (for example "Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328")
  • Look at the config keys for this board (in this case "pro.menu.cpu.8MHzatmega328=ATmega...")
  • So BOARD_TAG=pro and BOARD_SUB=8MHzatmega328.

make & enjoy :) Hope it helps...

How to properly use libraries and OOP?

This is a question. Not really sure whether to ask this here or in Arduino-Makefile.

I personally don't really care about compatability to the arduino IDE I just want to use theire libraries. With this repo and the makefile I kind of have what I wanted except for the way libraries are compiled, which I do not understand fully.

By reading the code I found that the folder names of libraries have to be the same as the .h and .cpp file and there can only be one .h and one .cpp file per library is that correct?

So I like clean OOP with files for each class, I know one should not go to heavily object oriented for hardware programming but from what I have read it is okay as long as one does not use polymorphy etc. since the compiler can't optimize that. And not to use the heap to much. So what I do is create one "library" for each class and create objects in the main file as global variables, is that the way to do it?

I tried to play around with StandardCplusplus but could not make it work in this framework even though I tried to edit the regex in the Arduino-Makefile to account for the missing .h. I am not saying I want to use the bloated container classes but e.g. functional would be nice to have. So just as an example: How would I make such a library with multiple .cpp and header files work, is that even possible without changing the entire makefile?

No Module named Serial

I am a beginner to compiling code in bash(Mac), and have no idea what to do after being told that I don't have the "serial" python module installed. I ran 'pip3 install pyserial', twice, and even changed the import line in ard-reset-arduino to 'import pyserial'. Please help me get this up and running.

 Traceback (most recent call last):
  File "/Users/c***********z/Developer/path/to/AVR_GCC_DUINO/Arduino-Makefile/bin/ard-reset-    arduino", line 4, in <module>
    import pyserial
ImportError: No module named serial

Bare-Arduino-Project uses gnu++14 by default - not widely supported yet?

The default Makefile provided by Bare-Arduino-Project currently uses gnu++14 for CXXFLAGS_STD. At least on my Ubuntu 14.04 installation, with all the required tools downloaded through official repositories, this standard is not yet recognized and will throw an error. Switching the option to gnu++11 allows the example program to compile successfully, but I'm not sure what side effects this causes (if any).

GCC 6.x causes delays to hang forever

Original, mis-filed issue.

I'm assuming this is also the case for any GCC above 4.9, but have only confirmed with 6.1 and 6.2.

See original issue for details of makefile and such.

Toolchain recreation info:

Installed Versions

binutils....v2.26.0
gcc.........v6.1.0
avr-libc....v2.0.0

gmp.........v6.1.1
isl.........v0.16.1
mpc.........v1.0.3
mpfr........v3.1.4
cloog.......v0.18.1

binutils configuration

--target=avr \
    --disable-nls \
    --disable-werror

gcc configuration

(After gmp and friends placed in tree)

--target=avr \
    --enable-languages=c,c++ \ 
    --disable-nls \
    --with-gnu-ld \
    --with-dwarf2

libc configuration

--host=avr

Transitive library dependencies

The sample project wont compile.

I am compiling src/BarProject that uses BarLib

It does not find the FooLib library that is a dependency of BarLib

/tmp/path/to/New_Arduino_Project/lib/BarLib/BarLib.h:11:20: fatal error: FooLib.h: No such file or directory
 #include "FooLib.h"

However if I specify both libraries in the make file:

ARDUINO_LIBS = Wire BarLib FooLib 

it compiles.

Whole compile log:

$ make
-------------------------
Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = LINUX
- [USER]               ARDUINO_DIR = /usr/share/arduino
- [USER]               ARDMK_DIR = /tmp/path/to/New_Arduino_Project/Arduino-Makefile
- [AUTODETECTED]       ARDUINO_VERSION = 163
- [DEFAULT]            ARCHITECTURE = avr
- [DEFAULT]            VENDOR = arduino
- [AUTODETECTED]       ARDUINO_PREFERENCES_PATH = /home/user/.arduino15/preferences.txt
- [AUTODETECTED]       ARDUINO_SKETCHBOOK = /home/user/Arduino (from arduino preferences file)
- [USER]               AVR_TOOLS_DIR = /usr
- [COMPUTED]           ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_PLATFORM_LIB_PATH = /usr/share/arduino/hardware/arduino/avr/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants (from ARDUINO_DIR)
- [COMPUTED]           BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt (from ARDUINO_DIR)
- [USER]               USER_LIB_PATH = /tmp/path/to/New_Arduino_Project/lib
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh
- [USER]               BOARD_SUB = atmega2560
- [USER]               BOARD_TAG = mega
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = mega (from build.variant)
- [USER]               OBJDIR = /tmp/path/to/New_Arduino_Project/bin/BarProject/mega
- [COMPUTED]           ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt)
-                      No .pde or .ino files found. If you are compiling .c or .cpp files then you need to explicitly include Arduino header files
- [USER]               MONITOR_BAUDRATE = 115200
- [DEFAULT]            OPTIMIZATION_LEVEL = s
- [DEFAULT]            MCU_FLAG_NAME = mmcu
- [USER]               CFLAGS_STD = -std=gnu11
- [USER]               CXXFLAGS_STD = -std=gnu++11
- [COMPUTED]           DEVICE_PATH = /dev/tty.usbmodem* (from MONITOR_PORT)
- [DEFAULT]            FORCE_MONITOR_PORT =
- [AUTODETECTED]       Size utility: AVR-aware for enhanced output
-
-                      SYSTEM_LIBS =
- [PLATFORM]             Wire
- [COMPUTED]           BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders (from ARDUINO_DIR)
- [COMPUTED]           ARDMK_VERSION = 1.3.4
- [COMPUTED]           CC_VERSION = 4.9.2 (avr-gcc)
-------------------------
mkdir -p /tmp/path/to/New_Arduino_Project/bin/BarProject/mega
/usr/bin/avr-g++ -MMD -c -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=163 -DARDUINO_ARCH_AVR -D__PROG_TYPES_COMPAT__ -I/usr/share/arduino/hardware/arduino/avr/cores/arduino -I/usr/share/arduino/hardware/arduino/avr/variants/mega    -I/usr/share/arduino/hardware/arduino/avr/libraries/Wire -I/usr/share/arduino/hardware/arduino/avr/libraries/Wire/utility   -I/tmp/path/to/New_Arduino_Project/lib/BarLib -Wall -ffunction-sections -fdata-sections -Os -pedantic -Wall -Wextra -fdiagnostics-color -fno-exceptions -std=gnu++11 BarProject.cpp -o /tmp/path/to/New_Arduino_Project/bin/BarProject/mega/BarProject.o
In file included from BarProject.cpp:3:0:
/tmp/path/to/New_Arduino_Project/lib/BarLib/BarLib.h:11:20: fatal error: FooLib.h: No such file or directory
 #include "FooLib.h"
                    ^
compilation terminated.
/tmp/path/to/New_Arduino_Project/Arduino-Makefile/Arduino.mk:1238: recipe for target '/tmp/path/to/New_Arduino_Project/bin/BarProject/mega/BarProject.o' failed
m

MONITOR_PORT does not support network connections

I want to execute the following flash command with your make file
avrdude -b 115200 -p m328p -c arduino -P net:beagle:4000 -Uflash:w:file.hex

But MONITOR_PORT does not support net:beagle:4000!

I additionally want to use make monitor with a different port "net:beagle:4001"

Would it be possible to include that or is there a workaround?

Doesn't build objects from sources under lib/

I have some custom libraries under the lib/ directory, similar to FooLib and BarLib. When building, the compiler is invoked with -I.../FooLib properly, but a FooLib.o is never built and linked into the final executable. Therefore, the final linker step fails with "undefined references" errors.

lib-detection gets stuck searching for dependencies

I went to compile my code to find that it was never finishing (after running for about ~45 minutes). When I would interrupt the process it would display a traceback to Arduino-Makefile/bin/lib-detection somewhere around line 70 ( currentFile = open(os.path.join(USER_LIB_PATH, lib, lib + ".h")) )

For some reason, it was getting stuck calculating SKETCH_LIBS_DEPS. As a workaround, I specified every library and every library dependency directly in the ARDUINO_LIBS variable of the makefile, commented out that section of lib-detection, and replaced it with SKETCH_LIBS_DEPS = []. This approach seems to be working for now.

screen shot 2018-01-10 at 10 01 23 am

My project is somewhat large with 15 libraries specified in my USER_LIB_PATH. Each individual library is fairly simple, with a handful of includes and an average size of ~200 - 300 lines, with a couple libraries being substantially larger. Some libraries include other libraries. Hardcoding dependencies in the makefile without commenting out lib-detection did not help.

Unfortunately, I cannot upload my project as it's for work and parts of it are confidential, but would be happy to try and provide any specific information that might be helpful.

Thanks!

CURRENT_OS = MAC
ARDUINO_VERSION = 165-r
ARDMK_VERSION = 1.5

How can I integrate unittests?

I love you made this project, it was kind of what I was thinking of myself using the Arduino-Makefile project as well, but you streamline it a lot. I was also planning to do CI and unittesting, but although the test folder is there, you don't mention any testing framework, library, etc that you use for it. I was planning to use arduino-ci because it provides a lot of hardware mocking functionality so it allows me to focus my unittests on my actual code. Do you have any experience integrating that into your Bare-Arduino-Project? Or how else are you doing testing in your projects? Any pointers on this would be greatly appreciated, and I'd be happy to contribute docs on this.

avr-g++ not linking to c++ libraries?

I almost have it working with my toolchain (I'm on Linux mint 64bit). Except if I include std c++ libaries such as in the top level *.ino file, the avr-g++ compiler cannot understand to link to the c++ files in usr/include/c++/. Hardcoding an include path is not really an option due to the recursive nature of the c++ libraries. The g++ compiler works fine recognizing these libs. I've tested with both g++ 4.8 and 4.9.

My error looks likes this: fatal error: array: No such file or directory #include '<'array'>'

Wrong instructions?

If I follow the instruction.md correctly you end up with a project root folder with Makefile and /src /lib /bin
subfolders. However running make gives this:

Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = LINUX 
- [USER]               ARDUINO_DIR = /usr/share/arduino 
- [USER]               ARDMK_DIR = /home/ppetrov/Documents/arduiono_example/Arduino-Makefile 
- [AUTODETECTED]       ARDUINO_VERSION = 105 
- [DEFAULT]            ARCHITECTURE =  
- [DEFAULT]            ARDMK_VENDOR = arduino 
- [DEFAULT]            ARDUINO_SKETCHBOOK =  
- [USER]               AVR_TOOLS_DIR = /usr 
- [COMPUTED]           ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino//variants (from ARDUINO_DIR)
- [COMPUTED]           BOARDS_TXT = /usr/share/arduino/hardware/arduino//boards.txt (from ARDUINO_DIR)
- [USER]               USER_LIB_PATH = /home/ppetrov/Documents/arduiono_example/lib 
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh 
- [USER]               BOARD_SUB = atmega328P 
- [USER]               BOARD_TAG = uno 
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = standard (from build.variant)
- [USER]               OBJDIR = /home/ppetrov/Documents/arduiono_example/bin/arduiono_example/uno 
- [COMPUTED]           ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino//cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt)
/home/ppetrov/Documents/arduiono_example/Arduino-Makefile/Arduino.mk:780: *** At least one source file (*.ino, *.pde, *.cpp, *c, *cc, *.S) is needed.  Stop.

which makes sense since no source file in project root, did I miss something?

Work with ArduinoCore-avr: troubles

Good day!
I try to setup Bare-Arduino-Project without Arduino at all, but with ArduinoCore-avr (https://github.com/arduino/ArduinoCore-avr).
Step to reproduce:

cd work
git clone https://github.com/arduino/ArduinoCore-avr.git
git clone https://github.com/ladislas/Bare-Arduino-Project.git
cd Bare-Arduino-Project && git submodule update --init --recursive
cd src/FooProject
cp ../../Makefile-Linux.mk Makefile

Edit Makefile same way:

diff Makefile ../../Makefile-Linux.mk
20,21c20,21
< ARDUINO_DIR       = ~/work/ArduinoCore-avr
< ALTERNATE_CORE_PATH = ~/work/ArduinoCore-avr
---
> ARDUINO_DIR       = /usr/share/arduino
>

Now after make:

Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = LINUX
- [USER]               ARDUINO_DIR = ~/work/ArduinoCore-avr
- [USER]               ARDMK_DIR = /home/user/work/Bare-Arduino-Project/Arduino-Makefile
- [DEFAULT]            ARDUINO_VERSION = 100
- [DEFAULT]            ARCHITECTURE =  
- [DEFAULT]            ARDMK_VENDOR = arduino
- [AUTODETECTED]       ARDUINO_PREFERENCES_PATH = /home/user/.arduino/preferences.txt
- [AUTODETECTED]       ARDUINO_SKETCHBOOK = /home/user/sketchbook (from arduino preferences file)
- [USER]               AVR_TOOLS_DIR = /usr
- [COMPUTED]           ARDUINO_LIB_PATH = ~/work/ArduinoCore-avr/libraries (from ARDUINO_DIR)
- [USER]               ALTERNATE_CORE_PATH = ~/work/ArduinoCore-avr
- [COMPUTED]           ARDUINO_VAR_PATH = ~/work/ArduinoCore-avr/variants (from ALTERNATE_CORE_PATH)
- [COMPUTED]           BOARDS_TXT = ~/work/ArduinoCore-avr/boards.txt (from ALTERNATE_CORE_PATH)
- [USER]               USER_LIB_PATH = /home/user/work/Bare-Arduino-Project/lib
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh
- [USER]               BOARD_SUB = atmega2560
- [USER]               BOARD_TAG = mega
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = mega (from build.variant)
- [USER]               OBJDIR = /home/user/work/Bare-Arduino-Project/bin/FooProject/mega
- [COMPUTED]           ARDUINO_CORE_PATH = ~/work/ArduinoCore-avr/cores/arduino (from ALTERNATE_CORE_PATH, BOARD_TAG and boards.txt)
-                      No .pde or .ino files found. If you are compiling .c or .cpp files then you need to explicitly include Arduino header files
-  [USER]              MONITOR_BAUDRATE = 115200
/home/user/work/Bare-Arduino-Project/Arduino-Makefile/Arduino.mk:974: *** The following libraries specified in ARDUINO_LIBS could not be found (searched USER_LIB_PATH and ARDUINO_LIB_PATH): Wire. Stop.

Here two errors:

    • [COMPUTED] ARDUINO_CORE_PATH = ~/work/ArduinoCore-avr/cores/arduino (from ALTERNATE_CORE_PATH, BOARD_TAG and boards.txt) - not exist
  1. Wire not found. Wire lays on
$ ls ~/work/ArduinoCore-avr/libraries
EEPROM  HID  SoftwareSerial  SPI  Wire
$ ls ~/work/ArduinoCore-avr/libraries/Wire/
examples  keywords.txt  library.properties  src
$ ls -l ~/work/ArduinoCore-avr/libraries/Wire/src
total 20
-rw-r--r-- 1 user user 8591 May 12 00:22 Wire.cpp
-rw-r--r-- 1 user user 2682 May 12 00:22 Wire.h
drwxr-xr-x 2 user user 4096 May 12 00:22 utility

Need tips to fix it.

Arduino IDE version

Does it have to be 1.6.x or can the current version (1.8.x) also be used?

If it needs to be the older version it would be great to state that explicitly in INSTALL.md and maybe explain why.

How to use this project?

Hi,

Thanks for putting together this project - using the Arduino IDE was getting on my nerves, and I'm looking forward to working with my Arduino from the comfort of Sublime Text once more.

I'm not totally clear on how to use this, however - do I clone this project for each sketch I'm working on? Or do I use this project as an "IDE" and create new projects inside the src directory?

Could this work with Intel Galileo?

Hi, do you think this could work with Intel Galileo, which provides an Arduino environment? I absolutely despise the Arduino IDE and it would be nice to use this package instead. Thanks!

License Clarification

The README lists the project under the MIT license, but the LICENSE file is GPL. Can you clarify which sections of the project are licensed under which?

Not working in Ubuntu 14

First of all thank you for the great work!
I'm experiencing some problems setting the bare-bone project up in Ubuntu:

----------------------- 1st problem ------------------------
My avr-gcc version is 4.8.2, which in the Arduino.mk makes it try avr-gcc-ar

ifeq ($(shell expr $(CC_VERNUM) '>' 482), 1)
    AR_NAME      = avr-gcc-ar
else
    AR_NAME      = avr-ar
endif

which produces the following error when trying to build:
'sorry - this program has been built without plugin support'

I changed $(shell expr $(CC_VERNUM) '>' 482 for
$(shell expr $(CC_VERNUM) '>' 483

to make it use avr-gcc, which compiles without errors

----------------------- 2nd problem ------------------------

Same version problem for avr dude

        ifndef AVRDUDE
            ifeq ($(shell expr $(ARDUINO_VERSION) '>' 157), 1)
                # 1.5.8 has different location than all prior versions!
                AVRDUDE = $(AVR_TOOLS_DIR)/bin/avrdude
            else
                AVRDUDE = $(AVR_TOOLS_DIR)/../avrdude
            endif
        endif

        ifndef AVRDUDE_CONF
            ifeq ($(shell expr $(ARDUINO_VERSION) '>' 157), 1)
                AVRDUDE_CONF = $(AVR_TOOLS_DIR)/etc/avrdude.conf
            else
                AVRDUDE_CONF = $(AVR_TOOLS_DIR)/../avrdude.conf
            endif
        endif

I have version 105 but the paths are just the other, so I changed
($(shell expr $(ARDUINO_VERSION) '>' 157)
for
($(shell expr $(ARDUINO_VERSION) '>' 100)


I know is a dirty work around, and that's why I reported the issue so you guys can think for a better fix! Thank you again for the great work

makefile not working with tinyGPS and tinyGPSPlus

I am trying to compile an example of tinyGPSPlus (same goes tinyGPS) for it works fine when i compile it using arduino IDE but when i use make upload there is no error but i don't receive any GPS data.
Please note that i have all ready uploaded functional programs using make upload.
Could it because of the baudrate mismatch talked about here :#45

Can't include anything from STL.

Hey, I don't know if this is the better way yo contact you, but, here is my issue:
I can't include any header file from the STL:

If I try to include vector, this is what happens:
FooProject.cpp:3:18: fatal error: vector: No such file or directory #include <vector>

How can I fix this?

vim YouCompleteMe still not working with .ino files

I placed .ycm_extra_conf.py in the project directory but YCM still does not work at all. For example: When I type test. where test is the name of an object of a test class I do not get any suggestions for method names. When I try to force autocompletion I get
E764: Option 'omnifunc' is not set

When I try to use the go to definition feature the error is
ValueError: No semantic completer exists for filetypes: [u'arduino']

Mocking SPI and hardware pins

Related to #56: Is there a library or are there any examples of writing unittests that Mock some of the hardware arduino functions? I would for instance like to mock the digitalWrite/digitalRead/analogRead/pinMode functions, and also the SPI library, so I can write tests for code that depends on them, without actually needing an emulator or physical hardware connected. I really like the arduino_ci project for that specific part, but they have their own test runner in Ruby and use the native gcc instead of avr-gcc. Is something similar possible using avr-gcc?

Cannot find plugin 'liblto_plugin.so'

I'm trying out the make of FooProject, and I'm not sure where this bug report belongs to.

This is on a Raspberry Pi/Raspbian.

The last few lines of the error are:

/usr/bin/avr-gcc-ar: Cannot find plugin 'liblto_plugin.so'
/home/pi/w/ar/proj/MyArduinoProject/Arduino-Makefile/Arduino.mk:1476: recipe for target '/home/pi/w/ar/proj/MyArduinoProject/bin/FooProject/uno/libcore.a' failed
make: *** [/home/pi/w/ar/proj/MyArduinoProject/bin/FooProject/uno/libcore.a] Error 1

I found someone with a similar error at https://www.raspberrypi.org/forums/viewtopic.php?f=33&t=68789, which references raspberrypi/tools#12. The bug report on that latter link indicates that the bug (files were in the wrong directory) has been fixed.

I see that the code here hasn't been updated in a few years, so I'm thinking something along the lines of "The RPI guys fixed this in 2014, and the files on the Bare-Arduino-Project were last updated around then too, so maybe there was an update that needs to happen here?"

So if you think that this bug should be reported back over at the RPI guys, I'd gladly do this. I'm just trying to figure out where this bug report should go.

unrecognized CFLAGS and CXXFLAGS

Hi,
Thank you for putting the sample project together, I'd like to report a problem on Ubuntu 14.04 LTS

CFLAGS_STD        = -std=gnu11
CXXFLAGS_STD      = -std=gnu++11

are not recognized options, compilation failed.

/usr/bin/avr-gcc -MMD -c -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100  -D__PROG_TYPES_COMPAT__ -I/usr/share/arduino/hardware/arduino//cores/arduino -I/usr/share/arduino/hardware/arduino//variants/standard    -Wall -ffunction-sections -fdata-sections -Os -std=gnu11 /usr/share/arduino/hardware/arduino//cores/arduino/WInterrupts.c -o /dvt/workspace/company/hw/arduino/bin/BarProject/uno/core/WInterrupts.o
cc1: error: unrecognized command line option "-std=gnu11"
make: *** [/dvt/workspace/company/hw/arduino/bin/BarProject/uno/core/WInterrupts.o] Error 1

I have updated my toolchain to gcc4.8 (and also g++, cpp)
http://askubuntu.com/questions/271388/how-to-install-gcc-4-8

But the problem persists, do you think it is because of an old avr-gcc? Is there a way around it? (the build from source seems rather daunting)

avr-gcc -v
Using built-in specs.
COLLECT_GCC=avr-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.5.3/lto-wrapper
Target: avr
Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-libssp --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=avr
Thread model: single
gcc version 4.5.3 (GCC) 

I have solved 'my problem' by editing the flags in the Makefile.

CFLAGS_STD        =
CXXFLAGS_STD      = -std=gnu++0x

It then compiles and uploads/works well. BUT I'm not sure what these flags do and if it is safe to ignore them - according to https://gcc.gnu.org/gcc-4.7/changes.html, the gnu++0x is equivalent of gnu++11 (so it should be safe), but I don't understand C and the gnu11.

Can you please shed some light on it?

Getting a synch error when trying to upload a sketch

I'm a Mac 10.10 User trying to free myself from the terrible Arduino IDE. I'm using an Arduino UNO board.

I followed the instructions here: https://github.com/ladislas/Bare-Arduino-Project/blob/master/INSTALL.md#4-test-that-evrything-is-up-and-running

However, when I did "make upload", I got the following error:

mkdir -p /Users/syed.saqibali/Arduino/Oryx/bin/BarProject/mega
/Applications/Xcode.app/Contents/Developer/usr/bin/make reset
/Users/syed.saqibali/Arduino/Oryx/Arduino-Makefile/bin/ard-reset-arduino  /dev/tty.usbmodem1451
/Applications/Xcode.app/Contents/Developer/usr/bin/make do_upload
/usr/local/bin/avrdude -q -V -p atmega1280 -D -c arduino -b 57600 -P /dev/tty.usbmodem1451 \
        -U flash:w:/Users/syed.saqibali/Arduino/Oryx/bin/BarProject/mega/BarProject.hex:i
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xbc
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xef
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xf8
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xae
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x3d
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xf8
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xbc
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xad
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xf8
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xae

I don't think this is a problem with the board itself because when I open the IDE and try to upload a compiled sketch through it, it works fine

C

Hello,
I'm trying this project under an Ubuntu 18.04.2 WSL of Windows 10 fully patched 1809/17763.437.

  1. In Step 5 of INSTALL.MD
    make fails because avrdude.conf is not found.

My avrdude.conf is under
/usr/share/Arduino/hardware/tools/arvdude.conf

I had to change Arduino.MK lines 576+ to

   # ensure we can still find avrdude.conf
    ifndef AVRDUDE_CONF
	#CM
		AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
#       ifeq ($(shell expr $(ARDUINO_VERSION) '>' 157), 1)
#            AVRDUDE_CONF = $(AVR_TOOLS_DIR)/etc/avrdude.conf
#        else
#            AVRDUDE_CONF = $(AVR_TOOLS_DIR)/../avrdude.conf
#        endif
    endif
  1. In Step 5 of INSTALL.MD
    make upload fails
cedric@CEDRIC-DSK1:/mnt/f/dev/GitHub/bat02/src/FooProject$ make upload
-------------------------
Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = LINUX
- [USER]               ARDUINO_DIR = /usr/share/arduino
- [USER]               ARDMK_DIR = /mnt/f/dev/GitHub/bat02/Arduino-Makefile
- [AUTODETECTED]       ARDUINO_VERSION = 105
- [DEFAULT]            ARCHITECTURE =
- [DEFAULT]            ARDMK_VENDOR = arduino
- [DEFAULT]            ARDUINO_SKETCHBOOK =
- [COMPUTED]           ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino//variants (from ARDUINO_DIR)
- [COMPUTED]           BOARDS_TXT = /usr/share/arduino/hardware/arduino//boards.txt (from ARDUINO_DIR)
- [USER]               AVR_TOOLS_DIR = /usr
- [COMPUTED]           ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR)
- [USER]               USER_LIB_PATH = /mnt/f/dev/GitHub/bat02/lib
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh
- [USER]               BOARD_SUB = atmega2560
- [USER]               BOARD_TAG = mega
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = mega (from build.variant)
- [USER]               OBJDIR = /mnt/f/dev/GitHub/bat02/build/FooProject/mega
- [COMPUTED]           ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino//cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt)
-                      No .pde or .ino files found. If you are compiling .c or .cpp files then you need to explicitly include Arduino header files
-  [USER]              MONITOR_BAUDRATE = 115200
- [DEFAULT]            OPTIMIZATION_LEVEL = s
- [DEFAULT]            MCU_FLAG_NAME = mmcu
- [USER]               CFLAGS_STD = -std=gnu11
- [USER]               CXXFLAGS_STD = -std=gnu++17
- [COMPUTED]           DEVICE_PATH = /dev/ttyS10 (from MONITOR_PORT)
- [DEFAULT]            FORCE_MONITOR_PORT =
- [AUTODETECTED]       Size utility: AVR-aware for enhanced output
-
-                      SKETCH_LIBS =
- [USER]                 FooLib
-
-                      SYSTEM_LIBS =
- [SYSTEM]               Wire
-
- [COMPUTED]           BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino//bootloaders (from ARDUINO_DIR)
- [COMPUTED]           ARDMK_VERSION = 1.6
- [COMPUTED]           CC_VERSION = 5.4.0 (avr-gcc)
-------------------------
mkdir -p /mnt/f/dev/GitHub/bat02/build/FooProject/mega
make reset
make[1]: Entering directory '/mnt/f/dev/GitHub/bat02/src/FooProject'
/mnt/f/dev/GitHub/bat02/Arduino-Makefile/bin/ard-reset-arduino  /dev/ttyS10
make[1]: Leaving directory '/mnt/f/dev/GitHub/bat02/src/FooProject'
make do_upload
make[1]: Entering directory '/mnt/f/dev/GitHub/bat02/src/FooProject'
/usr/bin/avrdude -q -V -p atmega1280 -C /usr/share/arduino/hardware/tools/avrdude.conf -D -c arduino -b 57600 -P /dev/ttyS10 \
                -U flash:w:/mnt/f/dev/GitHub/bat02/build/FooProject/mega/FooProject.hex:i
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

/mnt/f/dev/GitHub/bat02/Arduino-Makefile/Arduino.mk:1725: recipe for target 'do_upload' failed
make[1]: *** [do_upload] Error 1
make[1]: Leaving directory '/mnt/f/dev/GitHub/bat02/src/FooProject'
/mnt/f/dev/GitHub/bat02/Arduino-Makefile/Arduino.mk:1712: recipe for target 'upload' failed
make: *** [upload] Error 2
cedric@CEDRIC-DSK1:/mnt/f/dev/GitHub/bat02/src/FooProject$

Note: The ATMEGA 2560 board is working. Directly under Windows with Arduino IDE, uploading sketches does work.
Any ideas?

YouCompleteMe not properly using Teensy/Teensyduino headers

I'm trying to set up YouCompleteMe (ycm) in Vim to autocomplete and error-detect code for Teensy 3.1. I installed Arduino 1.0.6 to a separate directory (because Bare-Arduino-Project doesn't support Arduino 1.6.* for Teensy), and installed Teensyduino to it. Then, I pointed ycm to this Arduino directory via .ycm_extra_conf.py:

ArduinoLibDir = [
  "/home/alex/build/arduino-1.0.6" # location of Arduino patched with Teensyduino
  ,"/Applications/Arduino.app/Contents/Resources/Java/libraries"
  ,"/Applications/Arduino.app/Contents/Java/libraries"
  ,"/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries"
]

When using this test code:

#include <Arduino.h>

constexpr int pin = 13;

int main() {
    pinMode(pin, OUTPUT);
    digitalWrite(pin, HIGH);
    delay(1000);

    Serial.begin(9600);
    Serial.println("There, I turned on the LED, see?");
}

ycm throws no errors with pinMode(), digitalWrite(), and delay(), indicating it found them in Arduino.h just fine, but it doesn't recognize the Serial object:
screenshot_2015-07-10_13-21-09

Yet strangely, if I pretend I'm writing code for an original Arduino by changing the ycm library path to an unpatched Arduino directory:

ArduinoLibDir = [
  "/usr/share/arduino" # unpatched arduino
  ,"/Applications/Arduino.app/Contents/Resources/Java/libraries"
  ,"/Applications/Arduino.app/Contents/Java/libraries"
  ,"/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries"
]

ycm recognizes Serial and autocompletes it just fine.

So, this leads me to believe that there's something to be fixed with the supplied .ycm_extra_conf.py.

make upload baudrate missmatch

In my Makefile:

### MONITOR_BAUDRATE
### It must be set to Serial baudrate value you are using.
MONITOR_BAUDRATE  = 19200

OUTPUT of sudo make upload:

-------------------------
Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = LINUX 
- [USER]               ARDUINO_DIR = /usr/share/arduino 
- [USER]               ARDMK_DIR = /home/ppetrov/Documents/arduino_bqzum_printbot/Arduino-Makefile 
- [AUTODETECTED]       ARDUINO_VERSION = 105 
- [DEFAULT]            ARCHITECTURE =  
- [DEFAULT]            ARDMK_VENDOR = arduino 
- [DEFAULT]            ARDUINO_SKETCHBOOK =  
- [USER]               AVR_TOOLS_DIR = /usr 
- [COMPUTED]           ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino//variants (from ARDUINO_DIR)
- [COMPUTED]           BOARDS_TXT = /usr/share/arduino/hardware/arduino//boards.txt (from ARDUINO_DIR)
- [USER]               USER_LIB_PATH = /home/ppetrov/Documents/arduino_bqzum_printbot/lib 
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh 
- [USER]               BOARD_SUB = atmega380 
- [USER]               BOARD_TAG = uno 
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = standard (from build.variant)
- [USER]               OBJDIR = /home/ppetrov/Documents/arduino_bqzum_printbot/bin/TestTTY/uno 
- [COMPUTED]           ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino//cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt)
-                      No .pde or .ino files found. If you are compiling .c or .cpp files then you need to explicitly include Arduino header files
- [USER]               MONITOR_BAUDRATE = 19200 
- [DEFAULT]            OPTIMIZATION_LEVEL = s 
- [DEFAULT]            MCU_FLAG_NAME = mmcu 
- [USER]               CFLAGS_STD = -std=gnu11 
- [USER]               CXXFLAGS_STD = -std=gnu++11 
- [COMPUTED]           DEVICE_PATH = /dev/ttyUSB* (from MONITOR_PORT)
- [DEFAULT]            FORCE_MONITOR_PORT =  
- [AUTODETECTED]       Size utility: AVR-aware for enhanced output
-
-                      ARDUINO_LIBS =
- [USER]                 ProbeTTYLib
- [SYSTEM]               Wire
- [COMPUTED]           BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino//bootloaders (from ARDUINO_DIR)
- [COMPUTED]           ARDMK_VERSION = 1.5 
- [COMPUTED]           CC_VERSION = 4.9.2 (avr-gcc)
-------------------------
mkdir -p /home/ppetrov/Documents/arduino_bqzum_printbot/bin/TestTTY/uno
make reset
make[1]: Entering directory '/home/ppetrov/Documents/arduino_bqzum_printbot/src/TestTTY'
/home/ppetrov/Documents/arduino_bqzum_printbot/Arduino-Makefile/bin/ard-reset-arduino  /dev/ttyUSB0
make[1]: Leaving directory '/home/ppetrov/Documents/arduino_bqzum_printbot/src/TestTTY'
make do_upload
make[1]: Entering directory '/home/ppetrov/Documents/arduino_bqzum_printbot/src/TestTTY'
/usr/bin/avrdude -q -V -p atmega328p -C /etc/avrdude.conf -D -c arduino -b 115200 -P /dev/ttyUSB0 \
		-U flash:w:/home/ppetrov/Documents/arduino_bqzum_printbot/bin/TestTTY/uno/TestTTY.hex:i
^C/home/ppetrov/Documents/arduino_bqzum_printbot/Arduino-Makefile/Arduino.mk:1462: recipe for target 'do_upload' failed
make[1]: *** [do_upload] Interrupt
/home/ppetrov/Documents/arduino_bqzum_printbot/Arduino-Makefile/Arduino.mk:1454: recipe for target 'upload' failed
make: *** [upload] Interrupt

Single library across multiple projects

Is it possible to have a single library that is shared across projects? In playing with this it looks like there is a 1:1 mapping between project and library, for example FooProject and FooLib.

Why does "PROJECT_DIR" need to be set?

Great project! why do I need to set this variable in my Makefile? This would make it completely un-portable

I've tried setting it to just

PROJECT_DIR = .

However i get the following output when following the INSTALL.md

dgtlmoon@dgtlmoon-ThinkPad-T420s:/tmp/new/src/BarProject $ [master|✔]make Makefile:73: Arduino-Makefile/Arduino.mk: No such file or directory make: *** No rule to make target Arduino-Makefile/Arduino.mk'. Stop.`

Uploading first example

Hi,

I tried out the project for the first time and tried out to upload the fooproject onto UnoR3 with a XUBUNTU 16.4.

I got no error while making, but error:2 while trying to upload

Settings were:

PROJECT_DIR = /home/{user}/programmierung/MyArduinoProjects
BOARD_TAG = uno
BOARD_SUB = atmega328p
AVRRDUDE = /usr/bin/avrdude
MONITOR_PORT = /dev/ttyACM0

make[1]: Verzeichnis „/home/{user}/programmierung/MyArduinoProjects/src/FooProject“ wird betreten
/usr/bin/avrdude -q -V -p atmega328p -C /usr/../avrdude.conf -D -c arduino -b 115200 -P /dev/ttyACM0
-U flash:w:/home/{user}/programmierung/MyArduinoProjects/bin/FooProject/uno/FooProject.hex:i
avrdude: can't open config file "/usr/../avrdude.conf": No such file or directory
avrdude: error reading system wide configuration file "/usr/../avrdude.conf"
/home/{user}/programmierung/MyArduinoProjects/Arduino-Makefile/Arduino.mk:1493: die Regel für Ziel „do_upload“ scheiterte
make[1]: *** [do_upload] Fehler 1
make[1]: Verzeichnis „/home/{user}/programmierung/MyArduinoProjects/src/FooProject“ wird verlassen
/home/{user}/programmierung/MyArduinoProjects/Arduino-Makefile/Arduino.mk:1485: die Regel für Ziel „upload“ scheiterte
make: *** [upload] Fehler 2

< Hi hope that it is readable, even though I am using German settings. ;)

I think, the problem is, that there is no "/usr/../avrdude.conf" calling avrdude -v hints that System wide config is "/etc/avrdude.conf"

How, can the problem be solved?

No module named serial

First off, I know there was an earlier issue like this one but I have tried everything that was suggested. When I try to upload using "make upload" I get an error saying "there is no module named serial".

/Users/j*********/MyArduinoProject/Arduino-Makefile/bin/ard-reset-arduino       /dev/tty.usbmodem1451
Traceback (most recent call last):
  File "/Users/j*********/MyArduinoProject/Arduino-Makefile/bin/ard-reset-arduino", line 4, in <module>
    import serial
ImportError: No module named serial
make[1]: *** [reset] Error 1
make: *** [upload] Error 2

But I am able to import serial in the python 2.7 interpreter.

Python 2.7.9 (default, Dec 30 2014, 18:28:09) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> 

I'm completely lost because the 'make upload' scripts should be using python 2.7. Please help me on this. By the way, I'm on a mac with OS X Yosemite (version 10.10.x).

Support for 3rd Party Boards

Is it possible to build projects for 3rd party boards such as the Adafruit Trinket (the ATTiny85 version)?

I have the Adafruit board support installed in the Arduino IDE, but they aren't recognized by the Makefile, for example:

make show_boards

Doesn't show the Adafruit boards. Is there a way to pick up the 3rd party board support from the IDE (i.e., see the same boards that the IDE sees)? If there isn't, would it work to add entries to boards.txt?

No rule to make target `build-mega-atmega2560/src.eep', needed by `all'

I'm trying to create a new project, but I have been unable to get any makes to work

My makefile looks like:

PROJECT_DIR       := /Users/ryanbeltran/Documents/Hardware\ Control/hardware\ controller/src
ARDMK_DIR         = $(PROJECT_DIR)/../Arduino-Makefile
ARDUINO_DIR       = /Applications/Arduino.app/Contents/Java
AVR_TOOLS_DIR     = /usr/local
AVRDDUDE          = /usr/local/bin/avrdude
BOARD_TAG         = mega
BOARD_SUB         = atmega2560
### MONITOR_BAUDRATE
### It must be set to Serial baudrate value you are using.
MONITOR_BAUDRATE  = 9600
### CFLAGS_STD
CFLAGS_STD        = -std=gnu11
CXXFLAGS_STD      = -std=gnu++11
CXXFLAGS          = -pedantic -Wall -Wextra -fdiagnostics-color
### MONITOR_PORT
### The port your board is connected to. Using an '*' tries all the ports and finds the right one.
MONITOR_PORT      = /dev/cu.usbmodem*
### path to Arduino.mk, inside the ARDMK_DIR, don't touch.
include $(ARDMK_DIR)/Arduino.mk

Everytime I build it prints out all the configuration data and then the error message:
make: *** No rule to make target build-mega-atmega2560/src.eep', needed by all'. Stop.

I tried running cat /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt and found the line mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560) which makes me think I should be using the correct values.

Any help would be greatly appreciated. Let me know if any more information would be of help.

Ubuntu 16.04 - including stdlib classes failing to compile

I'm kind of new to C++, so this might be an issue with my setup.

Including e.g map, vector or alike from std, fails to compile with make:

/home/jeppe/MyArduinoProject/lib/FooLib/FooLib.h:12:15: fatal error: map: No such file or directory
 #include <map>
               ^
compilation terminated.

I did ensure installing dependencies mentioned in INSTALL.md.
It is my understanding that I should be able to find stdlib headers in /usr/include/c++/[version], but I don't see any .h files in /usr/include/c++/5. Any ideas?

Edit: I don't know how to format the error properly, but the arrow is pointing to the end of the include statement.

Issue when Arduino-mk has been installed from the official repo.

First of all, congrats for this project, it's what I was looking for for a long time! But while using it for the first time I had to tweak it so that it works in my Linux box (Linux Mint 18.2, Cinnamon). If you've installed Arduino-mk from the repos as I did, then your makefile template must be updated as shown below once it was copied to the project folder.

I had to swap the order of these instructions so the last one works as expected:

### Path to the Arduino application and ressources directory.
ARDUINO_DIR       = /usr/share/arduino

### ARDMK_DIR
### Path to the Arduino-Makefile directory.
ARDMK_DIR         = $(ARDUINO_DIR)

By the way, in the last line it's read:

### path to Arduino.mk, inside the ARDMK_DIR, don't touch.
however, such a directory is empty. Perhaps it's my fault 'cause I forget something to copy into it.

May be it's not the right place, nor it's related to the original issue, but in Linux (as far as I know, and I'm not an expert) there is not such a thing:

MONITOR_PORT = /dev/tty.usbmodem*
instead one uses:

MONITOR_PORT = /dev/ttyUSB*

or

MONITOR_PORT = /dev/ttyACM*

Thanks for your project and I'll keep using it. Any other issue you'll be notified.

Installing new libraries doesn't work if folder not same name

Hey guys! Love the project. I've been using it to work in vim and it is great!

One problem I am having: the libraries can't be found unless they are the same name! I am trying to use the ArduinoJson project (https://github.com/bblanchon/ArduinoJson)

In the Arduino IDE, the generator example works great if you just do a git clone into the libraries folder

Using the Makefile however, it only works if I perform a
'''mv ArduinoJson JsonGenerator
on the folder

I don't know the reason! #include <ArduinoJson/JsonGenerator.h> doesn't work either

I am using a mac, have gotten your example code to run, and am really liking the effort you are doing. Thanks a lot!

Arduino 1.6.9 only (without having to brew avrdude and avr-libc)

Not really an issue, but an "interesting feature" : only depend on Arduino.app.

I've sucessfully compiled and uploaded the blink example on OS X without brewing avr-libc and avrdude.

To use the one embedded in Arduino.app :

AVR_TOOLS_DIR     = /Applications/Arduino.app/Contents/Java/hardware/tools/avr
AVRDDUDE          = /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude

In Arduino-Makefile :

$ ln -s /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf avrdude.conf
$ ls -l |grep dude
avrdude.conf -> /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf

$ cd examples/Blink
$ make

feedback makefile for 1.6.3

Hey @ladislas ,

just tested your updates. Looking good so far.
After I added a few lines building went all good, code is running fine.

ARDUINO_VAR_PATH = /home/ubuntu/sketchbook/hardware/plantsandmachines/avr/variants
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino
BOARDS_TXT = /home/ubuntu/sketchbook/hardware/plantsandmachines/avr/boards.txt

Somehow the core path was calculated wrong... there was a / to much.
Good job!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.