помогите найти ошибку
- Войдите на сайт для отправки комментариев
есть код, при проверке пишет : expected constructor, destructor, or type conversion before 'for'
сам код :
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10,
11, 12, 13};
int ledDelay;
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
int potPin = 2;
pin for the potentiometer
void setup() {
for (int x=0; x<10; x++) {
pinMode(ledPin[x], OUTPUT); }
changeTime = millis();
}
void loop() {
ledDelay = analogRead(potPin);
last change
if ((millis() - changeTime) >
ledDelay) {
changeLED();
changeTime = millis();
}
}
void changeLED() {
for (int x=0; x<10; x++) {
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED],
HIGH);
currentLED += direction;
end
if (currentLED == 9) {direction =
-1;}
if (currentLED == 0) {direction = 1;}
}
Все от того что вы откуда-то копировали код не понимая что в этом коде, я закомментировал те строки, на которые ругается компилятор, но не факт, что это поможет.
Определяйте функции ДО их использования (или хотя бы объявляйте - почитайте про синтаксис языка с)
Иначе говоря, ставте "Setup" и "Loop" последними в тексте программы.
Определяйте функции ДО их использования (или хотя бы объявляйте - почитайте про синтаксис языка с)
Иначе говоря, ставте "Setup" и "Loop" последними в тексте программы.
Это не важно, в какой последовательности объявлять функции. Это все равно, что соблюдать последовательность объявления глобальных переменных.
Я наоборот привык, что сначала идет setup и loop (main), а уже потом все остальное.
Определяйте функции ДО их использования (или хотя бы объявляйте - почитайте про синтаксис языка с)
Иначе говоря, ставте "Setup" и "Loop" последними в тексте программы.
Это не важно, в какой последовательности объявлять функции. Это все равно, что соблюдать последовательность объявления глобальных переменных.
Я наоборот привык, что сначала идет setup и loop (main), а уже потом все остальное.
Формально - вы правы. Практически - есть баг ArduinoIDE. Иногда действительно не хочет в упор видеть функцию объявленную ниже. Я лично натыкался. Когда
Причем именно вот прямо так, для теста и писал эти функции. Что-бы уж точно убедится что "проблема в этом". Менял их местами - начинало компилится. На аглоязычных форумах видел что "известная бага".
Поэтому, кстати, когда используешь несколько .ino файлов - иногда не желает видеть функции из одного файла в другом. Смотря по тому в каком порядоке (кажись по алфавиту) оно слепило их в один скетч.
Определяйте функции ДО их использования (или хотя бы объявляйте - почитайте про синтаксис языка с)
Иначе говоря, ставте "Setup" и "Loop" последними в тексте программы.
Это не важно, в какой последовательности объявлять функции. Это все равно, что соблюдать последовательность объявления глобальных переменных.
Я наоборот привык, что сначала идет setup и loop (main), а уже потом все остальное.
Формально - вы правы. Практически - есть баг ArduinoIDE. Иногда действительно не хочет в упор видеть функцию объявленную ниже. Я лично натыкался. Когда
Причем именно вот прямо так, для теста и писал эти функции. Что-бы уж точно убедится что "проблема в этом". Менял их местами - начинало компилится. На аглоязычных форумах видел что "известная бага".
Поэтому, кстати, когда используешь несколько .ino файлов - иногда не желает видеть функции из одного файла в другом. Смотря по тому в каком порядоке (кажись по алфавиту) оно слепило их в один скетч.
У меня без проблем компилится что в ArduinoIDE 1.0, что в ArduinoIDE 0023 (если убрать лишние скобки "()" в первой строке), может в более ранних версиях это и наблюдается.
У меня без проблем компилится что в ArduinoIDE 1.0, что в ArduinoIDE 0023 (если убрать лишние скобки "()" в первой строке), может в более ранних версиях это и наблюдается.
У меня тоже. На пустом скетче с loop() и setup() - компилится. Но, темне-менне. На большом, с несколькими файлами - имело место быть.
На то она и бага что нужно что-бы "звезды сошлись". Выискивать сейчас скетч - я не буду. Да и влюбом случае это был "код для клиента", так что не смогу его постить.
Прийдется поверить мне на слово (если хотите). Вот в итоге была ситуация.
Имеем компилирующийся скетч.
Добавляеем в главный файл вот эти две функции и именно в таком виде. Перед setup() (больше нигде они не использовались, писались именно что-бы убедится в этом и офигеть). Не компилируются (неизвестноей имя ttt2()) . Меняем меcтами - компилируется. Имена ttt и ttt2 специально брались что-бы гарантированно нигде не конфликтануть с имеющимся скетчем.
Вообщем хотите верте, хотите нет. Моя душа тоже против этого протестует, но лично я теперь знаю, что "порядок" иногда таки играет значение.
Проблему видел и на 1.0 и на 1.0.1 (специалино ставил проверить может в ней уфиксали)
Кстати о багах, есть такой баг в ArduinoIDE 1.0 не работает Serial.flush() - буфер не очищается!
вот пример кода:
если отправить более одного символа в сериал-монитор, то вернуться должен только первый символ, в 0023 так и происходит, а в 1.0 выводит все отправленные символы.