Advertisement
RuiViana

PIR e Step

Jan 10th, 2016
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.77 KB | None | 0 0
  1. // http://pastebin.com/dZNK5rXn
  2.  
  3. // Programa : Automação Residencial
  4. // Autor : Edison
  5. #include <SPI.h>
  6. #include <Servo.h> //Biblioteca utilizada
  7. #define SERVO 6 //Porta utilizada para o motor
  8.  
  9. //Explicação sobre bibliotecas e include na legenda do código
  10.  
  11. Servo s; //Variável utilizada para o servo motor
  12. int pos; //Posição para deixar o motor
  13. int valorSerial=0;
  14.  
  15. byte PirFlag = 0;
  16. unsigned long Tempo = 0;
  17. //--------------------------------------------------------
  18. int pinBuzzer = 7;
  19. int pinSensorPIR = 8;
  20. int pinLed = 9;
  21. int valorSensorPIR = 0;
  22. int portaLed = 3; //Porta a ser utilizada para ligar o led
  23. int portaLDR = A5; //Porta analógica utilizada pelo LDR
  24.  
  25. //--------------------------------------------------------
  26. void setup()
  27. {
  28. Serial.begin(9600); //Inicializa a comunicaçao em serie
  29. s.attach(SERVO);
  30.  
  31. s.write(0); //Começa o motor na posição 0
  32.  
  33. //Definido pinos como de entrada ou de saída
  34. pinMode(pinBuzzer,OUTPUT);
  35. pinMode(pinSensorPIR,INPUT_PULLUP);
  36. pinMode(pinLed,OUTPUT);
  37. pinMode(portaLed, OUTPUT); //Define a porta do Led como saída
  38. pinMode(A1,OUTPUT); //Define o pino A1 como saida
  39. pinMode(A2,OUTPUT); //Define o pino A2 como saida
  40. pinMode(A3,OUTPUT); //Define o pino A3 como saida
  41. pinMode(A4,OUTPUT); //Define o pino A4 como saida
  42. pinMode(13,OUTPUT); //Define o pino 13 como saida
  43. pinMode(12,OUTPUT); //Define o pino 12 como saida
  44. pinMode(11,OUTPUT); //Define o pino 11 como saida
  45. pinMode(10,OUTPUT); //Define o pino 10 como saida
  46. pinMode(4,OUTPUT); //Define o pino 4 como saida
  47. pinMode(5,OUTPUT); //Define o pino 5 como saida
  48. pinMode(2,OUTPUT); //Define o pino 2 como saida o ar condicionado
  49. }
  50. //--------------------------------------------------------
  51. void loop(){
  52. //Lendo o valor do sensor PIR. Este sensor pode assumir 2 valores
  53. //1 quando detecta algum movimento e 0 quando não detecta.
  54. valorSensorPIR = digitalRead(pinSensorPIR);
  55.  
  56. // Serial.print("Valor do Sensor PIR: ");
  57. // Serial.println(valorSensorPIR);
  58.  
  59. //Verificando se ocorreu detecção de movimentos
  60. if (valorSensorPIR == 1)
  61. {
  62. ligarAlarme();
  63. }
  64. else
  65. {
  66. desligarAlarme();
  67. }
  68. Comandos();
  69. }
  70. //--------------------------------------------------------
  71. void ligarAlarme()
  72. {
  73.  
  74. //Ligando o led
  75. digitalWrite(pinLed, HIGH);
  76. //Ligando o buzzer com uma frequencia de 1500 hz.
  77. tone(pinBuzzer,1500);
  78. if ((millis()- Tempo) >4000)
  79. {
  80. Serial.print("Alarme ligado: Tempo Seg: ");
  81. Serial.println((millis()- Tempo)/1000);
  82. PirFlag = 0;
  83. // delay(4000); //tempo que o led fica acesso e o buzzer toca
  84. desligarAlarme();
  85. Tempo = millis();
  86. }
  87. }
  88. //--------------------------------------------------------
  89. void desligarAlarme()
  90. {
  91. if (PirFlag == 0)
  92. Serial.println("Alarme desligado");
  93. PirFlag = 1;
  94. //Desligando o led
  95. digitalWrite(pinLed, LOW);
  96. //Desligando o buzzer
  97. noTone(pinBuzzer);
  98. }
  99. // --------------------------- Comandos
  100. void Comandos ()
  101. {
  102. char ler = 0;
  103. if(Serial.available())
  104. {
  105. ler = Serial.read();
  106. Serial.println(ler);
  107. }
  108. int estado = analogRead(portaLDR); //Lê o valor fornecido pelo LDR
  109.  
  110. // Caso o valor lido na porta analógica seja maior do que
  111. // 800, acende o LED
  112. // Ajuste o valor abaixo de acordo com o seu circuito
  113. if (estado > 800)
  114. {
  115. digitalWrite(portaLed, HIGH);
  116. }
  117. else //Caso contrário, apaga o led
  118. {
  119. digitalWrite(portaLed, LOW);
  120. }
  121. if(ler == 'a') //Se a variavel ler for igual a 1
  122. digitalWrite(A1,HIGH); //Ativa a porta A1
  123. else if(ler == 'b') //Se a variavel ler for igual a 2
  124. digitalWrite(A2,HIGH); //Ativa a porta A2
  125. else if(ler == 'c') //Se a variavel ler for igual a 3
  126. digitalWrite(A3,HIGH); //Ativa a porta A3
  127. else if(ler == 'e') //Se a variavel ler for igual a 4
  128. digitalWrite(A4,HIGH); //Ativa a porta A4
  129. else if(ler == 'f') //Se a variavel ler for igual a 13
  130. digitalWrite(13,HIGH); //Ativa a porta 13
  131. else if(ler == 'g') //Se a variavel ler for igual a 12
  132. digitalWrite(12,HIGH); //Ativa a porta 12
  133. else if(ler == 'h') //Se a variavel ler for igual a 11
  134. digitalWrite(11,HIGH); //Ativa a porta 11
  135. else if(ler == 'i') //Se a variavel ler for igual a 10
  136. digitalWrite(10,HIGH); //Ativa a porta 10
  137. else if(ler == 'j') //Se a variavel ler for igual a 4
  138. digitalWrite(4,HIGH); //Ativa a porta 4
  139. else if(ler == 'k') //Se a variavel ler for igual a 5
  140. digitalWrite(5,HIGH); //Ativa a porta 5
  141. else if(ler == 'l') //Se a variavel ler for igual a 2
  142. digitalWrite(2,HIGH); //Ativa a porta 2 ar condicionado
  143.  
  144. //--------DESLIGAR RELES---------------------
  145. else if(ler == 'A') //Se a variavel ler for igual a 1
  146. digitalWrite(A1,LOW); //Desliga a porta A1
  147. else if(ler == 'B') //Se a variavel ler for igual a 2
  148. digitalWrite(A2,LOW); //Desliga a porta A2
  149. else if(ler == 'C') //Se a variavel ler for igual a 3
  150. digitalWrite(A3,LOW); //Desliga a porta A3
  151. else if(ler == 'E') //Se a variavel ler for igual a 4
  152. digitalWrite(A4,LOW); //Desliga a porta A4
  153. else if(ler == 'F') //Se a variavel ler for igual a 13
  154. digitalWrite(13,LOW); //Desliga a porta 13
  155. else if(ler == 'G') //Se a variavel ler for igual a 12
  156. digitalWrite(12,LOW); //Desliga a porta 12
  157. else if(ler == 'H') //Se a variavel ler for igual a 11
  158. digitalWrite(11,LOW); //Desliga a porta 11
  159. else if(ler == 'I') //Se a variavel ler for igual a 10
  160. digitalWrite(10,LOW); //Desliga a porta 10
  161. else if(ler == 'J') //Se a variavel ler for igual a 4
  162. digitalWrite(4,LOW); //Desliga a porta 4
  163. else if(ler == 'K') //Se a variavel ler for igual a 5
  164. digitalWrite(5,LOW); //Desliga a porta 5
  165. else if(ler == 'L') //Se a variavel ler for igual a 2
  166. digitalWrite(2,LOW); //Desliga a porta 2 ar condicionado
  167.  
  168. if (ler == 'D') // D Maiusculo liga o portão
  169. {
  170. Serial.println("Abrindo");
  171. delay(100);
  172. for(pos = 0; pos < 90; pos++)
  173. {
  174. s.write(pos);
  175. delay(35); // <<----------- valor alto?
  176. }
  177. Serial.println("Aberto");
  178. }
  179. if (ler == 'd') // d Minusculo desliga
  180. {
  181. Serial.println("Fechando");
  182. for(pos = 90; pos > 0; pos--)
  183. {
  184. s.write(pos);
  185. delay(35); // <<----------- valor alto?
  186. }
  187. Serial.println("Fechado");
  188. }
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement