arduino接收坐标_使用Arduino制作智能餐厅菜单点餐系统

如今,自动化系统无处不在,不管是在家庭、办公室还是某些大型行业中,都配备了自动化系统。饭店/旅馆也采用了最新的自动化趋势,通过机器人来运输食品,以及使用平板电脑下订单。通过使用平板电脑这种数字式菜单,客户可以轻松地选择食品。此信息将发送到餐厅的厨房,并在显示屏上显示。

在本篇文章中,我们将使用Arduino开发板、TFT显示屏和433MHz RF发射器/接收器模块制作一个智能餐厅点餐系统。本文中,发射器部分将由Arduino Uno、TFT显示屏和RF发射器组成,客户可以使用它们选择食物并下订单。接收器部分由Arduino Uno、LCD模块、RF接收器和蜂鸣器组成,将安装在餐厅厨房中以跟踪订单食品。

所需的组件

●    Arduino Uno开发板

●    433MHz射频发射器和接收器

●    2.4英寸TFT液晶触摸屏

●    1602 LCD模块

●    I2C模块

TFT LCD触摸屏与Arduino的连接

2.4英寸TFT LCD触摸屏是与Arduino UNO / Mega兼容的彩色TFT显示屏,还带有触摸板和SD卡插槽。此TFT显示模块具有明亮的背光和彩色240X320像素的显示屏。它还包括单个RGB像素控制,使其分辨率比黑白显示器好得多。

TFT显示与Arduino的连接非常简单,您只需要将TFT显示器安装在Arduino Uno板上即可,如下图所示。

67c4590f184a2d3c41bc1ca5e5ec073c.png

电路连接图

智能餐厅菜单点餐系统包括“ RF发射器和接收器”部分。发送器和接收器端均使用Arduino Uno进行数据处理。下面给出了发射器和接收器部分的电路图。

发射器部分的电路连接

该项目的发射器部分由Arduino Uno、RF发射器和TFT显示屏模块组成。此部分用于从TFT显示屏上显示的菜单进行订购。Arduino Uno是处理所有数据的发射器侧的主控,RF发射器模块用于将所选数据发送到接收器。射频发射器模块的数据引脚连接到Arduino的数字引脚12,而VCC和GND引脚分布连接到Arduino的5V和GND引脚。

b23954c52a6a6b23c10a49d0c99fe4ec.png 2f011ed14ebd2390253b4247569aaf6d.png

接收器部分的电路连接

该项目的接收器部分包括一个Arduino Uno、RF接收器、1602 LCD模块和I2C模块。RF接收器用于从发射器部分接收数据,LCD模块用于显示接收到的数据。每当下新订单时,都会使用蜂鸣器发出声音。RF接收器的数据引脚连接到Arduino的数字引脚11,而VCC和GND引脚分别连接到Arduino的5V和GND引脚。蜂鸣器的正极引脚连接到Arduino的数字引脚2,负极引脚连接到Arduino的GND引脚。I2C模块的SCL和SDA引脚连接到Arduino的模拟引脚A5和A4,而VCC和GND引脚连接到Arduino的5V和GND引脚。

591b4d4e974976e60d1ac16975746183.png b0bf01a4c707118302695a0a374297ee.png

代码说明

文档末尾提供了智能餐厅菜单点单系统的RF发送器和接收器端的完整代码。首先可以从以下的链接下载该项目中使用的所有库。

●    RadioHead库

●    SPFD5408库

RadioHead库用于RF发射器/接收器模块,而SPFD5408库用于TFT显示。

发射器部分的代码:

首先在代码中包含所有必需的库。RH_ASK.h库用于发送器和接收器模块之间的通信。 SPFD5408_Adafruit_GFX.h是用于TFT显示的Core图形库。

#include #include #include #include #include 

之后,为RH_ASK创建一个名为“driver”的示例。

RH_ASK driver;

之后,为您的TFT显示器定义最小和最大校准的X和Y轴值。

#define TS_MINX 125#define TS_MINY 85#define TS_MAXX 965#define TS_MAXY 905

现在在drawHome函数内部,为您的TFT屏幕绘制一个布局。在这里,tft.fillScreen用于设置背景颜色。

