I've trying to write my code in plain C++ dropping out the Arduino's IDE. Although I've succeed in compiling the code, whenever I try to upload it to the board it doesn't run, seems that it stucks at some unknown point.
After that, everytime I try to upload a new code to the board it stops responding and avrdude throws this message:
$ ino upload -m leonardo -p /dev/ttyACM1
/dev/ttyACM1 doesn't exist. Is Arduino connected?
It doesn't matter if I unplug and then plug again the board, that message is still showing up.
In order to restart the board, I open the Arduino IDE and then I upload any sketch, then the board comes to live again.
The first time I tried overriding the main() function and the program didn't run I thought it was the tool I was using at that moment, arduino.mk, the one that was doing something strange.
Then I tried the ino tool, but the result was the same.
I don't think avrdude is failing because it actually uploads the .hex to the board.
My original main() code was:
#include <Arduino.h>
const int LED_PIN = 13;
int main(void)
{
pinMode(LED_PIN, OUTPUT);
while (1)
{
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(900);
}
return 0;
}
Then I tried to mimic the one that comes with Arduino:
#include <Arduino.h>
const int LED_PIN = 13;
int main(void)
{
pinMode(LED_PIN, OUTPUT);
#if defined (USBCON)
USBDevice.attach();
#endif
while (1)
{
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(900);
if (serialEventRun) serialEventRun();
}
return 0;
}
Sadly, with both codes the board gets stucked at some point.
While I figure out how to solve this issue I've been exercising this solution inside a sketch:
const int LED_PIN = 13;
void setup() {
}
void loop() {
pinMode(LED_PIN, OUTPUT);
while (1)
{
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(900);
}
}
Any ideas that led me to a solution? Thank you!