Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Máquina de venda automática de lanches alimentada por Arduino

Componentes e suprimentos

Arduino UNO
Devo usar o Arduino Mega, para obter mais IO.
× 1
Escudo do sensor
× 1
Motor DC 6V inclui roda
× 3
Sensor infravermelho (reflexivo) ou seguidor de linha, usado para detecção de produto
× 3
Sensor de proximidade (eletromagnético), usado para o sensor de moeda número 1
× 1
Sensor interupter de distância (infravermelho / optoacoplador), usado para sensor de moeda número 2
× 1
Fonte de alimentação 6V para motor DC
× 1
Relé (genérico)
Relé de 4 interruptores
× 1
LCD (Nokia 5110 LCD)
× 1
LED (genérico)
LED branco
× 2
Botão de pressão
Vermelho, amarelo e verde
× 3

Aplicativos e serviços online

Arduino IDE
Solidworks
ou qualquer fabricante de modelos 3D

Sobre este projeto





Introdução


Olá, saudações da Indonésia.

Esta máquina de venda automática de lanches é meu projeto final. Este projeto foi concluído no final de 2015.

O objetivo deste projeto é criar uma máquina de venda automática, movida por microcontrolador Arduino, usando "qualquer componente barato e fácil de obter" disponível na loja local.

O vídeo abaixo é o vídeo de teste final da Snack Vending Machine, do teste de pagamento / moeda, seleção de produto e entrega do produto.

Então, isso é o que eu fiz para atingir esses objetivos:





Etapa 1:esboce o conceito


Primeiro pense primeiro, o conceito .

Este esboço é minha primeira ideia do que posso construir. Vai ser uma máquina de venda automática de salgadinhos, aceitando moeda como forma de pagamento e utilizando caixa de acrílico.

Escolha e amadureça seu conceito , tente pensar em qualquer coisa, qualquer cenário, qualquer condição.

Tente esboçar tudo, não se preocupe se o seu desenho ficar feio, olhe sério para o meu desenho. :D

O momento certo para pensar sobre o impensável é antes mesmo de o projeto começar.





Etapa 2:Criar um modelo 3D


Talvez este passo não seja necessário para todas as pessoas, mas para mim, e para este projeto, é crucial.

Eu crio o modelo SolidWorks. E quero dizer modelo realmente completo. Preciso determinar as dimensões do produto, no caso, uma embalagem de lanche. O tamanho das moedas aceitas, o tamanho das moedas rejeitadas, o tamanho da ranhura para moedas, o tamanho da rampa de moedas, o tamanho do botão de pressão, o tamanho de quase tudo. Esta etapa inclui comparar, escolher e medir o tamanho do microcontrolador Arduino usado. Que sensor usei, ou vou usar no futuro, onde colocar, qual a dimensão e tamanhos, para onde vão as moedas aceites, também penso onde devo colocar um LCD monocromático (não é necessário mas insisto).

E finalmente, ainda na criação do modelo de solidworks, não se esqueça de criar furos para parafuso, para todas as peças.

A caixa é feita de material acrílico e cortada usando o método de corte a laser. É por isso que eu crio o modelo o mais detalhado e preciso que posso, porque quanto mais preciso for o meu modelo, mais precisão eu terei.





Etapa 3:projete um slot de moeda


Para filtrar moedas, primeiro estou usando a dimensão da moeda. Ao projetar a moeda caça-níqueis, posso determinar o tamanho das moedas que podem entrar na máquina .

Em seguida, segundo filtro, eu determino qual tamanho de moeda pode ser aceito e rolando para o porta-moeda .

Porque ao usar a força da gravidade, se o tamanho da moeda (diâmetro) for menor do que o comprimento da rampa / trilho da moeda, ela cairá e será rejeitada.
  • Na foto acima, a moeda à esquerda não entra na moeda caça-níqueis.
  • A moeda do meio cairá e será rejeitada.
  • A moeda à direita é moeda aceita, vai para o suporte da moeda.

Este é o vídeo em que estou fazendo um teste de moeda, ele mostrará como esse método funciona.





Etapa 4:preparar e testar todos os componentes


Prepare o seu Arduino, prepare tudo o que for necessário.

Teste cada componente, botão de pressão do LCD, relé, LED, apenas tente combinar tudo e aprender lógicas e códigos diferentes. Certifique-se de saber o que você faz. Tente testar até o limite, encontre o limite, mas não o quebre.

Por que usar resistor, o que acontece quando isso ou aquilo, porque a leitura do sensor não é estável, qual valor realmente lido pelo sensor, etc. Fiz o teste e descobri que as leituras do sensor de proximidade estão "não limpas", preciso adicionar um resistor para acalme-se.

