Example.jpg
如上图所示,该系统可以设置为读取最多3个不同的轴,一旦每个传感器读取相应的距离,最终仪表区域读数显示在1.44“TFT中。
该项目非常适合练习Arduino中不同硬件半导体的交互,并为家庭和工业设计更好的技术解决方案。
项目
该产品包括从简单的直线距离,平方米和高达立方米的测量。由于我们使用的是HC-SR04超声波传感器,距离不应超过3.5米到4米之间,特别是在注册测量的线路中应该没有障碍物
根据我们在TFT屏幕菜单中选择的测量值,LED将开始闪烁,指示每个传感器应指向的位置,以便每个距离记录平方米,立方米或简单线性距离的角度。之后,只需点击ROTARY ENCODER的中心即可开始收集(“MEDIR选项”)每个距离。单个3轴图形将显示每个测量值,并由每个保持开启的LED确认。根据菜单Mts2或Mts3中的选定选项,结果将显示在右上角。
代码说明
库<SPI.h>,<Adafruit_GFX-h>,<TFT_ILI9163C.h>和<RotaryEncoder.h>是让我们的硬件被识别和配置的主要基础。
arduino
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <TFT_ILI9163C.h>
#include <RotaryEncoder.h>
此段包含我们将在TFT屏幕图像IC显示中使用的颜色的预定义变量,以及存储波动数据的变量。
arduino
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xF5A9
int menu_select= 0;
int menu_square= 0;
int menu_cubic = 0;
int menu_lineal= 0;
int menu_apaga = 0;
int mts2M = 0;
int mts2P = 0;
int mts3 = 0;
float lineal = 0;
int SELECT = 0;
int seleccion = 0;
int aboutA = 0;
const int Echo_Alto = 2;
const int Trigger_Alto = 3;
const int Echo_Ancho = 4;
const int Trigger_Ancho= 5;
const int Echo_Largo = 6;
const int Trigger_Largo= 7;
const int Led_An = A5;
const int Led_L = A4;
const int Led_Al = A0;
const int Backlight = A1;
int ledState = LOW; // ledState se usará para establecer el estado del LED
long previousMillis = 0; // almacenará la última vez que el estado del LED
long interval = 500;
这条附加线定义了TFT引脚连接到Arduino的位置。此外,一些额外的变量是存储从超声波传感器读数测量的每个区域。最后,代码显示Rotary Encoder Pins位置连接到Arduino(A2,A3)的位置以及按钮的位置(Pin8)。
arduino
#define __CS 10
#define __DC 9
#define __RST 12
long duration_L;
long duration_An;
long duration_Al;
float distance_L;
float distance_An;
float distance_Al;
float mtscuadrado =0;
float mtscubico =0;
RotaryEncoder encoder(A2, A3);
const int Push = 8; // Botón push de Rotary encoder
TFT_ILI9163C tft = TFT_ILI9163C(__CS, __DC,__RST);
我们将TFT屏幕初始化,然后将Serial Com初始化为9600 BPS。在此之后,pinMode被设置为HC-SR04传感器和旋转编码器的每个数字和模拟Arduino引脚。最后,您将看到digitalWrite(Backlight,LOW)命令,因为此CUBE的正常状态处于待机模式。在底部代码被发送到VOID power()。
arduino
void setup() {
tft.begin();
Serial.begin(9600);
pinMode(Push, INPUT_PULLUP);
pinMode(Trigger_Alto, OUTPUT);
pinMode(Echo_Alto, INPUT);
pinMode(Trigger_Ancho, OUTPUT);
pinMode(Echo_Ancho, INPUT);
pinMode(Trigger_Largo, OUTPUT);
pinMode(Echo_Largo, INPUT);
pinMode(Led_An, OUTPUT);
pinMode(Led_Al, OUTPUT);
pinMode(Led_L, OUTPUT);
pinMode(Backlight,OUTPUT);
digitalWrite(Backlight, LOW);
power();
}
arduino
void loop(){
//tft.fillScreen();
tft.setCursor(35, 20);
tft.setTextColor(ORANGE);
tft.setTextSize(2);
tft.println("CUBIC");
tft.setTextSize(1);
tft.setCursor(93, 13);
tft.println("3");