вот с таймером вне кейса - отслеживает состояние пина
#include <Servo.h>
Servo servoX;
unsigned long time = millis();
boolean pin3;
boolean pin3_B;
void setup()
{
servoX.attach(4);
servoX.write(90);
Serial.begin(9600);
pinMode(3, OUTPUT);
}
void loop()
{
while (Serial.available() > 0)
{
int cmd = Serial.read();
int x = servoX.read();
pin3= digitalRead(3);
if (pin3 && !pin3_B) {timer = millis()}
if (millis() - timer > 1000 && pin3) {
digitalWrite(3, LOW); }
switch (cmd)
{
case 'X':
digitalWrite(3, HIGH);
break;
case 'R':
if (x < 180) {
servoX.write(x + 1); }
break;
case 'L':
if (x > 0) {
servoX.write(x - 1); }
break;
}
pin3_B = pin3;
delay (20);
}
}
хотя я не понимаю почему прошлый вариант не должен работать
... и добавил:я думал, тебе надо, чтобы он мигал с интервалом в секунду, пока еще раз не нажмут кнопку
давай ты кроме всего еще по-русски напишешь, что ты хочешь
только чуть конкретнее, чем "хочу робота, чтоб стрелял лазерами в долбоебов" 
да я вроде четко объяснял - нажимаю кнопку - включается пин, проходит секунда - он сам выключается, и снова включается только опять по кнопке. это скорее всего будет не состояние пина, а положение серва (который будет нажимать на спуск, или заряжать че-нибудь или поджигать запал баллистической ракеты и т.д. но не факт.
... и добавил:ну короче я оставлю оба эти варианта как потенциально рабочие
