int intensidad = 9; int i=0; int val=0; int flag_up=1; int flag_down=0; unsigned long time=0; void setup() { Serial.begin(19200); delay(100); analogWrite(9,0); time=millis(); i=0; } void loop() { if (Serial.available()) { val=Serial.read(); } //if (val==0x01) analogWrite(9,255); //else analogWrite(9,0); if ((0x01==(val&0x01))&&((millis()-time)>=5)&&(flag_up)) { analogWrite(9,i); i=i+1; if (i==256) { i=254; flag_up=0; flag_down=1; } time=millis(); } else if ((0x01==(val&0x01))&&((millis()-time)>=5)&&(flag_down)) { analogWrite(9,i); i=i-1; if (i==0) { i=0; flag_up=1; flag_down=0; } time=millis(); } else if (0x00==(val&0x01)) { analogWrite(9,0); i=0; } }