Вынести свои функции из скетча в отдельные файлы
- Войдите на сайт для отправки комментариев
Втр, 29/10/2013 - 15:19
Хочу разнести основное тело скетча и функции по разным файлам - мне так удобнее - одновременно на трех мониторах отлаживать код, чем постоянно скроллить туды-сюды.
Для примера кратенький рабочий скетч:
[code]#define PAUSE 100
int led1 = 13;
int led2 = 9;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
blinkLed1();
blinkLed2();
}
void blinkLed1() {
digitalWrite(led1, HIGH);
delay(PAUSE);
digitalWrite(led1, LOW);
delay(PAUSE);
}
void blinkLed2() {
digitalWrite(led2, HIGH);
delay(PAUSE);
digitalWrite(led2, LOW);
delay(PAUSE);
}[/code]
Делаю по [url=http://arduino.cc/en/Hacking/BuildProcess]этой статье[/url] (с английским не очень дружу, увы).
Т.е. в файле Sketch.ino оставляю инициализацию, setup() и loop():
[code]#define PAUSE 100
int led1 = 13;
int led2 = 9;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
blinkLed1();
blinkLed2();
}
// Подключаем BlinkLed1.c
#include "BlinkLed1.c"
// Подключаем BlinkLed2.c
#include "BlinkLed2.c"
[/code]
а каждую функцию сохраняю в отдельные файлы functionN.c, которые лежат там же, где и Sketch.ino
Пример файла с функцией:
[code]#include "Arduino.h"
void blinkLed1() {
digitalWrite(led1, HIGH);
delay(PAUSE);
digitalWrite(led1, LOW);
delay(PAUSE);
}
[/code]
Но не выходит, где-то что-то пропущено - когда файл цельный, все компилируется, когда разделяю - выходит ошибка:
error: 'blinkLed1' was not declared in this scope
error: 'blinkLed2' was not declared in this scope
Где дальше копать?
Это ваш первый файл, основной:
Это первый ТАВ:
А это второй ТАВ:
А что и где не работает?
ТАВ = это кнопка справа...
кхм.... а у меня ТАБ слева..... :)
А у меня вообще таба на телефоне нет.
Значит ли это, что можно называть файлы вообще отфонарно типа fkgjdghd.ino, главное покидать в один каталог, и чтобы главный (содержащий функции loop и setup) назывался так же как каталог? Не дописывая в него #include fkgjdghd?
Почти так, только имена файлов не должны начинаться с цифры
и их сортировка будет происходить по алфавиту.
Расширение ещё может быть и *.h