Desafio Abajur Inteligente
! Desafio
Assim como o desafio anterior, este é um projeto para utilizar tudo o que foi aprendido até então!
!Conheça o Abajur Inteligente
O Abajur inteligente é um abajur que responde de forma dinâmica ao ambiente e a necessidade de quem o utiliza. Podendo assim responder de forma automática a iluminação do ambiente ou funcionar com uma determinada configuração escolhida.
!Faça você mesmo!
Pesquise nos projetos anteriores e pense em como o Abajur Inteligente funcionaria. Pense como você poderia fazer isso explorando os recursos do seu kit e elabore um programa para isso!
!Dicas para o projeto
Para este projeto, voce precisará:
- Fazer com que o abajur mude de um estado para outro (Automático para Manual) – utilize os pinos do Mosfet para isso
- Você precisará fazer de forma intuitiva para ser utilizado por qualquer pessoa
- Você precisará conferir que ele será funcional
- Você precisará fazer um botão de liga/desliga
Abaixo é possível encontrar o nosso código para este projeto, mas recomendamos que você faça você mesmo, pois assim você conseguirá aprender de verdade! Se tiver muita dificuldade, utilize o nosso código para tirar dúvidas ou descobrir como resolver problemas mais específicos.
Nosso código
int lamp = 3;
int lamp_2 = 6;
int button = A0;
int light;
int temp, oldTemp;
int intensity(int sensorValue)
{
float intensityReturn;
float bright = (sensorValue / 4);
intensityReturn = 255 - bright;
return intensityReturn;
}
int getButtonState()
{
int value = analogRead(button);
if (value < 69) {
return 1;
} else if (value >= 69 && value <= 230) {
return 2;
} else if (value >= 231 && value <= 407) {
return 3;
} else if (value >= 408 && value <= 630) {
return 4;
} else if (value >= 631 && value <= 896) {
return 5;
}
return 0;
}
int readButton()
{
int state = getButtonState();
int count = 1;
while (count < 5) {
delay(5);
int newState = getButtonState();
if (newState == state) {
count++;
} else {
count = 1;
}
state = newState;
}
return state;
}
void setup()
{
pinMode(lamp, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// Lampada ligada enquanto botao nao esta apertado
int btn = readButton();
while (btn != 5) {
int sensorValue = analogRead(A3);
light = intensity(sensorValue);
analogWrite(lamp, light);
if (btn == 1) {
analogWrite(lamp_2, 55);
temp = 55;
} else if (btn == 2) {
analogWrite(lamp_2, 105);
temp = 105;
} else if (btn == 3) {
analogWrite(lamp_2, 155);
temp = 155;
} else if (btn == 4) {
analogWrite(lamp_2, 255);
temp = 255;
}
btn = readButton();
}
analogWrite(lamp, 0);
analogWrite(lamp_2, 0);
// Espera soltar o botao
while (readButton() != 0);
// Espera apertar o botao
while (readButton() != 5);
// Espera soltar o botao
while (readButton() != 0);
analogWrite(lamp_2, temp);
oldTemp = temp;
}