요약
Arduino와 VL53L0X 레이저 거리 측정기를 사용하는 프로젝트를 만들고/코딩하려고 하는데,
거리 텍스트를 표시하는 1602 LCD, 스위핑 RADAR/SONAR 스코프를 표시하는 TFT LCD.
근처에 있는 연락처들을 위한 빨간 점들과 레인지파인더를 오고 가게 하는 서보가 있습니다.
테스트베드 3D 프린트는 위의 것들을 위한 기반입니다. 코드는 여전히 진행 중이며, 빨간색 접촉선이 표시된 후 스위프 라인을 지우는 데 문제가 있습니다.
인쇄 설정
채우기:
15
노트:
서보 브래킷 때문에 지원자를 사용해야 합니다.
인쇄 후




아두이노 코드
/***
이름: RadarTestBed02
버전: 02
날짜: 08-01-22
마지막 개정: 08
작성자: dcc
설명: 아두이노를 사용하는 프로젝트를 만들고 코드를 작성하려고 시도했습니다.
VL53L0X 레이저 거리 측정기, 거리 텍스트를 표시하는 1602 LCD,
빨간색 점들로 스위핑 RADAR/SONAR 스코프를 표시하는 TFT LCD.
근처에 있는 사람들을 위해, 그리고 레인지파인더를 다시 스위핑할 수 있는 서보를 위해.
그리고 또다시. 이는 여전히 지우는 데 어려움이 있기 때문에 진행 중인 작업입니다.
빨간색 연락처가 표시된 후 라인을 스위핑하세요. 저도 그렇게 하려고 했어요.
라다르 화면에 연락처가 나타날 때 비프음과 불빛이 번쩍 들어오게 하세요.
다른 파일들:
-- <2022_RadarTestBed.stl> = 주요 본체 베이스
-- <2022_RadarMastShort.stl> & <2022_RadarMastLong.stl>
-- <67x8x3_4_5_Bars.stl> = 배터리 상자의 크기 차이를 위한 것입니다.
-- 그리고 몇몇의 '.jpg' 사진들
-- 프로젝트를 사용할 수 있습니다 & &
---- 조립 전에 서보를 설정하려면
하드웨어:
-- 마운트된 2.8인치 TFT LCD가 있는 Arduino MEGA 2560 (또는 동등한 제품)
-- 표준 플러그가 장착된 스위치된 상자에 있는 트윈 9V 배터리들
-- 전원 공급 장치가 있는 반 브레드보드
-- 1602 LCD 디스플레이 - I2C 버전 장착
-- 활성 버저와 RGB LED 장착
-- i2c 버스용 각 24.7k에서 10k 풀업 저항기 2개
****/
/***
라이브러리 포함, 핀 정의, 선언 및 정의
상수와 변수, 그리고 객체 초기화:
****/
// 라이브러리들
I2C를 위한 // 포함하세요.
시리얼 모니터를 위해 // 포함하세요.
1602 LCD를 위한 // 포함
서보를 위해 // 포함하세요.
포함 // 코어 그래픽 라이브러리
포함하세요 // 하드웨어 특정 라이브러리
//#include "Adafruit_VL53L0X.h" // 레이저 거리 측정기(작동하지 않았습니다)
포함하세요 // Pololu 버전
// 16자리 2줄 디스플레이를 위해 LCD 주소를 0x27로 설정하세요.
LiquidCrystal_I2C lcd(0x27, 16, 2); // 다른 것은 0x29 (VL53L0X ???)입니다.
레이저 비행 거리 센서를 설정하세요.
//Adafruit_VL53L0X lox = Adafruit_VL53L0X(); // 문제가 있었어요.
VL53L0X 센서;
// TFT LCD
LCD_CS A3을 정의하세요. // 칩 선택은 아날로그 3으로 이동합니다.
LCD_CD A2를 정의하세요. // 명령/데이터는 아날로그 2로 전송됩니다.
LCD_WR A1을 정의하세요. // LCD 쓰기는 아날로그 1로 이동합니다.
LCD_RD A0을 정의하세요. // LCD 읽기는 아날로그 0으로 이동합니다.
LCD_RESET A4 정의 // Arduino의 리셋 핀에 대체로 연결할 수 있습니다.
인트 X1, Y1, X2, Y2, X3, Y3, X4, Y4, L1, L2, L3; // 선의 끝점 좌표와 길이
int mm, cm, in; // 밀리미터, 센티미터, 인치 단위의 거리
int D1, D2, D3; // 각도
플로트 R1, R2, R3; // 각도(라디안 단위)
일로오_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// 16비트 색상 값에 이름을 지정하십시오.
BLACK을 정의하세요 0x0000
BLUE 0x001F를 정의하세요.
CYAN을 정의하세요 0x07FF
DARKCYAN을 정의하세요 0x03EF
DARKGREEN을 정의하세요 0x03E0
DARKGREY 0x7BEF를 정의하세요.
GREEN을 정의하세요 0x07E0
GREENYELLOW 0xAFE5 정의하기
LIGHTGREY 0xC618을 정의하세요.
MAGENTA 0xF81F를 정의하세요.
MAROON을 정의하세요 0x7800
NAVY를 정의하세요 0x000F
OLIVE 0x7BE0 정의하기
오렌지를 정의하세요 0xFD20
PINK을 정의하세요 0xF81F
퍼플을 정의하세요 0x780F
RED 0xF800을 정의하세요.
화이트를 정의하세요 0xFFFF
노란색을 정의하세요 0xFFE0
서보, 부저, 그리고 조명(RGB LED 모듈)
// 또는 220오姆의 저항기를 포함시키세요)
서보 servo01; // 서보 객체를 만들기
서보 각도를 저장하기 위한 변수입니다. 서보 각도는 0에서 180도까지의 값을 가질 수 있습니다.
const int servoPin = 37; // 접시 움직임을 위한 서보 핀
const int buzzer = 49; // 활성 버저 핀(49을 Grnd로 직접 연결)
const int LED_R = 39; // 장착된 RGB-LED 빨간색 핀
const int LED_G = 41; // 설치된 RGB-LED 그린 핀
const int LED_B = 43; // 설치된 RGB-LED 파란색 핀
/***
한 번만 실행되는 초기 '설정' 코드:
****/
void setup()
{
Serial.begin(9600);
와이어.시작();
sensor.init();
센서.setTimeout(500);
서보, 부저, 그리고 조명들.
서보01.attach(서보 핀); // 서보를 서보 객체에 연결하기
서보01.write(90); // 서보가 앞을 향하기 시작합니다.
pinMode(buzzer, OUTPUT); // 핀을 "출력"으로 설정합니다.
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
digitalWrite(LED_R, LOW); // 기본적으로 LED를 '오프' 상태로 만들기
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
// LCD를 초기화하고, 백라이트를 켜고, 메시지를 인쇄하세요.
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("시작하고 있습니다....");
지연(100);
// 320x240 TFT LCD에 RADAR/SONAR 스코프 배경 그리기
// 센터 허브는 x=160, y=230입니다(화면 중간, 하단에서 10픽셀 떨어진 위치).
tft.reset();
tft.begin(0x9341); // 또는 변수를 삽입하기 위해 사용하세요.
tft.setRotation(3);
tft.fillScreen (DARKGREEN);
tft.setTextColor (YELLOW);
tft.setTextSize(2);
tft.println ("레이더/소나र 테스트 베드");
tft.setTextSize (1);
tft.println ("(2022년 7월)");
tft.drawCircle (160, 230, 150, 오렌지);
tft.drawCircle (160, 230, 148, 오렌지);
tft.drawLine (160, 230, 5, 230, LIGHTGREY);
tft.drawLine (160, 230, 50, 120, LIGHTGREY);
tft.drawLine (160, 230, 160, 75, LIGHTGREY);
tft.drawLine (160, 230, 270, 120, LIGHTGREY);
tft.drawLine (160, 230, 315, 230, LIGHTGREY);
tft.setTextSize(2);
tft.setTextColor (ORANGE);
tft.setCursor(205, 73);
tft.print ("75 cm");
tft.setTextColor (LIGHTGREY);
tft.setCursor (17, 210);
tft.print ("0");
tft.setCursor (30, 100);
tft.print ("45");
tft.setCursor (150, 55);
tft.print ("90");
tft.setCursor(270, 100);
tft.print ("135");
tft.setCursor (270, 210);
tft.print ("180");
테스트
tft.drawLine (160, 230, 200, 120, WHITE);
tft.fillCircle (200, 120, 4, RED);
tft.drawLine (160, 230, 80, 120, YELLOW);
tft.fillCircle (80, 120, 4, RED);
delay(1500);
// 신호 시작
블립();
플래시 그린();
블립();
플래시 옐로우();
블립();
플래시 레드();
블립();
지연(500);
tft.drawLine (160, 230, 200, 120, DARKGREEN);
tft.fillCircle (200, 120, 4, DARKGREEN);
tft.drawLine (160, 230, 80, 120, DARKGREEN);
tft.fillCircle (80, 120, 4, DARKGREEN);
그것은...
/
반복적으로 실행되는 주요 '루프' 코드:
/
void loop()
{
// 서보를 청소하기
서보 각도가 20일 때부터 160까지, 2단위씩 증가시키면서 // 20에서 160까지 2단위씩 스위프를 하세요.
{
servo01.write(servoAngle); // 서보를 "servoAngle" 위치로 보내기
delay(50); // 서보가 움직이도록 50ms를 기다리세요.
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" 거리
lcd.setCursor(0, 1);
lcd.print(sensor.readRangeSingleMillimeters() / 10);
만일 (센서.타임아웃 발생했다면)
{
lcd.print("타임아웃");
}
그것은...
서보 각도가 160일 때부터 20보다 크거나 같을 때까지, 서보 각도를 2단위씩 줄여주세요. // 160에서 20까지 2단위씩 스위프를 하세요.
{
서보01.write(서보 각도); // 서보를 서보 각도로 보내기
지연(50);
그것은...
}
/
호출되어야 할 다른 기능들:
/
비프() 함수 // 200/1000초 동안 버저 소리를 내게 합니다.
{
buzzer에게 digitalWrite(HIGH)를 보내세요.
delay(100);
buzzer에서 digitalWrite(LOW);
돌아가세요;
}
비어드 블립() // 100/1000초 동안 부저를 울리다.
{
buzzer에게 digitalWrite(HIGH)를 보내세요.
delay(50);
buzzer에서 digitalWrite(LOW);
돌아가세요;
}
비어야 플래시 레드() // RGB LED를 300/1000초 동안 빨간색으로 플래시 하기
{
digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
delay(300);
digitalWrite(LED_R, LOW);
돌아가세요;
}
비어야 플래시 옐로우() // RGB LED를 300/1000초 동안 노란색으로 플래시 합니다.
{
digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW);
delay(300);
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
돌아가세요;
}
비어스 플래시 그린() // RGB LED를 초당 300/1000초 동안 그린색으로 번쩍이게 만들기
{
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW);
delay(300);
digitalWrite(LED_G, LOW);
돌아가세요;
}
비어야 플래시 블루() // RGB LED를 300/1000초 동안 파란색으로 플래시 하세요.
{
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, HIGH);
delay(300);
digitalWrite(LED_B, LOW);
돌아가세요;
}
비어야 flickBlue() // RGB LED를 파란색으로 100/1000초 동안 깜빡이게 하기
{
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, HIGH);
delay(100);
digitalWrite(LED_B, LOW);
돌아가세요;
}
Tags
Model Source
