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.