Mover Servo y Encender led a la ves

Hola, into hacer que el arduino mueva un servo y prenda un led, pero cuando agrego el codigo del led y mando la señal para que se mueva el servo a veces solo prende el led y el servo no hace el movimiento, este es el codigo que uso:

#include <Servo.h>
Servo servo1;
int pos1 = 90;

void setup()
{
Serial.begin(9600);
Serial.flush();
servo1.attach(2);
servo1.write(0);
servo1.write(pos1);
delay(15);
pinMode(13,OUTPUT);

void loop()
{
if (Serial.available() > 0) {
data = Serial.read();
}
if ((data == ‘E’) || (data == ‘e’)) {
pos1 += 10;
servo1.write(pos1);
delay(15);
}
if ((data == ‘F’) || (data == ‘f’)) {
pos1 -= 10;
servo1.write(pos1);
delay(15);
}

if (Serial.available()) {
data = Serial.read();
}
if ((data == ‘F’) || (data == ‘f’)) {
digitalWrite(13, HIGH);
delay(15);
digitalWrite(13, LOW);
delay(15);
}

Podrian decirme que esta mal? es todo y gracias de antemano.

Primero comentar que arriba pones:
servo1.write(0);
servo1.write(pos1);

Pos1=90 por lo que mandas 2 instrucciones seguidas de 0 y 90 no se si tiene alguna utilidad pero yo quitaría una de las dos.

Por otra parte, en el programa yo quitaría el segundo

if (Serial.available()) {
data = Serial.read();
}

que has puesto. De esa manera creo que te funcionaría. Salu2

@Eduort

yOPERO: Tienes que usar lo que se llama time triggered patters.

Básicamente es crear un control de tiempo mediante un tic, luego ejecutas cada función cuando lo necesites. No se ejecutan en paralelo real pero es una simulación cercana.

Aquí tienes una explicación buenísima en español para crear un tic en arduino escrita por IgorR: http://real2electronics.blogspot.com.es/2011/01/timer-2.html

Y aquí un libro en inglés con explicación exhaustiva de Time-Triggered Patterns http://www.tte-systems.com/books/pttes

Resumiendo tienes que usar interrupciones y quitar cualquier delay.

yOPERO:
@Eduort

yOPERO:
Tienes que usar lo que se llama time triggered patters.

Básicamente es crear un control de tiempo mediante un tic, luego ejecutas cada función cuando lo necesites. No se ejecutan en paralelo real pero es una simulación cercana.

Aquí tienes una explicación buenísima en español para crear un tic en arduino escrita por IgorR:
http://real2electronics.blogspot.com.es/2011/01/timer-2.html
No le entendi mucho a eso, pero segun

Y aquí un libro en inglés con explicación exhaustiva de Time-Triggered Patterns
http://www.tte-systems.com/books/pttes

Resumiendo tienes que usar interrupciones y quitar cualquier delay.

No podrias decirme un pequeño ejemplo de como hacer eso? esque no tengo mucha experiencia con el arduino y no entendi muy bien lo que dice ahi, y otra duda que tengo, no se podria hacer que se hagan las funcionas seguidas pero con una pequeña diferencia de tiempo?

Si has leído en enlace que te he dado:

http://real2electronics.blogspot.com.es/2011/01/timer-2.html

Verás que tiene un ejemplo de cómo usar el Timer2 para controlar diferentes tareas. En ese ejemplo, conmuta el estado de dos pines (pin 13 y pin 2 de Arduino) a dos frecuencias diferentes.

Si tienes poca experiencia te recomendaría probar lo siguiente:

http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

Si no te quieres poner a controlar los registros del Timer y las señales que hay que enviar al servo, otra posibilidad es que en vez que esté parpadeando todo el rato el led, haz que se encienda cuando empiece a moverse el servo y cuando se pare se apague el led. Mola más que parpadee pero tiene mucho trabajo.

ionhs: Si no te quieres poner a controlar los registros del Timer y las señales que hay que enviar al servo, otra posibilidad es que en vez que esté parpadeando todo el rato el led, haz que se encienda cuando empiece a moverse el servo y cuando se pare se apague el led. Mola más que parpadee pero tiene mucho trabajo.

Como podria hacer eso? hasta ahora solo logre que cuando envio la señal de movimiento se prenda el LED, pero el problema es que se paga hasta que vuelvo a mandar la señal de que se mueva el servo, entonces podria quedarse encendido aunque el servo ya no se mueva.

Ya no se exactamente lo que quieres hacer pero empieza quitando el segundo

if (Serial.available()) {          
    data = Serial.read();
   }
   if ((data == 'F') || (data == 'f')) {

que sirve para encender y apagar los leds y mete las instrucciones de encender y apagar los leds donde mandas moverse al servo.

digitalWrite(13, HIGH);
servo1.write(pos1);
digitalWrite(13, LOW);

Esto es una idea luego puedes modificarlo a tu gusto. Salu2