День добрый. Приобрел Arduino Due в Амперке. Попробовал залить тестовый скетч, среда Arduino IDE 1.5.6-r2. Пример взял из стандартной IDE, Blink without Delay. Питается от USB. Код на всякий случай. Код (Text): /* Blink without Delay Turns on and off a light emitting diode(LED) connected to a digital pin, without using the delay() function. This means that other code can run at the same time without being interrupted by the LED code. The circuit: * LED attached from pin 13 to ground. * Note: on most Arduinos, there is already an LED on the board that's attached to pin 13, so no hardware is needed for this example. created 2005 by David A. Mellis modified 8 Feb 2010 by Paul Stoffregen modified 11 Nov 2013 by Scott Fitzgerald This example code is in the public domain. http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay */ // constants won't change. Used here to set a pin number : const int ledPin = 13; // the number of the LED pin // Variables will change : int ledState = LOW; // ledState used to set the LED // Generally, you shuould use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated // constants won't change : const long interval = 1000; // interval at which to blink (milliseconds) void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { // here is where you'd put code that needs to be running all the time. // check to see if it's time to blink the LED; that is, if the // difference between the current time and last time you blinked // the LED is bigger than the interval at which you want to // blink the LED. unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) ledState = HIGH; else ledState = LOW; // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } } Работает не стабильно, после каждого 16-го загорания гаснет и тут же вспыхивает. Далее опять 15 раз нормально и все повторяется. Смена порта USB и смена порта ардуины, в том числе и на 13 (используется светодиод на плате ардуины) , ничего не меняет.
А если так попробовать? Код (Text): const int ledPin = 13; // the number of the LED pin int ledState = LOW; // ledState used to set the LED unsigned long previousMillis = 0; // will store last time LED was updated const long interval = 1000; // interval at which to blink (milliseconds) void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { if(millis() - previousMillis >= interval) { if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(ledPin, ledState); previousMillis = millis(); // А если вот так? } }
Спасибо за помощь, но не помогло. Результат точно такой же, как и из примера, взятого из IDE. На другой плате удалось проверить?
Пока нет. @nailxx расказывал, что у него были непонятки с due из-за бага в gcc в какой-то версии Linux. Но тут пока не понятно что. Завтра надеюсь вопроизвести. Упс, уже сегодня)
У меня W7 64 Техподдержка обещала проверить на другой плате. Возможно, новая IDE генерит для DUE некорректный код. Либо плата кривая.