Organizar código en otros archivos

Estoy escribiendo un programa que utiliza un modulo gps, uno gsm, uno bluetooth, un teclado y un lcd.

Como uds podrán imaginar el programa empieza a crecer. Hay decenas de funciones y a pesar de agrupar las que emplea el gps en un lugar, las que empleo para el gsm en otro lugar del archivo etc, el archivo se vuelto un dolor de cabeza y es difícil su mantenimiento.

He visto en algun lado que puedo agrupar las funciones en otros archivos e incluirlas de la siguiente forma, ej:

#include "MyLcd.c"
#include "MyGsm.c"

Desafortunadamente la información es muy escueta y no he encontrado más información de como hacerlo de forma correcta.

Empece a hacer una pequeñas pruebas con el ejemplo Blink que trae arduino. Los tres archivos que cree son:

Blink.ino Su contenido es este:

#include "definiciones.c"
#include "funciones.c"

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(Led, ACTIVO);
}

// the loop function runs over and over again forever
void loop() {
  LedOn();   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  LedOff();
  delay(1000);                       // wait for a second
}

cree un archivo que contiene las definiciones. Su nombre es "definiciones.c" y su contenido es este:

int Led = 13;
int Rele = A1;
boolean ACTIVO = HIGH;
boolean INACTIVO = LOW;

y finalmente cree el archivo funciones.c que contiene las funciones que encienden y apagan un led. El contenido del archivo es:

void LedOn(){
	digitalWrite(Led, ACTIVO);
}
void LedOff(){
	digitalWrite(Led, INACTIVO);
}

Al compilar el proyecto, el compilador arroja diferentes mensajes como:

error: 'LOW' undeclared here (not in a function)

Les agradecería una explicación de como organizar el código en otros archivos.

Saludos.

El tema es el siguiente, tienes que crear archivos .h para la inclusión de las macros y el prototipo de funciones o clases y archivos .c o .cpp para las funciones o los miembros de las clases. El código, en los .h, debe estar dentro de una macro #ifndef para evitar la definiciones cíclicas. Lee el documento oficial de arduino para la creación de librerías. Lo ideal para mantener el código ordenado es crear, por ejemplo una librería para GPS, para GSM, etc. Lo que en arduino se llama librerías son realmente clases de c++.
Tendrás todas las funciones, de por ejemplo el GPS, en dos archivos separados, el include y el cpp.

Aquí puedes ver un ejemplo.