ladislas / bare-arduino-project Goto Github PK
View Code? Open in Web Editor NEWStart your Arduino projects right out of the box
License: MIT License
Start your Arduino projects right out of the box
License: MIT License
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?
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.
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:
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.
Wouldn't it be nice if we could make sure our programs compile when we make modification to them?
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?
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?
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.
Was there a specific reason that lines https://github.com/ladislas/Bare-Arduino-Project/blob/master/Makefile-Linux.mk#L8 and https://github.com/ladislas/Bare-Arduino-Project/blob/master/Makefile-OSX.mk#L8 are not:
PROJECT_DIR = ~/MyArduinoProject
Thanks!
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).
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?
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
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
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.
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.`
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'
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.
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
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!
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.
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
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?
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?
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.
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
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!
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.
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
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
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
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
(
for
(
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
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.
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.
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
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 ?
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:
make & enjoy :) Hope it helps...
Hi Folks. How can windows users be able to install ?
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?
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.
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:
$ 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.
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?
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!
drone.io is working great, but we should allow people to use both travis-ci or drone.io
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?
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'>'
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
Hello,
I'm trying this project under an Ubuntu 18.04.2 WSL of Windows 10 fully patched 1809/17763.437.
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
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?
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?
Recently homebrew has changed so that pip install python@2 is required to get 'pip' - python only contains pip3 now.
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.
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).
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']
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.