Advertisement
RuiViana

Leitor de moedas

Jul 2nd, 2015
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. /*
  2. Pastebin file http://pastebin.com/ujuTUSHL
  3. Nome do Projeto: Contador de Moedas
  4. Nome do Aquivo: Cont_Moeda_V02.ino
  5. Dependências: Threads.h // Bibioteca das threads
  6. ThreadController.h // Bibioteca de controle das threads
  7. SoftwareSerial.h // Inclui a biblioteca SoftwareSerial.h
  8. MCU: ATmega
  9. Board: Arduino Uno/Mega/Mini
  10. Compilador N/A
  11. IDE: Arduino IDE 1.0.6
  12. Hardware: Arduino UNO/MEGA/Mini
  13. Escrito por: Rui Viana
  14. Data: 02/07/2015
  15. Uso: Didático
  16. Desenhos N/A
  17. Copyright @ N/A
  18.  
  19. Este programa é software livre;
  20. e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
  21. mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
  22.  
  23. REVISIONS: (latest entry first)
  24. 2015-07-01 - Cont_Moeda_V01.ino - First release
  25. 2015-07-02 - Cont_Moeda_V01.ino - Uso de threads
  26. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  27. Descrição:
  28.  
  29. Este código utiliza a biblioteca Threads.h e a ThreadController.h para simular uma paginação de código,
  30. e a biblioteca SoftwareSerial.h para ler dados enviados pelo leitor de moedas modelo AK5.
  31. http://www.weavefuture.com/coin_op_system_with_timer_controler.htm
  32. Ele le os valores das moedas e calcula o tempo que disponibilizará ao usuário.
  33.  
  34. Este código foi iniciamente escrito por Ronaldo Pires Borges, e disponibilzado em:
  35. http://labdegaragem.com/forum/topics/softwareserial-e-interrup-es
  36.  
  37. Modifiquei o código para funcionar usando o conceito de threads.
  38. */
  39. //************ Variaveis e constantes ************
  40. #include <Threads.h> // Bibioteca das threads
  41. #include <ThreadController.h> // Bibioteca de controle das threads
  42. #include <SoftwareSerial.h> // Inclui a biblioteca SoftwareSerial.h
  43. SoftwareSerial Moedeiro(10,11); // TX=10, RX=11 Serial para ler moedeiro
  44. int Tempo = 0; // Define variavel tempo
  45. int Moeda = 0; // Define variavel moeda
  46.  
  47. Thread Thread_Conta_Tempo; // Define thread de contagem do tempo
  48. Thread Thread_Le_Moedeiro; // Define thread leitura de valor de moeda
  49.  
  50. // ***************************** ContaTempo() **************************
  51. void Conta_Tempo() // Faça enquanto tempo for > 0
  52. {
  53. while (Tempo>0) // Faça enquanto tempo for > 0
  54. {
  55. Serial.print("Tempo ");
  56. Serial.println(Tempo); // Imprime valor da variavel tempo
  57. Tempo--; // Incrementa valor da variavel tempo
  58. delay(1000); // Aguarda 1 Seg
  59. // aqui inserir a linha para ligar o rele
  60. }
  61. // aqui para desliga-lo
  62. }
  63. // ***************************** Le_Moedeiro() **************************
  64. void Le_Moedeiro() // Rotina para ler valor de moeda colocada no moedeiro
  65. {
  66. int x=0; // Define variavel x como inteira 2 Byres sinalizados
  67. Moedeiro.listen(); // Escuta porta moedeiro
  68. while (Moedeiro.available()) // Verifica se há entrada
  69. { // Se houver faça
  70. x+=int(Moedeiro.read()); // Acumula a leitura como inteiro em x
  71. }
  72. switch (x) // Seleciona que modeda foi colocada
  73. {
  74. case 496: // Se for R$ 0,25
  75. Tempo+=600; // Soma 10 minutos = 600 segundos
  76. break; // Sai do switch
  77. case 624: // R$ 0,50
  78. Tempo+=1200; // Soma 20 minutos = 1200 segundos
  79. break; // Sai do switch
  80. case 616: // R$ 1,00
  81. Tempo+=2400; // Soma 40 minutos = 2400 segundos
  82. break; // Sai do switch
  83. }
  84. Serial.print("R$ ");
  85. Serial.println(x);
  86. delay(100); // Espere 100 msegundos
  87. }
  88. // ******************************** Setup() ****************************
  89. void setup() // Função setup
  90. {
  91. Serial.begin(9600);
  92. Thread_Conta_Tempo.setInterval(200); // Thread de 200 ms para contagem do tempo
  93. Thread_Conta_Tempo.onRun(Conta_Tempo); // Executa função de contagem do tempo
  94. Thread_Le_Moedeiro.setInterval(200); // Thread de 200 ms para leitura do moedeiro
  95. Thread_Le_Moedeiro.onRun(Le_Moedeiro); // Executa função que verifica moeda inserida leitura de moedas
  96. Moedeiro.begin(9600); // inicializa a software serial moedeiro
  97. }
  98. // ******************************** loop() ****************************
  99. void loop() // Função loop
  100. {
  101. if(Thread_Conta_Tempo.shouldRun()) // Se deve executar função Conta_Tempo()
  102. Thread_Conta_Tempo.run(); // Execute função Conta_Tempo()
  103.  
  104. if(Thread_Le_Moedeiro.shouldRun()) // Se deve executar função Le_Moedeiro()
  105. Thread_Le_Moedeiro.run(); // Execute função Le_Moedeiro()
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement