Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Pastebin file http://pastebin.com/ujuTUSHL
- Nome do Projeto: Contador de Moedas
- Nome do Aquivo: Cont_Moeda_V02.ino
- Dependências: Threads.h // Bibioteca das threads
- ThreadController.h // Bibioteca de controle das threads
- SoftwareSerial.h // Inclui a biblioteca SoftwareSerial.h
- MCU: ATmega
- Board: Arduino Uno/Mega/Mini
- Compilador N/A
- IDE: Arduino IDE 1.0.6
- Hardware: Arduino UNO/MEGA/Mini
- Escrito por: Rui Viana
- Data: 02/07/2015
- Uso: Didático
- Desenhos N/A
- Copyright @ N/A
- Este programa é software livre;
- e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
- mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
- REVISIONS: (latest entry first)
- 2015-07-01 - Cont_Moeda_V01.ino - First release
- 2015-07-02 - Cont_Moeda_V01.ino - Uso de threads
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Descrição:
- Este código utiliza a biblioteca Threads.h e a ThreadController.h para simular uma paginação de código,
- e a biblioteca SoftwareSerial.h para ler dados enviados pelo leitor de moedas modelo AK5.
- http://www.weavefuture.com/coin_op_system_with_timer_controler.htm
- Ele le os valores das moedas e calcula o tempo que disponibilizará ao usuário.
- Este código foi iniciamente escrito por Ronaldo Pires Borges, e disponibilzado em:
- http://labdegaragem.com/forum/topics/softwareserial-e-interrup-es
- Modifiquei o código para funcionar usando o conceito de threads.
- */
- //************ Variaveis e constantes ************
- #include <Threads.h> // Bibioteca das threads
- #include <ThreadController.h> // Bibioteca de controle das threads
- #include <SoftwareSerial.h> // Inclui a biblioteca SoftwareSerial.h
- SoftwareSerial Moedeiro(10,11); // TX=10, RX=11 Serial para ler moedeiro
- int Tempo = 0; // Define variavel tempo
- int Moeda = 0; // Define variavel moeda
- Thread Thread_Conta_Tempo; // Define thread de contagem do tempo
- Thread Thread_Le_Moedeiro; // Define thread leitura de valor de moeda
- // ***************************** ContaTempo() **************************
- void Conta_Tempo() // Faça enquanto tempo for > 0
- {
- while (Tempo>0) // Faça enquanto tempo for > 0
- {
- Serial.print("Tempo ");
- Serial.println(Tempo); // Imprime valor da variavel tempo
- Tempo--; // Incrementa valor da variavel tempo
- delay(1000); // Aguarda 1 Seg
- // aqui inserir a linha para ligar o rele
- }
- // aqui para desliga-lo
- }
- // ***************************** Le_Moedeiro() **************************
- void Le_Moedeiro() // Rotina para ler valor de moeda colocada no moedeiro
- {
- int x=0; // Define variavel x como inteira 2 Byres sinalizados
- Moedeiro.listen(); // Escuta porta moedeiro
- while (Moedeiro.available()) // Verifica se há entrada
- { // Se houver faça
- x+=int(Moedeiro.read()); // Acumula a leitura como inteiro em x
- }
- switch (x) // Seleciona que modeda foi colocada
- {
- case 496: // Se for R$ 0,25
- Tempo+=600; // Soma 10 minutos = 600 segundos
- break; // Sai do switch
- case 624: // R$ 0,50
- Tempo+=1200; // Soma 20 minutos = 1200 segundos
- break; // Sai do switch
- case 616: // R$ 1,00
- Tempo+=2400; // Soma 40 minutos = 2400 segundos
- break; // Sai do switch
- }
- Serial.print("R$ ");
- Serial.println(x);
- delay(100); // Espere 100 msegundos
- }
- // ******************************** Setup() ****************************
- void setup() // Função setup
- {
- Serial.begin(9600);
- Thread_Conta_Tempo.setInterval(200); // Thread de 200 ms para contagem do tempo
- Thread_Conta_Tempo.onRun(Conta_Tempo); // Executa função de contagem do tempo
- Thread_Le_Moedeiro.setInterval(200); // Thread de 200 ms para leitura do moedeiro
- Thread_Le_Moedeiro.onRun(Le_Moedeiro); // Executa função que verifica moeda inserida leitura de moedas
- Moedeiro.begin(9600); // inicializa a software serial moedeiro
- }
- // ******************************** loop() ****************************
- void loop() // Função loop
- {
- if(Thread_Conta_Tempo.shouldRun()) // Se deve executar função Conta_Tempo()
- Thread_Conta_Tempo.run(); // Execute função Conta_Tempo()
- if(Thread_Le_Moedeiro.shouldRun()) // Se deve executar função Le_Moedeiro()
- Thread_Le_Moedeiro.run(); // Execute função Le_Moedeiro()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement