#define led 4//define o led na porta 4
#define botao1 27//define o botão na porta 27
#define botao2 14//define o botão na porta 14
#define botao3 12//define o botão na porta 12
#define botao4 13//define o botão na porta 13
void setup()
{
pinMode(led, OUTPUT);//define o led como saída
pinMode(botao1, INPUT);//define o botão 1 como entrada
pinMode(botao2, INPUT);//define o botão 2 como entrada
pinMode(botao3, INPUT);//define o botão 3 como entrada
pinMode(botao4, INPUT);//define o botão 4 como entrada
}
void loop()
{
//foi adicionado Boolean um tipo de dado que transforma os sinais em falso ou verdadeiro
boolean botao1State = digitalRead(botao1);//lê o estado do botão 1 e indica a variavel que será usada nos cálulos
boolean botao2State = digitalRead(botao2);//lê o estado do botão 2 e indica a variavel que será usada nos cálulos
boolean botao3State = digitalRead(botao3);//lê o estado do botão 3 e indica a variavel que será usada nos cálulos
boolean botao4State = digitalRead(botao4);//lê o estado do botão 4 e indica a variavel que será usada nos cálulos
boolean ledState;//estado do led
ledState = (!botao1State*botao2State*botao3State)+(botao1State*!botao2State*!botao3State)+(botao1State*!botao2State*botao4State);
//estado do botão 1 mais o estado do botão 2
//indica uma porta (or) ou seja o led só irá acender quando
digitalWrite(led, ledState);// indica o led a realizar o sinal obtido na conta acima
}