Ir ao conteúdo
  • Cadastre-se

Código "C" para maquina de refrigerantes


ph tech

Posts recomendados

olá galera. estou acabando meu técnico e meu último trabalho para poder me formar é fazer um código em C para uma máquina de refrigerantes.

eu começei um que meu professor diz ter um erro, mas como nao sou bom nisso........

é bem simples. somente 3 bebidas, tem que monitorar se a moeda foi colocada e se é do valor correto, senao deve devolve-la.

assim que eu chegar do trabalho agora a tarde vou postar aqui o código, e se alguém puder me dar uma luz....

abrigado a atençao dos colegas. ate mais tarde

Link para o comentário
Compartilhar em outros sites

Eu nao entendi essa ideia de a moeda for errada então eu fiz o seguinte. voce coloca moedas e depois de scolher o refrigerante ele te devolve o troco falando quantas moedas de cada (1 real, 50 centavos... ) ele te da d troco. Se voce escolher algo mais kro ele fala saldo insificiente. Se voce quiser e so apertar a opcao para pegar seu saldo de volta. Com isso eu acho que você adapta para o que quiser. Se você quiser implementar em um microcontrolador o codigo e o mesmo, mas em vez de printf, você tem que printa no LCD, e os sensores e o teclado ficara no lugar dos scanf.

Se for para usar so no comp mesmo eu sugiro ou fazer alguma iterface em você++ ou com opengl. Opengl da mais trabalho, mas você++ nao é c né e sim c++.

#include<stdio.h>

int main()

{
float REFRIGERANTES[3];
int indice;
float saldo = 0;
int moeda;
float valor[6];
int caso = 1;
int TROCO[6];
float troco;
int cont;

REFRIGERANTES[0]=1.25;
REFRIGERANTES[1]=1.50;
REFRIGERANTES[2]=1.75;
valor[0] = 0.01;
valor[1] = 0.05;
valor[2] = 0.10;
valor[3] = 0.25;
valor[4] = 0.50;
valor[5] = 1.00;


while(caso)
{
printf("\n\nSeu saldo e de: R$%.2f\n\n",saldo);
printf("ESCOLHA A OPCAO:\n\n");
printf("0 - Sair\n");
printf("1 - Depositar Moeda\n");
printf("2 - Escolher Refrigerante\n\n");
printf("OPCAO:");
scanf("%i", &caso);

switch(caso)
{
case 1:
printf("\n\nDeposite a sua moeda\n\n");
printf("0 - 1 CENTAVO\n");
printf("1 - 5 CENTAVOS\n");
printf("2 - 10 CENTAVOS\n");
printf("3 - 25 CENTAVOS\n");
printf("4 - 50 CENTAVOS\n");
printf("5 - 1 REAL\n\n");
printf("MOEDA:");
scanf("%i",&moeda);
saldo = saldo + valor[moeda];
break;
case 2:
printf("\n\nEscolha o Refrigerante\n\n");
printf("0 - Coca Cola - R$1.25\n");
printf("1 - Guarana - R$1.50\n");
printf("2 - Sprite - R$1.75\n\n");
printf("\nREFRIGERANTE:");
scanf("%i", &indice);

if(saldo >= REFRIGERANTES[indice])
{
troco = saldo - REFRIGERANTES[indice];
cont = 5;
while (cont >= 0)
{ TROCO[cont] = 0;
while(troco >= valor[cont])
{
TROCO[cont] = TROCO[cont]+1;
troco = troco - valor[cont];
}
cont = cont -1;
}
cont = 0;
printf("\n\nO seu troco e:\n\n");
while(cont<6)
{
printf("MOEDAS DE R$%.2f: %i\n", valor[cont], TROCO[cont]);
cont++;
}
saldo = 0;
}
else
{
printf("\n\n====== Saldo Insuficiente ======");

}
break;
}
if(caso>2)
{
printf("OPCAO INVALIDA!!\n\n");
}
}
if(saldo != 0)
{
cont = 5;
while (cont >= 0)
{
TROCO[cont] = 0;
while(saldo >= valor[cont])
{
TROCO[cont] = TROCO[cont]+1;
saldo = saldo - valor[cont];
}
cont = cont -1;
}
cont = 0;
printf("\n\nO seu troco e:\n\n");
while(cont<6)
{
printf("MOEDAS DE R$%.2f: %i\n", valor[cont], TROCO[cont]);
cont++;
}
saldo = 0;
}
printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
system("PAUSE");

return 0;
}


Qualquer coisa estamos ai!!

Abs

Link para o comentário
Compartilhar em outros sites

olá galera. estou acabando meu técnico e meu último trabalho para poder me formar é fazer um código em C para uma máquina de refrigerantes.

eu começei um que meu professor diz ter um erro, mas como nao sou bom nisso........

é bem simples. somente 3 bebidas, tem que monitorar se a moeda foi colocada e se é do valor correto, senao deve devolve-la.

assim que eu chegar do trabalho agora a tarde vou postar aqui o código, e se alguém puder me dar uma luz....

abrigado a atençao dos colegas. ate mais tarde

Não consegui usar esse do colega que escreveu um código ali logo acima! você conseguiu?

[email protected]

Link para o comentário
Compartilhar em outros sites

