Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
ph tech

Código "C" para maquina de refrigerantes

Recommended Posts

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

Compartilhar este post


Link para o post
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

Editado por Sink00

Compartilhar este post


Link para o post
Compartilhar em outros sites

o microcontrolador é um at89s52 (dos 8051), o compilador é o ISP. tem apenas 3 botões um para cada bebida.o codigo nao precisa ser muito completo, nem com muitas funçoes. to vendo se acho o papel com o código que eu tinha

agradeço muito a ajuda dos amigos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compiladorr ISP para 8051 ???

Este não seria o gravador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre as moedas...

Quando eu perguntei "Como tu vai fazer para diferenciar as moedas?", eu queria saber como tu vai saber se é de 1 real ou 50 cents, isso por hardware.

tamanho, peso sei lá

:D

Como tu vai fazer isso???

:confused:

Renan

Compartilhar este post


Link para o post
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?

roni.madeira@yahoo.com.br

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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!

Editado por Roni Madeira

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda gostaria e estou esperando por alguem que entenda bem de linguagem C, pois não sei como implementar estas funções que falta e este é meu trabalho de conclusão de uma matéria :s

Alguem poderia por favor me ajudar!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×