#include <Servo.h>
#define LEDS_PINS 5
#define RGB_LED_PINS 3
#define MIN 255
Servo myservo;
const byte leds_pins[LEDS_PINS] = {9, 10, 11, 3, LED_BUILTIN};
byte getValue(const byte i)
{
switch(i)
{
//case 0: return ~(digitalRead(2) ? 255 : 0); break;
//case 0: return (!digitalRead(2) ? 255 : 0); break;
case 0: return (digitalRead(2) ? 0 : 255); break;
case 1: return (digitalRead(2) ? 255 : 0); break;
}
}
void setup()
{
pinMode(2, INPUT);
for(byte i = 0; i < LEDS_PINS; i++)
pinMode(leds_pins[i], OUTPUT);
myservo.attach(4);
myservo.write(90);
}
void loop()
{
myservo.write(digitalRead(2) ? 0 : 90);
for(byte i = 0; i < RGB_LED_PINS; i++)
analogWrite(leds_pins[i], MIN - ((i == 0 || i == 1) ? getValue(i) : 0));
for(byte i = RGB_LED_PINS; i < LEDS_PINS; i++)
digitalWrite(leds_pins[i], digitalRead(2));
}