sexta-feira, 13 de março de 2015

Luz Noturna, Trabalhando com sensores



Circuito a ser montado




Partes do Circuito

Botão




O botão será usado para ligar ou desligar o circuito.
  • Ele deve ser conectado a porta 13 do Arduino.
  • Ao ser pressionado a primeira vez ele liga o circuito.
  • Ao ser pressionado novamente ele desliga o circuito.



Partes do Circuito

Buzzer


O Buzzer será usado para dar um retorno auditivo de diversas situações.
  • Ele deve ser ligado à porta 11 do Arduino
  • Toda vez que o botão for pressionado ele deve emitir um som.
  • Quando a intensidade de luz muda ele deve emitir um som.
  • Quando o circuito é desligado ele deve emitir um som.



Partes do Circuito

LDR
O LDR serve para ler a intensidade de luz disponível.
  • Ele deve ser ligado à porta A0 do Arduino
  • Quando o circuito está ligado ela deve ser lida, e conforme a intensidade de luz, ascender o led branco.


Partes do Circuito

LEDs


Os LEDs serão usados para indicação visual e iluminação

O LED vermelho deve estar aceso quando o sistema estiver em stand by (energizado e desligado).
O LED verde deve estar aceso quando o circuito estiver ligado.

O LED branco deve ficar aceso quando o circuito estiver ligado conforme a intensidade de luz do LDR (quanto menos luz disponível, mais aceso deve estar o LED).


LuzNoturna


  1. int ligado = LOW;
  2. int botao = 13;
  3. int ledverde = 10;
  4. int ledvermelho = 12;
  5. int ledbranco = 9;
  6. int buzzer = 11;
  7. int valoranteriorLDR = 0;
  8. int valoratualLDR = 0;

  9. boolean botaoPressionado();
  10. void som(int frquencia, int duracao);
  11. int leLDR();

  12. void setup()
  13. {
  14.   pinMode(botao, INPUT);
  15.   pinMode(ledverde, OUTPUT);
  16.   pinMode(ledvermelho, OUTPUT);
  17.   pinMode(ledbranco, OUTPUT);
  18.   pinMode(buzzer, OUTPUT);

  19. }

  20. void loop()
  21. {
  22.   if (botaoPressionado())
  23.   {
  24.     som(10, 100);
  25.     if (ligado == LOW)
  26.       ligado = HIGH;
  27.     else
  28.     ligado == LOW;
  29.   }
  30.   if (ligado == LOW)
  31.   {
  32.     digitalWrite(ledvermelho, HIGH);
  33.     digitalWrite(ledverde, LOW);
  34.     digitalWrite(ledbranco, LOW);
  35.   }
  36.   else
  37.   {
  38.     digitalWrite(ledvermelho, LOW);
  39.     digitalWrite(ledverde, HIGH);
  40.     valoratualLDR = leLDR();
  41.     if (valoranteriorLDR != valoratualLDR)
  42.     {
  43.       valoranteriorLDR = valoratualLDR;
  44.       analogWrite(ledbranco, valoratualLDR);
  45.       som(2000, 5);
  46.     }
  47.   }
  48. }

  49. boolean botaoPressionado()
  50. {
  51.   int foiPressionado = LOW;
  52.   foiPressionado = digitalRead(botao);
  53.   delay(200);
  54.   return (foiPressionado == HIGH);
  55. }
  56. void som(int frequencia, int duracao)
  57. {
  58.   analogWrite(buzzer, frequencia);
  59.   delay(duracao);
  60.   analogWrite(buzzer, 0);
  61. }

  62. int leLDR()
  63. {
  64.   int i;
  65.   int auxLDR;
  66.   auxLDR = 0;
  67.   for (i = 0; i < 10; i++)
  68.     auxLDR += analogRead(A0);
  69.   auxLDR /= 10;

  70.   auxLDR = map(auxLDR, 0, 500, 0, 200);
  71.   if (auxLDR < 20) auxLDR = 0;
  72.   if (auxLDR > 200) auxLDR = 255;
  73.   return auxLDR;
  74. }

Projeto Montado e Funcionando





sábado, 7 de março de 2015

CONSTRUINDO UM PRIMEIRO PROJETO "MoodLamp"




Circuito a ser montado


Leds


