Advertisement
alvarobarbosa2

Untitled

Oct 8th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.79 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <SD.h>
  3. #define N 5 //Dimensão do vetor tomado para o filtro digital (média móvel)
  4. #define CS_pin 4 //Comunicação SPI, CS_pin no digital 4 para o cartão SD
  5. // -------------------------------------- cartão SD ---------------------------------------------------------------
  6. Sd2Card SDcard;
  7. SdVolume volume;
  8. File myFile; //Arquivo para salvar dados
  9. // ----------------------------------------------------------------------------------------------------------------
  10. int photocellPin = A0; // sensor ldr 01
  11. int photocellPin1 = A2; // sendor ldr 02
  12. int lux; // Variavel obter medida de sol pelo sensor 01
  13. int lux_1; // Variavel obter medida de sol pelo sensor 02
  14. float mediax(0); // Variavel obter media de sol pelos sensores 01 e 02
  15. float mmovel(0); // Variavel obter media móvel das leituras
  16. unsigned long tempo(0); // Variavel para medir intervalos de tempo de sol
  17. unsigned long anterior(0); // Variavel para salvar tempo de inicio de contagem
  18. unsigned long sol(0); // Variavel para acumular tempo de sol
  19. bool contador(0); // Variavel para controle de contagem
  20. int vals[N]; // vetor de leituras
  21. // ---------------------------------------- iniciar programa ------------------------------------------------------
  22. void setup(void)
  23. {
  24. Serial.begin(9600); // Inicialise serial em 9600 bps
  25. anterior = millis(); // Atualize tempo atual
  26. pinMode(CS_pin, OUTPUT); //Configura o pino CS como saída
  27. // ---------------------------------------- iniciar cartão sd -----------------------------------------------------
  28. if (!SD.begin(CS_pin)) //Teste da presença do cartão
  29. {
  30. Serial.println("Falha ao acessar o cartao !");
  31. Serial.println("Verifique o cartao/conexoes e reinicie o Arduino...");
  32. Serial.println();
  33. return;
  34. }
  35. Serial.println("Cartao iniciado corretamente !");
  36. Serial.println();
  37. // -------------------------- salvar os dados obtidos no cartão sd ------------------------------------------------
  38. File myFile = SD.open("logger.csv", FILE_WRITE); // Abre o arquivo arquivo.txt do cartao SD
  39.  
  40. if (myFile) // Grava os dados no arquivo
  41. {
  42. myFile.println(" , , ");
  43. String header = "LUX, time, minutos";
  44. myFile.println(header);
  45. myFile.close();
  46.  
  47. Serial.println (header);
  48. }
  49. else // Mensagem de erro para problemas na abertura do arquivo
  50. {
  51. Serial.println("Erro ao abrir arquivo.txt !");
  52. }
  53. // ------------------------------------ teste de sensores ---------------------------------------------------------
  54. if (lux = 0)
  55. {
  56. Serial.println ("Defeito eminente no LDR 01 "); //Teste do LDR 01
  57. Serial.println (" ");
  58. }
  59. else if (lux_1 = 0)
  60. {
  61. Serial.println ("Defeito eminente no LDR 02 "); //Teste do LDR 02
  62. Serial.println (" ");
  63. }
  64. else
  65. {
  66. Serial.println ("Sensores OK, iniciando funcionamento ");
  67. Serial.println (" ");
  68. }
  69. }
  70. // ---------------------------------------- processamento ---------------------------------------------------------
  71. void loop(void)
  72. {// ------------------------------- sensores LDR operando em conjunto ----------------------------------------------
  73. lux = analogRead(photocellPin); // faz a leitura analógica do LDR 1
  74. lux_1 = analogRead(photocellPin1); // faz a leitura analógica do LDR 2
  75. mediax = (lux + lux_1)/2; // faz a méida das leituras analógica
  76. // --------------------------------- Filtro Digital (média Móvel) -------------------------------------------------
  77. for (int i = N-1; i > 0; i--)
  78. {
  79. vals [i] = vals[i-1];
  80. }
  81. vals [0] = mediax;
  82. // -------------------------------------- Contador regressivo -----------------------------------------------------
  83. long sum = 0;
  84. for (int i = 0; i<N; i++)
  85. {
  86. sum = sum + vals[i];
  87. }
  88. // ----------------------------------------- Valor da média móvel -------------------------------------------------
  89. mmovel = sum/N;
  90. // ------------------------------- contador de tempo para o sistema -----------------------------------------------
  91. if ( mmovel < 950) // Se a média for menor que 900
  92. {
  93. sol = (sol + tempo); // Acumule tempo de sol
  94. tempo = 0; // Zera o tempo medido
  95. contador = 0; // Desabilite contagem
  96. anterior = millis(); // Atualize tempo atual
  97. }
  98. else // Se for maior que 800
  99. {
  100. contador = 1; // Habilite contagem
  101. }
  102. if (contador == 1) // Se contagem habilitada
  103. {
  104. tempo = (millis() - anterior); // tempo igual tempo de sol
  105. }
  106. // ------------------------------------ impressão dos dados ------------------------------------------------------
  107. String dataString = String(mmovel) + ", " + String((sol/1000/60) %60);
  108.  
  109. File myFile = SD.open("logger.csv", FILE_WRITE);
  110. if(myFile)
  111. {
  112. myFile.println(dataString);
  113. myFile.close();
  114. Serial.println(dataString);
  115. }
  116. else
  117. {
  118. Serial.println("Erro ao abrir arquivo para escrita final");
  119. }
  120.  
  121.  
  122. //Serial.print("LUX "); // Imprime o termo luminosidade
  123. //Serial.print(mmovel); // Imprime a média acumulada dos dois sensorers
  124. //Serial.print("\t"); // Imprime um espaço entre a luminosidade média e o tempo
  125. //Serial.print(" time "); // Imprime o termo "tempo"
  126. //Serial.print((sol/1000/60) %60); // Imprime acumulado de tempo de sol em minutos
  127. //Serial.println(" minutos"); // Imprime a unidade de tempo minutos
  128. // ------------------------------- imprimir os dados a cada... ----------------------------------------------------
  129. delay (2000);
  130. }
  131. //---------------------------------------------------- fim do programa -------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement