Advertisement
Mauro_Ferraresi

Contador com sensor Sharp usando Threads

Jul 14th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. //#include <LiquidCrystal.h>
  2. //LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
  3. int sensor0 = 0; // Inicia o sensor 0;
  4. int cont0 = 0;
  5. int sensor1 = 0; // Inicia o sensor 1;
  6. int cont1 = 0;
  7. //int sensor2 = 0; // Inicia o sensor 2;
  8. //int cont2 = 0;
  9. //int sensor3 = 0; // Inicia o sensor 3;
  10. //int cont3 = 0;
  11. //int sensor4 = 0; // Inicia o sensor 4;
  12. //int cont4 = 0;
  13. //int total = 0; // Variavel para guardar a soma de todos os sensores;
  14.  
  15. #define THREAD0_TIME 400
  16. int lastExecuteTimeSensor0 = 0;
  17.  
  18. #define THREAD1_TIME 400
  19. int lastExecuteTimeSensor1 = 0;
  20.  
  21. void setup()
  22. {
  23. Serial.begin(9600);
  24. //lcd.begin(16, 2);
  25. //lcd.setCursor(0,0);
  26. //lcd.print("Mauro");
  27. //lcd.setCursor(0,1);
  28. //lcd.print("Numb peças: ");
  29.  
  30. }
  31.  
  32. void thread0(){
  33. // Bloco para leiura do sensor 0
  34. if(analogRead(A0) > 500) // objeto passando entre o sensor sharp
  35. {
  36. cont0++;//Incrementa o contador em 1
  37. Serial.print("Quantidade de Peças sensor 0 = ");
  38. Serial.println(cont0);
  39. Serial.print("Valor Lido = ");
  40. Serial.println(analogRead(A0));
  41.  
  42.  
  43. //delay(200); // Aqui está o meu problema. Como o sensor que estou usando faz varias medidas por segundo, ao detectar o objeto
  44. // pelo comando "if(analogRead(A0) > 500)
  45. // cont1++;//Incrementa o contador em 1"
  46. // o sistema precisa dar uma pausa, mas somente no sensor em questão, deixando os demais trabalhando
  47. // normalmente, para que o objeto passe pelo sensor e assim não conte duas vezes...
  48.  
  49. //lcd.setCursor(11,1);
  50. //lcd.print(contador++);
  51.  
  52. }
  53. }
  54.  
  55. void thread1(){
  56. // Bloco para leiura do sensor 1
  57. if(analogRead(A1) > 500) // objeto passando entre o sensor sharp
  58. {
  59. cont1++;//Incrementa o contador em 1
  60. Serial.print("Quantidade de Peças sensor 1 = ");
  61. Serial.println(cont1);
  62. Serial.print("Valor Lido = ");
  63. Serial.println(analogRead(A1));
  64. //delay(200); // não utilizado.
  65. //lcd.setCursor(11,1);
  66. //lcd.print(contador++);
  67.  
  68. }
  69. }
  70. void loop()
  71. {
  72. if(millis() - lastExecuteTimeSensor0 >= THREAD0_TIME){
  73. thread0();
  74. // Zera a flag de tempo
  75. lastExecuteTimeSensor0 = millis();
  76.  
  77. }
  78.  
  79. if(millis() - lastExecuteTimeSensor1 >= THREAD1_TIME){
  80. thread1();
  81. // Zera a flag de tempo
  82. lastExecuteTimeSensor1 = millis();
  83.  
  84. }
  85.  
  86.  
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement