Arduino Due/Mega by Arduino
Firmware
The Arduino Mega 2560 is an excellent high-I/O microcontroller for robotics and automation projects. With this firmware, the Mega becomes an ARC-compatible capability controller, allowing ARC to command servos, read sensors, control motors, and interface with serial devices — all through a single USB connection and without writing Arduino sketches for every project.
The Mega stands out for its large number of pins, multiple hardware UARTs, and 5V sensor compatibility. When paired with ARC, you can simultaneously operate:
- 8 ADC (Analog) inputs
- 13 PWM outputs
- 21 Digital I/O ports
- 24 Servo outputs
This makes the Mega suitable for complex robots with many sensors, actuators, indicators, and serial communication modules — all coordinated through ARC's UI, control blocks, and AI behaviors.
ADC Inputs Mapping (Analog)
ARC can read up to 8 analog inputs on the Mega, mapped as ADC0–ADC7. Common uses include potentiometers, distance sensors, light sensors, force sensors, and more.
(ARC → Arduino) ADC0 = A0 ADC1 = A1 ADC2 = A2 ADC3 = A3 ADC4 = A4 ADC5 = A5 ADC6 = A6 ADC7 = A7
PWM Outputs Mapping
The Mega provides 13 hardware PWM channels for speed control, dimming LEDs, fan control, ESCs, and other applications. ARC maps these as D0–D12:
(ARC → Arduino) D0 = 2 D1 = 3 D2 = 4 D3 = 5 D4 = 6 D5 = 7 D6 = 8 D7 = 9 D8 = 10 D9 = 13 D10 = 44 D11 = 45 D12 = 46
Digital I/O Ports Mapping
ARC supports up to 24 digital I/O ports. The Mega exposes 21 ports mapped as D0–D20. These can drive relays, switches, LEDs, logic signals, and also support software serial transmit for simple UART modules.
(ARC → Arduino) D0 = 2 D1 = 3 D2 = 4 D3 = 5 D4 = 6 D5 = 7 D6 = 8 D7 = 9 D8 = 10 D9 = 11 D10 = 12 D11 = 13 D12 = 44 D13 = 45 D14 = 46 D15 = 62 D16 = 63 D17 = 64 D18 = 65 D19 = 66 D20 = 67
Servo Outputs Mapping
Up to 24 servo outputs are exposed to ARC using the Mega’s Servo library. Perfect for animatronics, robot arms, pan/tilt systems, and legged robots.
(ARC → Arduino) D0 = 22 D1 = 23 D2 = 24 D3 = 25 D4 = 26 D5 = 27 D6 = 28 D7 = 29 D8 = 30 D9 = 31 D10 = 32 D11 = 33 D12 = 34 D13 = 35 D14 = 36 D15 = 37 D16 = 38 D17 = 39 D18 = 40 D19 = 41 D20 = 42 D21 = 43 D22 = 68 D23 = 69
I/O Expansion (Recommended)
Since the Mega exposes raw pin headers, using a sensor or servo shield makes wiring dramatically easier and reduces cable strain. A commonly used option is the:
Get Started
Flashing the firmware is straightforward. Follow the tutorial below to compile and upload it to your Mega:
Firmware Upload Tutorial
Hello all.
This might be a dumb question. Can I use the barrel power input and the USB at the same time using the Mega Sensor Shield?
Thanks in advance.
That’s actually a good question. I would think the answer is yes. Because barrel jack receptacles have these little switches that open when something is connected. This allows the power to switch from one thing to the barrel jack.
but - because we’re talking about open source I can’t guarantee it’s wired correctly. It’s not often that I see open source or China diy stuff designed correctly.
so uhm my answer is "I’m not sure"
@DJ,
Can I use the Ultrasonic sonar (4 wire) SR04' on both digital and servo ports?
Thanks in advance.
Digital ports can be used for sr04's. servo ports can only be used for servos.
Thanks DJ for your answers.
BTY, I looked on several Arduino chat boards. I could not find a definitive answer regarding using the power barrel and USB cable at the same time. Several people have said they have no problem, others say it burns out the Arduino board.
A few others have said they just disconnected or cut the red power cable on the USB cable and do not have a problem.
i’m going to cut the USB red power Wire and use the power barrel. I want to use battery power and not my tableta USB port for power to run the Arduino mega only for ARC commands.
Thanks again for your answers. cheers
You can try something. Plug a barrel jack in. And then check continuity between the usb red wire and the center pin of the barrel jack connector.

@DJ,if I understand you correctly, this is what I did. I connected the USB to the Arduino and my pcand power to the barrel jack. I then put my multimeter lead to the red wire and The other lead to the center of the barrel jack and got a beep. I think this is what you are asking.
Edited: I do have two Arduino mega’s so I could try it with and with out the red usb wire cut. I just don’t want the pc usb powering the Arduino. As I mentioned before, I want the battery to power the Arduino so it does not drain the power of my pc tablet. Thanks.
Do you have a plug in the barrel jack when you got the beep?