Francisco Moreira
Created June 29, 2020 © GPL3+

Discover how to create an Arduino Money Box

You'll learn how to create a money box with Arduino.

IntermediateFull instructions provided4 hours1
Discover how to create an Arduino Money Box

Story

Read more

Custom parts and enclosures

Case Safe Box

Schematics

Electronic Schematic

Code

Code Safe Box

Arduino
/*
Conexões do display LCD ao arduino uno:
* LCD RS pino para o digital pino 12
* LCD Enable pin para o digital pino 11
* LCD D4 pino para o digital pino 5
* LCD D5 pino para o digital pino 4
* LCD D6 pino para o digital pino 3
* LCD D7 pino para o digital pino 2
* LCD R/W pino para o ground
* LCD VSS pino para o ground
* LCD VDD pino para o 5V
* LCD V0 pino para o potenciômetro
*/
#include <LiquidCrystal.h>//importando a biblioteca das funçoes do LCD
//pinos de interface da biblioteca
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//********************INICIO-SENSOR TCRT5000***********************
int Objeto = 0;//variável utilizada para as informações do sensor
int Sensor = 6;// o pino de dados do sensor será conectado ao pino digital 6 do arduino
int moedas = 0;//variavel responsavel por contar as moedas
int botao_zerar_contagem = 7;//variavel responsável pelo botao que ira reiniciar a contagem das moedas.
int estado_botao;//variável utilizada para verificar o estada do botão.
//********************FIM-SENSOR TCRT5000***********************
void setup() { //função responsável por definir os pinos de entrada e saida do arduino
//********************INICIO-SENSOR TCRT5000***********************
pinMode(Sensor,INPUT);//define o pino Sensor como entrada de dados
pinMode(botao_zerar_contagem,INPUT);//define o pino do botao como entrada de dados
//********************FIM-SENSOR TCRT5000***********************
//  Número de linhas e colunas do LCD utilizado
lcd.begin(16, 2);
// Função responsável por retornar a mensagem no LCD
lcd.setCursor(2,0);//setando o cursor do LCD na coluna 2 linha 0
lcd.print("SILICIOS LAB");//mensagem enviada para o LCD
lcd.setCursor(2,1);//setando o cursor do LCD na coluna 2 linha 1
lcd.print("Cofre 1 real");//mensagem enviada para o LCD
delay(4000);//aguarda 4 segundos para iniciar
lcd.clear();//apaga os caracteres no LCD
}
void loop() {
estado_botao = digitalRead(botao_zerar_contagem);//lendo o estado do botão.
if(estado_botao==LOW)//se o estada do botão for LOW, a contagem será reiniciada
{
lcd.setCursor(0,0);//desloca o cursor para a posição específica do texto da contagem
lcd.clear();//limpa a contagem anterior
moedas=0;//zera a contagem das moedas e reinicia a contagem.
}
else//se o estado do botão for contrário a LOW, ou seja, HIGH, o programa ira continuar o seu fluxo       normalmente
{
}
Objeto = digitalRead(Sensor);//analise o sinal enviado pelo pino de dados do sensor
if(Objeto==0)//caso o sinal do sensor seja nível lógico 0, o sensor terá detectado um objeto
{
Serial.println("Moeda Recebida");//mensagem no monitor Serial
// inicia o curso do LCD na coluna 0, linha 1
lcd.clear();//apaga os caracteres no LCD
lcd.setCursor(0, 1);//setando o cursor do LCD na coluna 0 linha 1
// print the number of seconds since reset:
lcd.print("Moeda Recebida");
moedas=moedas+1;//a cada passagem por esta linha, o contador é incrementado com o valor 1.
lcd.setCursor(0, 0);// inicia o curso do LCD na coluna 0, linha 0
// print the number of seconds since reset:
lcd.print("Moedas = ");//mensagem enviada para o LCD
lcd.print(moedas);//mostra o valor da variável "moedas" no LCD
int aux=Objeto;//variável utilizada para armazenar a leitura atual do sensor
while(aux==LOW){//loop responsável por impedir o sensor de conte mais de uma vez a moeda enquanto ela está sendo colocada no cofre.
moedas=moedas;//enquanto o loop durar, o valor da variável será o mesmo.
lcd.setCursor(0,0);
lcd.print("Moedas = ");
lcd.print(moedas);
aux=digitalRead(Sensor);
}
}
else //caso o valor seja nível lógico 1, o sensor não estará detectando a presença de nenhum objeto
{
lcd.setCursor(0, 0);// inicia o curso do LCD na coluna 0, linha 1
lcd.clear();
// print the number of seconds since reset:
lcd.print("Moedas = ");
lcd.print(moedas);
Serial.println("Objeto nao detectado");
// inicia o curso do LCD na coluna 0, linha 1
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Esperando Moedas");
}
if(botao_zerar_contagem==0)
{
lcd.setCursor(0,0);//desloca o cursor para a posição específica do texto da contagem
lcd.clear();//limpa a contagem anterior
moedas=0;//zera a contagem das moedas e reinicia a contagem.
moedas=0;
}
}

Credits

Francisco Moreira

Francisco Moreira

6 projects • 0 followers

Comments