O sensor infravermelho tem um desempenho muito ruim e não normal sob o sol direto (eu sei disso antes, mas nunca realmente senti o impacto, até agora). A solução é usar um pouco de fita adesiva para isolar ao redor do receptor parte do sensor infravermelho, como mostra a foto.





Etapa 5:construir um mecanismo espiral


Esta é uma das partes mais importantes na máquina de venda automática, mecanismo de entrega.

Estou usando mecanismo espiral, com fio de alumínio (fio de 2mm de diâmetro), moldado manualmente em espiral com a ajuda de tubo de PVC de 9cm de diâmetro.

O fio espiral é amarrado a uma roda usando braçadeiras. Quando o motor DC estiver LIGADO, a roda girando e o fio espiral girarão.

Espirais giratórias estão, na verdade, convertendo movimentos rotacionais em lineares do produto.





Etapa 6:construir um mecanismo de identificação de moeda


A primeira foto é o sensor de moeda número 1, usando sensor de proximidade ou sensor de eletroímã de indução. Quando a moeda aceita passar por este sensor, ele acionará o Arduino para iniciar a contagem do tempo (em milissegundos).
  se o sensor1 for acionado, então comece a contar o tempo em milissegundos  

E quando for aceito o sensor de moeda de passagem de moeda número 2, um sensor de interuptor de distância, o arduino irá parar de contar o tempo e obter o tempo necessário para aquela moeda em particular, para viajar do sensor número 1 ao sensor número 2.
  se o sensor2 for acionado, então pare de contar o tempo em milissegundos. "tempos de viagem" é xxx milissegundos  

Não use muitos ímãs, pois isso pode emperrar e fazer a moeda parar no meio da rampa de moedas. Não queremos que isso aconteça, porque precisamos contar o tempo para cada moeda, para obter os "tempos de viagem" entre o sensor número 1 e o número 2. Esses "tempos de viagem" (em milissegundos) são usados ​​para o arduino para determinar o valor de moeda aceita.
  se "tempos de viagem" forem maiores ou iguais a "yyy" milissegundos, então sua moeda "aaa", caso contrário, será "bbb"  

Este é um vídeo em que estou testando esse método, identificando moedas usando ímã.





Etapa 7:construir um mecanismo de detecção de produto


Estou usando 3 sensores infravermelhos para detecção de produto quando sua queda é empurrada / movida por mecanismo espiral.

Quando o produto cair, ele acionará o sensor infravermelho, enviando o sinal OFF para o motor DC (via relé).

Este vídeo mostra como a detecção de produtos funciona nesta máquina de venda automática.





Etapa 8:Usando o LCD para obter informações


Neste projeto, eu faço o LCD mostrando informações (em moeda indonésia) sobre o valor da moeda aceita, toda vez que o cliente insere uma moeda. Ele também mostrará o saldo total da moeda aceita e outras instruções gerais sobre o passo a passo para operar esta máquina.

Quando a máquina é ligada
  • Visor PRINCIPAL ="Por favor, insira a moeda".
  • IF moeda inserida ="Exibir valor da moeda e saldo total".
  • SE a moeda não for inserida =manter a exibição PRINCIPAL.

Depois de moeda identificada com sucesso
  • SE o saldo total for maior ou igual ao preço do produto ="Selecione o produto".
  • SE o saldo total for menor que o preço do produto ="Por favor, insira mais moeda".

Depois que o mecanismo em espiral LIGAR (ocorrer entrega)
  • SE o mecanismo de detecção do produto for acionado ="Obrigado", transação concluída.
  • Atrasar e voltar à tela PRINCIPAL.





Etapa 9:finalização e teste


Finalmente, terminei a máquina de venda automática de lanches.;)

Após 3 meses ou mais, estou pronto para fazer alguns testes finais a esta máquina, de pagamento / teste de moeda, seleção de produto e entrega do produto.

Este é o vídeo de teste final da Snack Vending Machine:

Espero que este projeto ajude alguns de vocês, talvez lhes dê alguma inspiração ou ideia, sobre como construir e criar a próxima máquina de venda automática com Arduino.





Etapa 10:espaço para melhorias


Algumas ideias para melhorar esta máquina de venda automática de salgadinhos:
  • Adicione algum mecanismo de troca de moedas.
  • Aceite papel-moeda.
  • Aceite bitcoin e / ou pagamento digital.
  • Mostre o estoque do produto no LCD.
  • IoT:notifique pela Internet sempre que ocorrer uma transação.
  • IoT:notificar quando o estoque do produto estiver vazio ou baixo e etc.

Agradecimentos especiais:ITENAS Bandung, Departamento de Engenharia Mecânica.

Código

  • Código-fonte para máquina de venda automática de salgadinhos
