Вынести свои функции из скетча в отдельные файлы

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013
Хочу разнести основное тело скетча и функции по разным файлам - мне так удобнее - одновременно на трех мониторах отлаживать код, чем постоянно скроллить туды-сюды.
 
Для примера кратенький рабочий скетч:
#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);
}
Делаю по [url=http://arduino.cc/en/Hacking/BuildProcess]этой статье[/url] (с английским не очень дружу, увы).
Т.е. в файле Sketch.ino оставляю инициализацию, setup() и loop():
#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"
а каждую функцию сохраняю в отдельные файлы functionN.c, которые лежат там же, где и Sketch.ino
Пример файла с функцией:
#include "Arduino.h"

void blinkLed1() {
  digitalWrite(led1, HIGH); 
  delay(PAUSE);
  digitalWrite(led1, LOW);
  delay(PAUSE);
}

 

Но не выходит, где-то что-то пропущено - когда файл цельный, все компилируется, когда разделяю - выходит ошибка:
error: 'blinkLed1' was not declared in this scope
error: 'blinkLed2' was not declared in this scope
 
Где дальше копать?
com
Offline
Зарегистрирован: 06.09.2013

переименуйте file.c в file.ino, и все получится

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Спасибо, получилось.

Надо еще #include "BlinkLed1.c" и #include "Arduino.h" исключить из кода, само подхватывается.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011