firmata / firmata-builder Goto Github PK
View Code? Open in Web Editor NEWA utility to generate an Arduino file from a selection of Firmata features.
License: MIT License
A utility to generate an Arduino file from a selection of Firmata features.
License: MIT License
The configurable branch was copied out of firmata/arduino to it's own repo. firmata-builder and associated instructions needs to be updated to reference the new ConfigurableFirmata repo. It also needs to be updated to not include 'utility' in the path.
EncoderFirmata was changed to 'FirmataEncoder' and now must be downloaded separately along with the Encoder library. These should be listed as dependencies in firmata-builder.
Hello can you please update the builder to version 3.2? I cant compile this for a mega2560 with ethernet shield and one wire sensors.
and I'm too stupid to write myself
feature.js is collection of data for all of the current Firmata features for the configurable firmata architecture. Example of "features" are DigitalInput, DigitalOutput, AnalogInput, I2C, OneWire, etc. This collection will grow and needs to be easy for Firmata feature developers to add data for their new features to. What is the best way to accomplish this? A flat file as it currently is? A separate module for each feature (or a file for core features and separate file for each contributed feature (likely device-specific features), a database or something else?
The collection of features will also be used to populate the firmata builder UI (a selection of features and options that the users chooses to generate the Arduino .ino file).
I bought this ESP8266 board from Amazon: https://www.amazon.com/HiLetgo-Internet-Development-Wireless-Micropython/dp/B010O1G1ES/ref=sr_1_1?ie=UTF8&qid=1517445512&sr=8-1&keywords=esp8266+wifi
I haven't been able to install Configurable Firmata which I built on http://firmatabuilder.com/. It fails with a compilation error:
Arduino: 1.8.5 (Mac OS X), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (3M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 921600"
In file included from /Users/verrol/Downloads/esp8266-firmata/esp8266-firmata.ino:20:0:
/Users/auser/Documents/Arduino/libraries/ConfigurableFirmata/src/ConfigurableFirmata.h:229:21: error: conflicting declaration 'FirmataClass Firmata'
extern FirmataClass Firmata;
^
In file included from /Users/auer/Downloads/esp8266-firmata/esp8266-firmata.ino:4:0:
/Users/auer/Documents/Arduino/libraries/Firmata/Firmata.h:168:30: error: 'Firmata' has a previous declaration as 'firmata::FirmataClass Firmata'
extern firmata::FirmataClass Firmata;
^
Multiple libraries were found for "FirmataDefines.h"
Used: /Users/auser/Documents/Arduino/libraries/Firmata
Not used: /private/var/folders/2t/sn0z41mx4p3fhpmh3rxf1s940000gn/T/AppTranslocation/3BA83EA0-0939-441D-B829-DF94CBBD3B88/d/Arduino.app/Contents/Java/libraries/Firmata
Not used: /private/var/folders/2t/sn0z41mx4p3fhpmh3rxf1s940000gn/T/AppTranslocation/3BA83EA0-0939-441D-B829-DF94CBBD3B88/d/Arduino.app/Contents/Java/libraries/Firmata
Not used: /private/var/folders/2t/sn0z41mx4p3fhpmh3rxf1s940000gn/T/AppTranslocation/3BA83EA0-0939-441D-B829-DF94CBBD3B88/d/Arduino.app/Contents/Java/libraries/Firmata
Not used: /private/var/folders/2t/sn0z41mx4p3fhpmh3rxf1s940000gn/T/AppTranslocation/3BA83EA0-0939-441D-B829-DF94CBBD3B88/d/Arduino.app/Contents/Java/libraries/Firmata
Multiple libraries were found for "Servo.h"
Used: /Users/auser/Library/Arduino15/packages/esp8266/hardware/esp8266/2.4.0/libraries/Servo
Not used: /private/var/folders/2t/sn0z41mx4p3fhpmh3rxf1s940000gn/T/AppTranslocation/3BA83EA0-0939-441D-B829-DF94CBBD3B88/d/Arduino.app/Contents/Java/libraries/Servo
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).
Any help will be greatly appreciated.
Currently ConfigurableFirmata supports serial or ethernet connection types. There are also two different ethernet implementation depending on the driver so both should be supported as options.
Selectig the options
Serial - 115200
DigitalOutputFirmata
FirmataScheduler
with name "Neck"
Created file Neck.zip
Inside the zip, there is a Neck.ino FOLDER, with no Neck.ino sketch
Not sure this project is still supported. I discovered ConfigurableFirmata from Gobots.io.
I attempted to use the Firmata Builder today with the following configuration:
I have installed version 3.2.0 of the ConfigurableFirmata library.
Here is the generated Sketch:
/*
* firmata_simple.ino generated by FirmataBuilder
* Wed Dec 13 2023 19:59:07 GMT-0500 (EST)
*/
#include <ConfigurableFirmata.h>
// uncomment to enable debugging over Serial (9600 baud)
//#define SERIAL_DEBUG
#include "utility/firmataDebug.h"
#include <ESP8266WiFi.h>
#include "utility/WiFiClientStream.h"
#include "utility/WiFiServerStream.h"
#include "secrets.h"
#define WIFI_MAX_CONN_ATTEMPTS 20
#if defined(ESP8266) && defined(SERIAL_DEBUG)
#define IS_IGNORE_PIN(p) ((p) == 1)
#endif
// IP address of remote server
#define REMOTE_SERVER_IP 10, 0, 0, 53
#define NETWORK_PORT 3030
char ssid[] = SECRET_SSID;
char wpa_passphrase[] = SECRET_PASS;
WiFiClientStream stream(IPAddress(REMOTE_SERVER_IP), NETWORK_PORT);
int connectionAttempts = 0;
bool streamConnected = false;
#include <DigitalInputFirmata.h>
DigitalInputFirmata digitalInput;
#include <DigitalOutputFirmata.h>
DigitalOutputFirmata digitalOutput;
#include <AnalogInputFirmata.h>
AnalogInputFirmata analogInput;
#include <AnalogOutputFirmata.h>
AnalogOutputFirmata analogOutput;
#include <Wire.h>
#include <I2CFirmata.h>
I2CFirmata i2c;
#include <FirmataExt.h>
FirmataExt firmataExt;
#include <AnalogWrite.h>
#include <FirmataReporting.h>
FirmataReporting reporting;
void systemResetCallback()
{
for (byte i = 0; i < TOTAL_PINS; i++) {
if (IS_PIN_ANALOG(i)) {
Firmata.setPinMode(i, ANALOG);
} else if (IS_PIN_DIGITAL(i)) {
Firmata.setPinMode(i, OUTPUT);
}
}
firmataExt.reset();
}
void hostConnectionCallback(byte state)
{
switch (state) {
case HOST_CONNECTION_CONNECTED:
DEBUG_PRINTLN("TCP connection established");
break;
case HOST_CONNECTION_DISCONNECTED:
DEBUG_PRINTLN("TCP connection disconnected");
break;
}
}
void printWiFiStatus()
{
if (WiFi.status() != WL_CONNECTED) {
DEBUG_PRINT("WiFi connection failed. Status value: ");
DEBUG_PRINTLN(WiFi.status());
} else {
DEBUG_PRINTLN("Board configured as a TCP client");
DEBUG_PRINT("Remote TCP server address: ");
DEBUG_PRINTLN("10, 0, 0, 53");
DEBUG_PRINT("SSID: ");
DEBUG_PRINTLN(WiFi.SSID());
DEBUG_PRINT("Local IP Address: ");
IPAddress ip = WiFi.localIP();
DEBUG_PRINTLN(ip);
DEBUG_PRINT("Signal strength (RSSI): ");
long rssi = WiFi.RSSI();
DEBUG_PRINT(rssi);
DEBUG_PRINTLN(" dBm");
}
}
void ignorePins()
{
#ifdef IS_IGNORE_PIN
// ignore pins used for WiFi controller or Firmata will overwrite their modes
for (byte i = 0; i < TOTAL_PINS; i++) {
if (IS_IGNORE_PIN(i)) {
Firmata.setPinMode(i, PIN_MODE_IGNORE);
}
}
#endif
}
void initTransport()
{
// IMPORTANT: if SERIAL_DEBUG is enabled, program execution will stop
// at DEBUG_BEGIN until a Serial conneciton is established
DEBUG_BEGIN(9600);
DEBUG_PRINTLN("Attempting a WiFi connection using the ESP8266 WiFi library.");
DEBUG_PRINTLN("IP will be requested from DHCP ...");
stream.attach(hostConnectionCallback);
DEBUG_PRINT("Attempting to connect to WPA SSID: ");
DEBUG_PRINTLN(ssid);
stream.begin(ssid, wpa_passphrase);
DEBUG_PRINTLN("WiFi setup done.");
while(WiFi.status() != WL_CONNECTED && ++connectionAttempts <= WIFI_MAX_CONN_ATTEMPTS) {
delay(500);
DEBUG_PRINT(".");
}
printWiFiStatus();
ignorePins();
Firmata.begin(stream);
}
void initFirmata()
{
Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
firmataExt.addFeature(digitalInput);
firmataExt.addFeature(digitalOutput);
firmataExt.addFeature(analogInput);
firmataExt.addFeature(analogOutput);
firmataExt.addFeature(i2c);
firmataExt.addFeature(reporting);
Firmata.attach(SYSTEM_RESET, systemResetCallback);
}
void setup()
{
initFirmata();
initTransport();
Firmata.parse(SYSTEM_RESET);
}
void loop()
{
digitalInput.report();
while(Firmata.available()) {
Firmata.processInput();
}
if (reporting.elapsed()) {
analogInput.report();
i2c.report();
}
stream.maintain();
}
FQBN: esp8266:esp8266:generic
Using board 'generic' from platform in folder: /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2
Using core 'esp8266' from platform in folder: /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2
/Users/user/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/mkbuildoptglobals.py "/Applications/Arduino IDE.app/Contents/Resources/app/lib/backend/resources" 10607 /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846 /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core/build.opt /Users/user/src/personal/OmnicronHomelinkHub/firmata/firmata_simple/firmata_simple.ino.globals.h /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/cores/esp8266/CommonHFile.h
default_encoding: UTF-8
Assume aggressive 'core.a' caching enabled.
Note: optional global include file '/Users/user/src/personal/OmnicronHomelinkHub/firmata/firmata_simple/firmata_simple.ino.globals.h' does not exist.
Read more at https://arduino-esp8266.readthedocs.io/en/latest/faq/a06-global-build-options.html
Detecting libraries used...
/Users/user/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 @/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core/build.opt -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/lwip2/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/libc/xtensa-lx106-elf/include -I/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core -c @/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/warnings/none-cppflags -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10607 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_GENERIC" -DARDUINO_BOARD_ID="generic" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/cores/esp8266 -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/variants/generic /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/sketch/firmata_simple.ino.cpp -o /dev/null
Alternatives for ConfigurableFirmata.h: [[email protected]]
ResolveLibrary(ConfigurableFirmata.h)
-> candidates: [[email protected]]
/Users/user/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 @/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core/build.opt -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/lwip2/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/libc/xtensa-lx106-elf/include -I/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core -c @/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/warnings/none-cppflags -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10607 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_GENERIC" -DARDUINO_BOARD_ID="generic" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/cores/esp8266 -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/variants/generic -I/Users/user/Documents/Arduino/libraries/ConfigurableFirmata/src /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/sketch/firmata_simple.ino.cpp -o /dev/null
Alternatives for ESP8266WiFi.h: [[email protected]]
ResolveLibrary(ESP8266WiFi.h)
-> candidates: [[email protected]]
/Users/user/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 @/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core/build.opt -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/lwip2/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/libc/xtensa-lx106-elf/include -I/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core -c @/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/warnings/none-cppflags -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10607 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_GENERIC" -DARDUINO_BOARD_ID="generic" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/cores/esp8266 -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/variants/generic -I/Users/user/Documents/Arduino/libraries/ConfigurableFirmata/src -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/libraries/ESP8266WiFi/src /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/sketch/firmata_simple.ino.cpp -o /dev/null
Alternatives for Wire.h: [[email protected]]
ResolveLibrary(Wire.h)
-> candidates: [[email protected]]
/Users/user/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 @/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core/build.opt -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/lwip2/include -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/sdk/libc/xtensa-lx106-elf/include -I/private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/core -c @/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/tools/warnings/none-cppflags -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10607 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_GENERIC" -DARDUINO_BOARD_ID="generic" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/cores/esp8266 -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/variants/generic -I/Users/user/Documents/Arduino/libraries/ConfigurableFirmata/src -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/libraries/ESP8266WiFi/src -I/Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/libraries/Wire /private/var/folders/ft/c5x1nn7j5qb5g8w17nd779r80000gn/T/arduino/sketches/A6D9F836FCC3B2090B3261FE9B6B2846/sketch/firmata_simple.ino.cpp -o /dev/null
/Users/user/src/personal/OmnicronHomelinkHub/firmata/firmata_simple/firmata_simple.ino:54:10: fatal error: AnalogWrite.h: No such file or directory
54 | #include <AnalogWrite.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
Alternatives for AnalogWrite.h: []
ResolveLibrary(AnalogWrite.h)
-> candidates: []
Using library ConfigurableFirmata at version 3.2.0 in folder: /Users/user/Documents/Arduino/libraries/ConfigurableFirmata
Using library ESP8266WiFi at version 1.0 in folder: /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/libraries/ESP8266WiFi
Using library Wire at version 1.0 in folder: /Users/user/Library/Arduino15/packages/esp8266/hardware/esp8266/3.1.2/libraries/Wire
exit status 1
Compilation error: AnalogWrite.h: No such file or directory
Let me know if you need any additional information. Excited to write some Go code for an ESP8266 device!
User should be able to select either board or architecture. This will generate a Firmata sketch that properly supports the selected board. For many boards this would not make any specific changes, however for ATmega32u4 boards the serial port would be handled properly. It would be helpful in knowing if the selected board has enough memory to support all of the selected features and if not, warn the user. Also if conflicting features are selected (use the same HW timer for example) then the user could be warned of this as well.
An example of a board would be Leonardo, Uno, etc. This will be a long list.
An example of architecture would be ATmega32u4, ATmega328p, etc. This would be a shorter list, but fewer users may be aware of what microcontroller their board actually uses.
Perhaps the user facing list is a list of all supported boards, but internally compare architectures.
I have an ethernet shield that uses an ENC28J60 controller. However I am not able to get it to work. I'm not sure if it's an issue in the particular shield (suspect) or in the UIPEthernet library.
If anyone has any luck with an ENC28J60-based shield or board, please report. If it turns out there are no solutions I will remove ENC28J60 from the controller selections.
Leaning towards mocha/chai/sinon since I'm familiar with them.
The data structure passed to builder.build(data)
will need to be in a specific format. What is a good strategy to enforce this other than providing an example file to reference?
Wi-Fi was recently added to ConfigurableFirmata: firmata/ConfigurableFirmata@4ecc460
Related to my comment in firmata/arduino#97 (comment)
This repo is for the firmata-builder core functionality. Any UI (web or cli) will likely be a separate repo. How to structure this project as a standalone module but still provide an example or two?
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.