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; }