Código-fonte para máquina de venda automática de salgadinhos Arduino
Este é o código-fonte que usei para este projeto de máquina de venda automática
 const byte SIAP =0; const byte KOIN_MASUK1 =1; const byte KOIN_MASUK2 =2; const byte KOIN_MASUK3 =3; const byte KOIN_MASUK4 =4; const byte KOIN_MASUK5 =5; const byte KOIN_MASUK6 =6; const byte KOIN_MASUK7 =7; const byte SALDO_500 =8; const byte SALDO_500500 =9; const byte SALDO_500500500 =10; const byte SALDO_500500500500 =11; const byte SALDO_5005005001000 =12; const byte SALDO_5005005001000 =12; const byte SALDO_500500500 =13 SALDO_5001000500 =14; const byte SALDO_50010001000 =15; const byte SALDO_5005001000 =16; const byte SALDO_1000 =17; const byte SALDO_10001000 =18; const byte SALDO_1000500 =19; const byte SALDO_1000500500 =20; const byte SALDO_10005001U000 =21; const byte SALDO_10005001U000 =21; 22; estado do byte =SIAP; const float jeda_waktu =876; tempo longo não assinado1; tempo longo não assinado2; tempo longo não assinado3; tempo longo não assinado4; tempo longo não assinado5; tempo longo não assinado6; tempo longo não assinado7; #define PIN_SCE 7 # definir PIN_RESET 6 # definir PIN_DC 5 # definir PIN_SDIN 4 # define PIN_SCLK 3 # define LCD_C LOW # define LCD_D HIGH # define LCD_X 84 # define LCD_Y 48static const byte ASCII [] [5] ={{0x00, 0x00, 0x00, 0x00, 0x00} // 20, {0x00, 0x00, 0x5f , 0x00, 0x00} // 21! , {0x00, 0x07, 0x00, 0x07, 0x00} // 22 ", {0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #, {0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $, { 0x23, 0x13, 0x08, 0x64, 0x62} // 25%, {0x36, 0x49, 0x55, 0x22, 0x50} // 26 &, {0x00, 0x05, 0x03, 0x00, 0x00} // 27 ', {0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (, {0x00, 0x41, 0x22, 0x1c, 0x00} // 29), {0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *, {0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +, {0x00, 0x50, 0x30, 0x00, 0x00} // 2c,, {0x08, 0x08, 0x08, 0x08, 0x08} // 2d -, {0x00, 0x60, 0x60, 0x00, 0x00} // 2e., {0x20, 0x10, 0x08, 0x04, 0x02} // 2f /, {0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0, {0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1, {0x42, 0x61, 0x51, 0x49, 0x46} // 32 2, {0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3, {0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4, {0x27, 0x45, 0x45, 0x45, 0x39} // 35 5, {0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6, {0x01, 0x71, 0x09, 0x05, 0x03} // 37 7, {0x36, 0x49, 0x49, 0x49, 0x36} // 38 8, {0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9, {0x00, 0x36, 0 x36, 0x00, 0x00} // 3a:, {0x00, 0x56, 0x36, 0x00, 0x00} // 3b; , {0x08, 0x14, 0x22, 0x41, 0x00} // 3c <, {0x14, 0x14, 0x14, 0x14, 0x14} // 3d =, {0x00, 0x41, 0x22, 0x14, 0x08} // 3e>, { 0x02, 0x01, 0x51, 0x09, 0x06} // 3f? , {0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @, {0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A, {0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B, { 0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C, {0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D, {0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E, {0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F, {0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G, {0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H, {0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I, {0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J, {0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K, {0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L, {0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M, {0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N, {0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O, {0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P, {0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q, {0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R, {0x46, 0x49, 0x49, 0x49, 0x31} // 53 S, {0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T, {0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U, {0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V, {0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W, {0x63, 0x14, 0 x08, 0x14, 0x63} // 58 X, {0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y, {0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z, {0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [, {0x02, 0x04, 0x08, 0x10, 0x20} // 5c  ¥, {0x00, 0x41, 0x41, 0x7f, 0x00} // 5d], {0x04, 0x02, 0x01, 0x02 , 0x04} // 5e ^, {0x40, 0x40, 0x40, 0x40, 0x40} // 5f _, {0x00, 0x01, 0x02, 0x04, 0x00} // 60 `, {0x20, 0x54, 0x54, 0x54, 0x78 } // 61 a, {0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b, {0x38, 0x44, 0x44, 0x44, 0x20} // 63 c, {0x38, 0x44, 0x44, 0x48, 0x7f} / / 64 d, {0x38, 0x54, 0x54, 0x54, 0x18} // 65 e, {0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f, {0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g, {0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h, {0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i, {0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j, {0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k, {0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l, {0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m, {0x7c , 0x08, 0x04, 0x04, 0x78} // 6e n, {0x38, 0x44, 0x44, 0x44, 0x38} // 6f o, {0x7c, 0x14, 0x14, 0x14, 0x08 } // 70 p, {0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q, {0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r, {0x48, 0x54, 0x54, 0x54, 0x20} / / 73 s, {0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t, {0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u, {0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v, {0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w, {0x44, 0x28, 0x10, 0x28, 0x44} // 78 x, {0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y, {0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z, {0x00, 0x08, 0x36, 0x41, 0x00} // 7b {, {0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | , {0x00, 0x41, 0x36, 0x08, 0x00} // 7d}, {0x10, 0x08, 0x08, 0x10, 0x08} // 7e â † �, {0x78, 0x46, 0x41, 0x46, 0x78} // 7f â † '}; vazio LcdWrite (byte dc, byte data) {digitalWrite (PIN_DC, dc); digitalWrite (PIN_SCE, LOW); shiftOut (PIN_SDIN, PIN_SCLK, MSBFIRST, dados); digitalWrite (PIN_SCE, HIGH);} void LcdCharacter (caractere char) {LcdWrite (LCD_D, 0x00); para (índice interno =0; índice <5; índice ++) {LcdWrite (LCD_D, ASCII [caractere - 0x20] [índice]); } LcdWrite (LCD_D, 0x00);} void LcdClear (void) {para (índice interno =0; índice  Siap"); LcdInitialise (); LcdClear (); LcdString ("Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000"); atraso (500);} loop vazio () {int x =analogRead (14); if (estado ==SIAP) {if (x> =33) {estado =KOIN_MASUK1; tempo1 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK1) &&(! (digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK1)) {Unsigned long diff1 =(millis () - time1 ); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff1); Serial.println ("ms"); if (diff1> jeda_waktu) {estado =SALDO_1000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp1000 Tambah Koin Koin Rp1000"); digitalWrite (13, ALTO); Serial.println ("koin =Rp 1000, Saldo:Rp 1000"); tom (2, 4200, 299); } else if (diff1  =33) {estado =KOIN_MASUK2; tempo2 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((estado ==KOIN_MASUK2) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(estado ==KOIN_MASUK2)) {sem sinal longo diff2 =(milis () - tempo2); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff2); Serial.println ("ms"); if (diff2> jeda_waktu) {estado =SALDO_5001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp1500 Tambah Koin Koin Rp1000"); tom (2, 4200, 299); Serial.println ("koin =Rp 1000, Saldo:Rp 1500"); } else if (diff2  =33) {estado =KOIN_MASUK3; tempo3 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK3) &&((digitalRead (13))))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK3)) {unsigned long diff3 =(millis () - time3); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff3); Serial.println ("ms"); if (diff3> jeda_waktu) {estado =SALDO_5005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp 2000"); tom (2, 4200, 799); } else if (diff3  =33) {estado =KOIN_MASUK4; tempo4 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK4) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK4)) {unigned long diff4 =(millis () - time4); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff4); Serial.println ("ms"); if (diff4> jeda_waktu) {estado =SALDO_5005005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tom (2, 4200, 799); } else if (diff4  =33) {estado =KOIN_MASUK5; tempo5 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK5) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK5)) {unigned long diff5 =(millis () - time5); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff5); Serial.println ("ms"); if (diff5> jeda_waktu) {estado =SALDO_50010001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tom (2, 4200, 799); } else if (diff5  =33) {estado =KOIN_MASUK6; tempo6 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK6) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK6)) {unsigned long diff6 =(millis () - time6); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff6); Serial.println ("ms"); if (diff6> jeda_waktu) {estado =SALDO_10001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp 2000"); tom (2, 4200, 799); } else if (diff6  =33) {estado =KOIN_MASUK7; tempo7 =milis (); tom (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("iniciar wkt"); }} else if ((state ==KOIN_MASUK7) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK7)) {unsigned long diff7 =(millis () - time7); Serial.println ("snsr2,"); Serial.println ("parar wkt"); Serial.print ("jeda wkt:"); Serial.print (diff7); Serial.println ("ms"); if (diff7> jeda_waktu) {estado =SALDO_10005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tom (2, 4200, 799); } else if (diff7  Siap"); }}} 

Peças personalizadas e gabinetes

Esta é a tela de impressão do meu modelo 3D SolidWorks para este projeto.

Processo de manufatura

  1. Máquina de venda automática
  2. Monitoramento de CO2 com Sensor K30
  3. Qual é sua altura?
  4. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  5. Arduino Cloud Sensor Tower
  6. Pistola de água com sensor de movimento
  7. Máquina de Venda Inversa (RVM)
  8. Preço de máquinas usadas
  9. O que é uma máquina de venda automática de leite?
  10. O que é uma máquina de venda automática de macarrão?