desculpe. o compilador é o no proprio software, keil uVision.as moedas eu estava pensando em fazer por tamanho, algum suporte plastico em forma de "V" onde as menores caem e trancam mais em baixo e as maiores mais em cima, usar componentes opticos para identificaçao, como um led e um fotodiodo.

Link para o comentário
Compartilhar em outros sites

O CÓDIGO É MAI OU MENOS ASSIM:

#define insert 0

#define verifica 1

#define devolve 2

#define escolha 3

#define BEB_1 4

#define BEB_2 5

#define BEB_3 6

:

:

:

main ()

{

inicio();

estado = insert;

do

processa estado();

} while (1);

processa_estado();

{

switch (estado);

case insert

x = verifica_moeda();

if (x==true);

estado = verifica;

break;

case verifica;

x = tipo_moeda();

if (x==ok);

estado=escolha;

else

estado=devolve;

break;

case devolve;

devolve_moeda();

estado=insert;

break;

case escolha;

TR1=1; //liga timer

x=200

do

{

do

{

y=testa_botoes();

switch (y);

{

case 1;

estado = BEB_1;

break;

case2;

estado=BEB_2

break3;

estado=BEB_3

break;

while (TF1==0)

x--;

TF0=0

} while (x20);

if(y==0)

estado=devolve

case BEB_1;

dispensa(1);

estado=insert;

ereak;

case BEB_2;

dispensa(2);

estado=insert;

break;

case BEB_3;

dispensa (3);

estado=insert

O compilador é o Keil µvision.

Diagrama de estados da maquina de bebidas:

reset

↑→→→→→→→→→→→→→↓←←←←←←←←

↑ ↑ ↑ inserir ↑

↑ ↑ ↑ moedas ↑

↑ ↑ ↑ ↓→→→→→→→→

↑ ↑ ↑ verifica→→→→→→→→

↑ ↑ ↑ moedas ↓

↑ ↑ ↑ ↓ devolve

↑ ↑ ↑ escolha→→→→→ moeda

↑ ↑ ↑ bebida

↑ ↑ ↑ ↓

↑ ↑ ↑ ↓

↑ ↑ ↑ ←←←←←←←←← →→→→→→→→→→ ↓

↑ ↑ ↑ ↓ ↓ ↓

↑ ↑ ↑ dispensa dispensa dispensa

↑ ↑ ↑ bebida 1 bebida 2 bebida 3

↑ ↑ ↑ ↓ ↓ ↓

↑ ↑ ↑ ↓ ↓ ↓

↑ ↑ ↑←←← ↓ ↓

↑ ↑ ↓ ↓

↑ ↑←←←←←←←←←←←← ↓

↑ ↓

↑←←←←←←←←←←←←←←←←←←←←←←←

E por ai vai o código é mais ou menos esse. Esta faltando alguns detalhes e ajustes!

Espero ter ajudado!

Link para o comentário
Compartilhar em outros sites

aí pessoal...esse aqui pe mais ou menos o código:

#include <regx51.h>

#define insert 0

#define verifica 1

#define devolve 2

#define escolha 3

#define BEB_1 4

#define BEB_2 5

#define BEB_3 6

main ()

{

inicio();

estado = insert;

do

processa estado()

} while (1);

processa_estado();

{

switch (estado);

case insert

x = verifica_moeda();

if (x==true);

estado = verifica;

break;

case verifica;

x = tipo_moeda();

if (x==ok);

estado=escolha;

else

estado=devolve;

break;

case devolve;

devolve_moeda();

estado=insert;

break;

case escolha;

TR1=1; //liga timer

x=200

do

{

do

{

y=testa_botoes();

switch (y);

{

case 1;

estado = BEB_1;

break;

case2;

estado=BEB_2

break3;

estado=BEB_3

break;

while (TF1==0)

x--;

TF0=0

} while (x20);

if(y==0)

estado=devolve

case BEB_1;

dispensa(1);

estado=insert;

break;

case BEB_2;

dispensa(2);

estado=insert;

break;

case BEB_3;

dispensa (3);

estado=insert

break;

}

}

}while(1);

falta implementar as funçoes verifica_moeda();tipo_moeda()devolve_moeda();testa_botoes();dispensa(x)

como se estivessem ligadas a um hardware.abraço

Link para o comentário
Compartilhar em outros sites

Gostaria de pedir para que alguem termine o programa, pois também estou interessado nesta maquina e não sei como terminá-lo, apenas parte dele.

Por Favor alguem de maior capacidade poderia terminar estás funções que o colega deixou em aberto?

Fazendo com que parece que elas acionam um hardware

Link para o comentário
Compartilhar em outros sites

Então o codigo que eu havia colocado é um codigo C puro.. deveria rodar em qualquer compilador C. Ele não usa nenhuma biblioteca especifica de compiladores em geral. EU nunca mexi com o Keil µvision então nao posso dizer como são as chamadas de função para usar entradas digitais ou analogicas enm como escrever em um LCD. Mas como eu disse a logica interna do programa deve ser essa. Eu acho que as pessoas poderiam ajudar melhor se tivessem um desenho de um circuito ou coisa do tipo para poder gerar algum codigo em função disso.

Abs

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...