tft.drawRoundRect函数用于创建一个填充的矩形。tft.drawRoundRect函数的语法如下:

tft.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)

在这里:

x0 =矩形起点的X坐标

y0 =矩形起点的Y坐标

w =矩形的宽度

h =矩形的高度

radius =圆角半径

color =矩形的颜色。

tft.fillRoundRect函数用于绘制填充的矩形。tft.fillRoundRect函数的语法如下:

tft.fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)tft.fillScreen(WHITE);tft.drawRoundRect(0, 0, 319, 240, 8, WHITE);     //Page border  tft.fillRoundRect(30, 40, 100, 40, 8, GOLD);  tft.drawRoundRect(30, 40, 100, 40, 8, WHITE);  //Dish1  tft.fillRoundRect(30, 90, 100, 40, 8, GOLD);  tft.drawRoundRect(30, 90, 100, 40, 8, WHITE);  //Dish2  tft.fillRoundRect(30, 140, 100, 40, 8, GOLD);   //Dish3  tft.drawRoundRect(30, 140, 100, 40, 8, WHITE);

在TFT屏幕上创建按钮之后,现在在按钮上显示文本。tft.setCursor用于设置要从其开始文本的光标。

  tft.setCursor(60, 0);  tft.setTextSize(3);  tft.setTextColor(LIME);  tft.print("   Menu");  tft.setTextSize(2);  tft.setTextColor(WHITE);  tft.setCursor(37, 47);  tft.print(" Dish1");

void transmit函数内部,每1秒将数据发送到接收器一侧。

void transmit(){   driver.send((uint8_t *)msg, strlen(msg));  driver.waitPacketSent();  delay(1000);  }

在void loop函数内部,使用ts.getPoint函数读取原始ADC值。

TSPoint p = ts.getPoint();

现在,使用map函数将Raw ADC值转换为像素坐标。

p.x = map(p.x, TS_MAXX, TS_MINX, 0, 320);p.y = map(p.y, TS_MAXY, TS_MINY, 0, 240);

将原始ADC值转换为像素坐标后,输入Dish1按钮的像素坐标,如果有人触摸此区域之间的屏幕,则将消息发送到接收器。

if (p.x > 180 && p.x < 280 && p.y > 190 && p.y < 230  && p.z > MINPRESSURE && p.z < MAXPRESSURE)      {        Serial.println("Dish1");        msg = "Dish1";        transmit();        tft.fillRoundRect(30, 40, 100, 40, 8, WHITE);        delay(70);        tft.fillRoundRect(30, 40, 100, 40, 8, GOLD);        tft.drawRoundRect(30, 40, 100, 40, 8, WHITE);        tft.setCursor(37, 47);        tft.println(" Dish1");        delay(70);        }

对于所有其他按钮,使用相同的步骤。

接收器的代码

对于RF接收器部分代码,首先包含RF接收器和LCD模块的库。还包括SPI.h库,用于在Arduino和RF接收器之间建立SPI通信。

#include #include  // Not actualy used but needed to compile#include 

void loop函数内,连续检查传输的消息。如果接收器模块收到消息,则在LCD模块上显示该消息并发出蜂鸣声。

    if (driver.recv(buf, &buflen)) // Non-blocking    {      int i;      digitalWrite(buzzer, HIGH);      delay(1000);      digitalWrite(buzzer, LOW);.      lcd.print("T1:");      lcd.print((char*)buf);

测试Arduino智能餐厅菜单系统

连接完所有硬件以及上传了发送器和接收器部分的代码后,现在该测试项目了。要测试项目,请按TFT显示屏上的一个按钮,这样接收器侧的LCD模块上显示菜名和桌号,桌号为T1。如果接收器侧LCD没有显示任何内容,请检查您的TFT屏幕是否正常工作。

a49e8f50e694f36989f7dcccc8238152.png

以上就是使用Arduino和TFT显示屏制作智能餐厅菜单点餐系统的方法。您还可以更改屏幕的方向来添加更多按钮。

欢迎打赏+点赞+留言+转发!

更多内容请点击“” 》》

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值