How ACC is used for programming Arduino?
Unlike Arduino IDE or other programming environments for Arduino ecosystem, Arduino Control Center does not use C++ code, neither user has the option to write C++ code and then, by using C++ compiler, convert this code to Arduino hardware understandable format and then upload this binary file to Arduino hardware, basically ATMEL microcontrollers.
ACC already has set of these binary files(firmware) included in installation or archived distribution package.
With built-in firmware uploader, user can prepare Arduino board for usage(controlling Inputs and Outputs) and data visualisation without writing single line of code.
Why Arduino Control Center has so many firmware listed in Upload Firmware window?
- By default, each firmware has built in support for following elements, controlled from Arduino Control Center:
INPUTS: Switches, Buttons, Push Buttons, ANALOG sensors(any 3_wire GND,VCC,DATA), LDR (light), LM35(Temperature), ML8511(UV), TEMT6000(Light) sensors
OUTPUTS: PWM (Pulse With Modulation), DIGITAL OUTPUTS(HI - LOW state outputs for toggling relays, led)
LOGIC: Logic commands - IF, THEN, AND, OR, AND NOT, OR NOT
I2C_Slave: I2C Master - Slave communication between Master(ACC controlled Arduino) and max 2(two)Slave arduino devices
ANALOG: MAP RANGES(Integer, Float) values, expanded Arduino map() function
For example, if you want to use the most popular digital temperature sensors DS18B20, and send these data over the network with classic Arduino Ethernet shield based on Wiz5100 chip, in firmware has to be included libraries for this hardware.
With very limited flash(and RAM) free space in ATMEL ATmega328p chip, with all required libraries nothing else can be added.
So, if you want other types of configuration, there are other types of firmware with different configurations.
Starting from version 3.0.0, each Arduino Control Center firmware has built-in support for Master-Slave communication.
In short, you can easily expand existing firmware by connecting another Arduino device(Slave) over I2C bus(3 wires between Arduino boards), and send data to Arduino Control Center over Master Arduino board. These data can be dozen of sensor types not supported by default in Arduino Control Center, but values form these sensors can be used for plotting charts, logic for Outputs, visualisation in Arduino Control Center desktop and Web, send over MQTT protocol supported in ACC to public or local MQTT Server(Broker), etc...
Here is the link Lanmisoft Arduino Git hub with code for Slave Arduino boards which can be adjusted for your project requirements.
What about Arduino MEGA board, with much more flash and ram available?
- Arduino MEGA board has all supported sensors and elements included in each firmware.
There is a much less firmware compiled for MEGA boards, divided for different Ethernet chip and RTC(Real Time Clock) support. Expanding and adding support for other elements is much easier.
What about other Arduino boards? Why they are not supported?
Please read here about this topic.