Programa I - Básico

Entorno de programación

O entorno de programación utilizado foi LEGO NXT-G

A máquina utiliza un controlador Lego Mindstorms NXT , sensores de contacto para as moedas e tres servomotores

O programa inicial

Este é o programa básico inicial que fixemos. O sistema detecta se se introduciron 50 céntimos (cunha moeda de 50 ou 5 de 10 céntimos) e permite a elección de 3 tipos de caramelos.

 

Definimos variables:

Para o funcionamento da máquina tivemos que definir diversas variables.

  • A primeira variable, chamáda "venda", serve para que o robot saiba cando se lle introduciron cincuenta céntimos.
  • A variable "céntimos" serve para contar as moedas de dez céntimos que introducimos e saber cando se introduciron cincuenta con moedas de dez.
  • A variable "caramelo" serve para distinguir cal das tres clases de caramelos que hai foi escollida.

 

Bucle:

O progama comeza coa identificación das moedas, que logo explicaremos. Cando xa están introducidos cincuenta céntimos o robot emite un pitido para que o cliente sepa que que xa introduciu o importe.

A continuación, a pantalla reiníciase e aparecen as palabras "Elixe caramelos" e os tres tipos de caramelos que hai.

Para rematar, o cliente selecciona os caramelos cos botóns que ten o robot.

 

Identificación das moedas:

O bloque "Moedas" é a rutina encargada da identificación das moedas

As moedas poden ser

  • de 10 céntimos (ten que contar 5 moedas)Identifícaas o sensor de contacto do porto 4.
  •  de 50 céntimos. Identifícaa o sensor de contacto do porto 1

Para a selección de moedas, a pantalla do robot reiníciase, e aparece na parte superior: "Introduce 50 cent."

No progama o seguinte que introducimos foi unha bifurcación atendendo ó sensor de contacto conecatado no porto 1, que é o encargado da identificación das moedas de cincuenta céntimos.

Se o sensor está presionado (pola moeda) na variable "venda" escribese o valor 1, logo o robot espera a que o sensor non este presionado para proseguir as instrucións do progama.

 

Cando o sensor 1 non esta presionado, o progama continua e chega a segunda bifurcación, que depende do sensor de contacto conectado ó porto 4. Este sensor é o utilizado para detectar as moedas de dez céntimos.

Se o sensor é presionado pola moeda, emite un pitido e sumalle 1 a variable "centimos", logo espera a que o sensor estea libre para continuar co funcionamento do robot.

Se o sensor non se presiona, non realiza ningunha acción e pasa o seguinte paso do progama.

 

O último paso da imaxe corresponde á comparación do valor da variable "centimos". Cando céntimos = 5 significa que xa se introduciron 5 moedas, e o programa escribe 1 na variable "venda" para que permita a elección de caramelos.

Como todo isto atopase dentro dun bucle, precisamos elaborar unha forma para saír del cando o diñeiro sexa introducido, e foi por iso que definimos a variable "venda" anteriormente.

Como xa explicamos, cando se introducía unha moeda de cincuenta céntimos ou cinco de dez, nesta variable grababase o valor un. Por iso, cando esta variable vale un facemos, tal e como indica a imaxe, que saiamos do bucle.

 

Elección de caramelos:

 

Unha vez activada a variable "venda" a máquina permite a elección de tres tipos diferentes de caramelos.

 

O bloque "elixircaramelos" explícase a continuación:

Primeiro esperamos a que a persoa seleccione o caramelo que desexa premendo os botóns do controlador. Segundo sexa a eleción, o programa escribe 1, 2 ou 3 na variable "caramelo"

Segundo o valor da variable "caramelo" temos 4 opcións:

A primeira opción é que aínda non se elexíse ningún tipo de caramelo, polo que "caramelo" vale 0. Nesto caso, o robot non executa ningunha acción.

Isto repítese continuamente, ata que se selecciona un dos tipos de caramelo.

Cando a variable "caramelo" vale 1, é porque foron seleccionados as grageas e a entrega destes caramelos faise mediante un volquete conectado ao porto A. (Este mecanismo xa foi explicado no apartado anterior).

Na pantalla do robot aparece a menxase "Gragea, grazas." Emite un pitido e deposita os caramelos inclinandose cara adiante, para rematar volvendo a posición inicial.

No caso de que se elixan froitas ou amorodos a variable "caramelo" vale 2 e 3 respectivamente. Estes caramelos expéndense mediante  o mecanismotipo aspa. Os portos de conexión son B e C.

Nestes casos, o robot, ó igual que antes dá as grazas e pita, pero no canto de inclinarse e volver a posición inicial, só xira 90 grados.

Ó final, nos tres casos, as variables "venda", "caramelo" e "centimos" poñense a cero.

 

Final:

 

Cando a variable "venda" ponse a 0 significa que xa se produciu a venda, e saímos do bucle "elixir caramelos".

 

O programa volve a comezar para permitir unha nova venda.