•Cada Led possui um resistor de 100Ωpara garantir que ele não queime.
•Veja que eles devem ser ligados em paralelo ao terra e ao resistor, sendo o cátodo (-) ao terra e o ânodo (+) ao resistor.
•Cada resistor deve estar ligado a uma porta PWM (Pulse WidthModulation–Modulação por Largura de Pulso) do Arduino. Esta porta é capaz de obter resultados analógicos por meios digitais.
•O mapeamento dos valores dos ledsdevem ficar entre 0 e 255.
•O Led vermelho deve ser ligado na porta 11, o verde na porta 10 e o azul na porta 9.

BotãoResistor "pull-down"


•O botão deve ser usado pela técnica de resistores pull-down. Esta técnica garante que os estados de liga e desliga sejam consistentes mesmo se a voltagem não for.
•O botão se liga na alimentação (5v) em um lado.
•O outro lado no resistor de 10KΩe na porta 2.
•A outra conexão do resistor fica no terra.

Potenciômetro


•O potenciômetro possui três conectores.
•Devemos ligar o primeiro dele na fonte de alimentação da protoboard(5v), o terceiro no terra e o do meio na porta analógica A1.
•O potenciômetro devolve um valor entre 0 e 1023.
•Como vamos regular os leds(0-255 lembra?) devemos mapear os resultados lidos do potenciômetro com os configurados no led.


Funcionamento desejado
  • Pressionar o botão uma vez e selecionar o ledvermelho. Os outros devem apagar e somente ele se acender.
  • Usar o potenciômetro para configurar sua intensidade.
  • Pressionar o botão uma segunda vez e selecionar o ledverde. Repetir o mesmo processo.
  • Pressionar o botão uma terceira vez e selecionar o ledazul. Repetir o mesmo processo.
  • Pressionar o botão uma quarta vez e todos devem se acender na intensidade selecionada individualmente pelo potenciômetro.


Após Conseguir a Solução para Configuração Do Arduino Nano  na  IDE.

MoodLamp
  1. int ledAzul = 9;
  2. int ledVerde = 10;
  3. int ledVermelho = 11;
  4. int botao = 2;
  5. int estadoBotao = 0;
  6. int intensidadeVermelho = 255;
  7. int intensidadeVerde = 255;
  8. int intensidadeAzul = 255;
  9. int pot;

  10. boolean botaoPressionado();

  11. void setup() 
  12. {
  13.  pinMode(ledVermelho, OUTPUT);
  14.  pinMode(ledVerde, OUTPUT);
  15.  pinMode(ledAzul, OUTPUT);
  16.  pinMode(botao, INPUT);
  17. }

  18. void loop() 
  19. {
  20.   if (botaoPressionado())

  21.     estadoBotao++;

  22.   if (estadoBotao == 0)
  23.   {
  24.     analogWrite(ledVermelho, intensidadeVermelho);
  25.     analogWrite(ledVerde, intensidadeVerde);
  26.     analogWrite(ledAzul, intensidadeAzul);
  27.   }
  28.   else if(estadoBotao == 1)
  29.   {
  30.     digitalWrite(ledVerde, 0);
  31.     digitalWrite(ledAzul, 0);
  32.     pot = analogRead(A1);
  33.     intensidadeVermelho = map(pot, 0, 1023, 0,255);
  34.     analogWrite(ledVermelho, intensidadeVermelho);
  35.   }
  36.   else if(estadoBotao == 2)
  37.   {
  38.     digitalWrite(ledVermelho, 0);
  39.     digitalWrite(ledAzul, 0);
  40.     pot = analogRead(A1);
  41.     intensidadeVermelho = map(pot, 0, 1023, 0,255);
  42.     analogWrite(ledVerde, intensidadeVerde);
  43.   }
  44.  else if(estadoBotao == 3)
  45.   {
  46.     digitalWrite(ledVermelho, 0);
  47.     digitalWrite(ledVerde, 0);
  48.     pot = analogRead(A1);
  49.     intensidadeAzul = map(pot, 0, 1023, 0,255);
  50.     analogWrite(ledAzul, intensidadeAzul);
  51.   }
  52.   else if(estadoBotao == 4)
  53.   estadoBotao = 0;
  54. }
  55.   boolean botaoPressionado()
  56.   {
  57.     int foiPressionado = LOW;
  58.     foiPressionado = digitalRead(botao);
  59.     delay(200);
  60.     return(foiPressionado == HIGH);
  61.   }

 Inicio Leds Vermelho , Verde e Azul acesos .
1º toque no botão, Controla Intensidade Led Vermelho.
2º toque no botão, Controla Intensidade Led Verde.
3º toque no botão, Controla Intensidade Led Azul.
Demonstrando a Intensidade Modificada pelo Potenciometro.