Para que se usa EEPROM.H en este sketch???

Hola a todos,

Estoy analizando este codigo que si no me equivoco sirve para encender un color determinado en un led rgb via bluetooth. Lo que veo es que hace uso de la libreria EEPROM.H y no se muy bien porque? Alguien me echa una manita?

/*
//librerias
#include <EEPROM.h>

int ledRojo = 10;
int ledVerde=11;
int ledAzul=9;
int ledRojo2 = 5;
int ledVerde2=6;
int ledAzul2=3;
int red;
int green;
int blue;
int accion=0;
int bluetooth=2;
int puerto=0;
int primeraVez;
int pinDefecto=1234;

void setup()
{
pinMode(bluetooth,OUTPUT);
digitalWrite(bluetooth,HIGH);

Serial.begin(9600);

primeraVez=EEPROM.read(0);

if(primeraVez!=1){
color(0,255,255);
programer(pinDefecto);
EEPROM.write(0,1);
color(255,0,255);
}
}

void loop()
{

while (Serial.available() > 0) {

accion = Serial.parseInt();

if(accion==1){
puerto=Serial.parseInt();
red = Serial.parseInt();
green = Serial.parseInt();
blue = Serial.parseInt();
}
if (Serial.read() == '\n') {
color(red,green,blue);
}
}
if(accion==2){
color(0,255,255);
delay(500);
color(255,0,255);
delay(500);
color(255,255,0);
delay(500);
}
if(accion==3){
int pin = Serial.parseInt();

if (Serial.read() == '\n') {
color(255,0,0);
programer(pin);
accion=0;
color(0,255,0);
}

}

}

void programer(int pin){
digitalWrite(bluetooth,LOW);
delay(250);
digitalWrite(bluetooth,HIGH);
delay(5000);
Serial.print("AT");
delay(1000);
Serial.print("AT+NAMEOMNIBLUG");
delay(1000);
Serial.print("AT+PIN"+pin);
delay(1000);
digitalWrite(bluetooth,LOW);
delay(250);
digitalWrite(bluetooth,HIGH);
}

void color(int rojo, int verde, int azul){

if(puerto==1){
analogWrite(ledRojo, rojo);
analogWrite(ledVerde, verde);
analogWrite(ledAzul, azul);
}
if(puerto==2){
analogWrite(ledRojo2, rojo);
analogWrite(ledVerde2, verde);
analogWrite(ledAzul2, azul);
}
if(puerto==3){
analogWrite(ledRojo, rojo);
analogWrite(ledRojo2, rojo);
analogWrite(ledVerde, verde);
analogWrite(ledVerde2, verde);
analogWrite(ledAzul, azul);
analogWrite(ledAzul2, azul);

}

}

//Fin

Gracias a todos

Parece ser que graba un 1 en la primera posicion de la eprom, para controlar si se ha enviado unos comandos, que parecen de configuración, al módulo bluetooth. Esos comandos, se envian solo una vez, es decir, solo la primera vez que se ejecuta el codigo. Despues, graba el 1, y las siguientes veces que se ejecuta, lee que hay ese 1 en la eprom, que significa que ya se enviaron esos comandos,y no se vuelven a envuar mas.

Y tiene algun sentido hacer eso para controlar via bluetooth el color RGB de un LED?
Se podria eliminar algo de codigo? Quiero añadir despues codigo para controlar un termistor y alguna cosilla mas,por lo que me interesaria hacer esta parte del codigo lo mas liviana posible para luego añadir lo otro.
Podriais darme algun consejo para arreglar esta parte del codigo?

Edit 14/08/2014 17:17

Entonces si lo unico que quiero es mandar desde una app al Arduino para que encienda un color determinado o otro en el LED RGB, bastaria con dejar el codigo asi? Hay algun error?

A mi en el IDE me salta como error varios identificadores no declarados "color" "programer" "ledRojo2" "ledVerde2" y "ledAzul2"

int ledRojo = 10;
int ledVerde=11;
int ledAzul=9;
int red;
int green;
int blue;
int accion=0;
int bluetooth=2;
int puerto=0;
int primeraVez;
int pinDefecto=1234;

void setup()
{
pinMode(bluetooth,OUTPUT);
digitalWrite(bluetooth,HIGH);

Serial.begin(9600);
}

void loop()
{

while (Serial.available() > 0) {

accion = Serial.parseInt();

if(accion==1){
puerto=Serial.parseInt();
red = Serial.parseInt();
green = Serial.parseInt();
blue = Serial.parseInt();
}
if (Serial.read() == '\n') {
color(red,green,blue);
}
}
if(accion==2){
color(0,255,255);
delay(500);
color(255,0,255);
delay(500);
color(255,255,0);
delay(500);
}
if(accion==3){
int pin = Serial.parseInt();

if (Serial.read() == '\n') {
color(255,0,0);
programer(pin);
accion=0;
color(0,255,0);
}

}

}

void programer(int pin){
digitalWrite(bluetooth,LOW);
delay(250);
digitalWrite(bluetooth,HIGH);
delay(5000);
Serial.print("AT");
delay(1000);
Serial.print("AT+NAMEOMNIBLUG");
delay(1000);
Serial.print("AT+PIN"+pin);
delay(1000);
digitalWrite(bluetooth,LOW);
delay(250);
digitalWrite(bluetooth,HIGH);
}

void color(int rojo, int verde, int azul){

if(puerto==1){
analogWrite(ledRojo, rojo);
analogWrite(ledVerde, verde);
analogWrite(ledAzul, azul);
}
if(puerto==2){
analogWrite(ledRojo2, rojo);
analogWrite(ledVerde2, verde);
analogWrite(ledAzul2, azul);
}
if(puerto==3){
analogWrite(ledRojo, rojo);
analogWrite(ledRojo2, rojo);
analogWrite(ledVerde, verde);
analogWrite(ledVerde2, verde);
analogWrite(ledAzul, azul);
analogWrite(ledAzul2, azul);

}

}

//Fin