Агуулгын хүснэгт:
- Алхам 1: Arduino Mega 2560
- Алхам 2: TFT LCD бамбай 2.4 "
- Алхам 3: Номын сан
- Алхам 4: Чиг үүрэг
- Алхам 5: Жишээ
- Алхам 6: Номын сан
- Алхам 7: тодорхойлдог
- Алхам 8: Тохиргоо
- Алхам 9: Гогцоо
- Алхам 10: Бид тойрог дээр хүрч байгаа эсэхийг шалгаарай
- Алхам 11: Геометрийн хэлбэр үүсгэх функцууд
- Алхам 12: Бид тэгш өнцөгт хүрэх эсэхийг шалгана уу
- Алхам 13: Бид тойрог дээр хүрч байгаа эсэхийг шалгаарай
- Алхам 14: Бид гурвалжинд хүрч байгаа эсэхийг шалгаарай
- Алхам 15: Хүрсэн объектын нэрийг хэвлэх функц
- Алхам 16: Файлууд
Видео: Мэдрэгчтэй дэлгэц бүхий Arduino: 16 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Та илүү хувийн цэс, илүү сайн хүн/машины интерфэйсийг бий болгохыг хүсч байна уу? Ийм төслүүдийн хувьд та Arduino болон мэдрэгчтэй дэлгэц ашиглаж болно. Энэ санаа сэтгэл татам сонсогдож байна уу? Хэрэв тийм бол өнөөдөр видеог үзээрэй, энд би танд Mega Arduino болон мэдрэгчтэй дэлгэц бүхий угсралтыг үзүүлэх болно. Та хүссэн загвараа хэрхэн яаж дэлгэц дээр гаргах, мөн тодорхой командыг хүрч, идэвхжүүлэх дэлгэцийн бүсийг хэрхэн тодорхойлохыг харах болно. Би Arduino Mega -ийг олон тооны голтой тул ашиглахаар сонгосон гэдгээ онцолж байна.
Тиймээс өнөөдөр би танд мэдрэгчтэй дэлгэц, түүний график функц, дэлгэц дээрх мэдрэгчтэй цэгийг хэрхэн яаж барих талаар танилцуулах болно. Мөн байрлал тогтоох, бичих, хэлбэр дүрс, өнгө, мэдрэгч зэрэг бүх элементүүдийг агуулсан жишээг бүтээцгээе.
Алхам 1: Arduino Mega 2560
Алхам 2: TFT LCD бамбай 2.4"
Манай төсөлд ашигладаг энэхүү дэлгэц нь сонирхолтой онцлогтой: SD карттай. Гэсэн хэдий ч үүнтэй холбоотой бичих, унших ажлыг би өөр видеогоор үзүүлэх бөгөөд үүнийг удахгүй бүтээх болно. Өнөөдрийн хичээлийн зорилго нь энэхүү дэлгэцийн график болон мэдрэгчтэй дэлгэцийн онцлог шинж чанаруудыг тусгайлан авч үзэх явдал юм.
Онцлог шинж чанар:
Дэлгэцийн хэмжээ: 2.4 инч
MicroSD картны үүр
Өнгөт LCD: 65K
Жолооч: ILI9325
Нарийвчлал: 240 x 320
Мэдрэгчтэй дэлгэц: 4 утастай эсэргүүцэлтэй мэдрэгчтэй дэлгэц
Интерфэйс: 8 битийн өгөгдөл, 4 хяналтын шугам
Ашиглалтын хүчдэл: 3.3-5V
Хэмжээ: 71 x 52 x 7 мм
Алхам 3: Номын сан
Номын санг нэмэх:
"Adafruit_GFX"
"SWTFT"
"Мэдрэгчтэй дэлгэц"
Холбоосууд дээр дарж номын санг татаж авна уу.
Файлыг задалж, Arduino IDE -ийн номын сангийн хавтсанд буулгана уу.
C: / Програмын файлууд (x86) / Arduino / номын сан
Тэмдэглэл
Хөтөлбөрөө эхлүүлэхийн өмнө бид TOUCH шалгалт тохируулга хийх чухал асуудлыг шийдэх хэрэгтэй.
Мэдрэх цэгүүдийг дэлгэц дээр авахын тулд энгийн програмыг ашиглан цэг бүрийн утгыг (x, y) хадгална уу (доорх зурган дээр шараар тодруулсан болно). Эдгээр утгууд нь дэлгэц дээрх график цэгүүдтэй харьцахад чухал ач холбогдолтой юм.
#include // Portas de leitura das coordenadas do touchvoid #тодорхойлох YP A1 // Y+ нь аналог1 дээр байна #XM A2-ийг тодорхойлно // X- нь аналог2 дээр байна #тодорхойлох YM 7 // Y- нь Digital7 дээр байна #тодорхойлох XP 6 // X+ нь Digital6 дээр байна // TouchScreen ts = TouchScreen (XP, YP, XM, YM) гэсэн хоёр чухал арга хэмжээ авах; void setup () {Serial.begin (9600); } void loop () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) Serial.print ("X:"); Serial.println (touchPoint.x); Serial.print ("Y:"); Serial.println (touchPoint.y); саатал (1000); }
Алхам 4: Чиг үүрэг
Номын сангийн бидэнд санал болгож болох график функцуудыг авч үзье.
1. drawPixel
DrawPixel функц нь тухайн цэг дээр дэлгэц дээрх ганц цэгийг будах үүрэгтэй.
хүчингүй drawPixel (int16_t x, int16_t ба, uint16_t өнгө);
2. drawLine
DrawLine функц нь хоёр цэгээс шугам татах үүрэгтэй.
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t өнгө);
3. drawFastVLine
DrawFastVLine функц нь цэг ба өндрөөс босоо шугам зурах үүрэгтэй.
void drawFastVLine (int16_t x, int16_t y, int16_t h, uint16_t өнгө);
4. drawFastHLine
DrawFastHLine функц нь цэг ба өргөнөөс хэвтээ шугам зурах үүрэгтэй.
void drawFastHLine (int16_t x, int16_t y, int16_t w, uint16_t өнгө);
5. DrawRect
DrawRect функц нь дэлгэц дээр тэгш өнцөгт зурах, гарал үүслийн цэг, түүний өндөр, өргөнийг дамжуулах үүрэгтэй.
void drawRect (int16_t x, int16_t y, int16_t w, int16_t h, uint16_t өнгө);
6. fillRect
FillRect функц нь drawRect -тэй адил боловч тэгш өнцөгт нь өгөгдсөн өнгөөр дүүрэх болно.
void fillRect (int16_t x, int16_t y, int16_t w, int16_t h, uint16_t өнгө);
7. drawRoundRect
DrawRoundRect функц нь drawRect -тэй адил боловч тэгш өнцөгт нь дугуйрсан ирмэгтэй байх болно.
void drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиус, uint16_t өнгө);
8. fillRoundRect
FillRoundRect функц нь drawRoundRect -тэй адил боловч тэгш өнцөгт нь өгөгдсөн өнгөөр дүүрэх болно.
void fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиус, uint16_t өнгө);
9. drawTriangle
DrawTriangle функц нь 3 оройны цэгийг дамжуулж дэлгэцэн дээр гурвалжин зурах үүрэгтэй.
void drawTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t өнгө);
10. fillTriangle
FillTriangle функц нь drawTriangle -тэй адил боловч гурвалжинг өгсөн өнгөөр дүүргэх болно.
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t өнгө);
11. DrawCircle
DrawCircle функц нь эх цэг ба радиусаас тойрог зурах үүрэгтэй.
void drawCircle (int16_t x0, int16_t y0, int16_t r, uint16_t өнгө);
12. fillCircle
FillCircle функц нь drawCircle -тэй адил боловч тойрог нь өгөгдсөн өнгөөр дүүрэх болно.
void fillCircle (int16_t x0, int16_t y0, int16_t r, uint16_t өнгө);
13. дүүргэх дэлгэц
FillScreen функц нь дэлгэцийг нэг өнгөөр дүүргэх үүрэгтэй.
void fillScreen (uint16_t өнгө);
14. setCursor
SetCursor функц нь курсорыг тухайн цэг рүү бичих байрлалыг хариуцдаг.
хүчингүй setCursor (int16_t x, int16_t y);
15. setTextColor
SetTextColor функц нь бичих текстэд өнгө өгөх үүрэгтэй. Бидэнд үүнийг ашиглах хоёр арга бий:
хүчингүй setTextColor (uint16_t c); // зөвхөн бичих өнгийг тогтоодог setTextColor (uint16_t c, uint16_t bg) // бичих өнгө, дэвсгэр өнгийг тохируулна уу
16. setTextSize
SetTextSize функц нь бичих текстэд хэмжээ өгөх үүрэгтэй.
хүчингүй setTextSize (uint8_t s);
17. setTextWrap
SetTextWrap функц нь дэлгэцийн хязгаарт хүрсэн тохиолдолд шугамыг таслах үүрэгтэй.
хүчингүй setTextWrap (логик w);
18. setRotation
SetRotation функц нь дэлгэцийг эргүүлэх үүрэгтэй (ландшафт, хөрөг зураг).
void setRotation (uint8_t r); // 0 (стандарт), 1, 2, 3
Алхам 5: Жишээ
Бид програмыг бий болгож, дэлгэцийн бидэнд өгсөн ихэнх нөөцийг ашиглах болно.
Янз бүрийн хэмжээтэй хэдэн мөр бичиж, гурван геометрийн дүрс бүтээж, тэдгээрт хүрэх мэдрэмжээ олж авцгаая. Бид нэг дүрс дээр хүрэх тоолондоо доорх зургийн нэрний талаархи санал хүсэлтийг авах болно.
Алхам 6: Номын сан
Эхлээд ашиглах номын сангаа тодорхойлъё.
#include // responsável pela parte gráfica
#Include // хариулт өгөх
#оруулах // comunicação com o display
#оруулах // comunicação com o display
#"math.h" -ийг оруулна уу // тооцооллын потенци
Алхам 7: тодорхойлдог
Бид тээглүүрийн зарим макро, мөн бидний ашиглах чухал утгыг тодорхойлох болно.
// Portas de leitura das coordenadas do touch #тодорхойлох YP A1 // Y+ #deamine XM A2 // X- #define YM 7 // Y- #depine XP 6 // X+ // valores encontrados através da calibração do touch // faça um código simples para impimir os valores (x, y) a cada toque // então encontre os valores nas extremidades max/min (x, y) #define TS_MINX 130 #define TS_MINY 80 #define TS_MAXX 900 #define TS_MAXY 900 // tamanho dos textos #dexine TEXT_SIZE_L 3 #dexine TEXT_SIZE_M 2 #dexine TEXT_SIZE_S 1 // posicionamento dos textos de feedback #FEEDBACK_LABEL_X 10 #defineFEEDBACK_LABEL_X 200 #defineFEFEFEFEFEFEFEFEFFEFFEFFEFFEFFE 10 #MAXPRESSURE 1000 -ийг тодорхойлох
Бид зарим макрогийн тодорхойлолтыг үргэлжлүүлж байна.
// Associa o nome das cores aos valores корреспондентүүд const int тойрог_х = 240; const int тойрог_y = 125; // TouchScreen ts = TouchScreen (XP, YP, XM, YM) үйлдлийн системүүд; // SWTFT tft;
Алхам 8: Тохиргоо
Тохиргоонд бид график хяналтын объектоо эхлүүлж, анхны тохиргоог хийх болно.
void setup () {Serial.begin (9600); // дахин тохируулах эсвэл дахин тохируулах tft.reset (); // inicializa objeto controlador da lib grafica tft.begin (); саатал (500); // rotaciona a tela para landshaft tft.setRotation (1); // pinta a tela toda de preto tft.fillScreen (BLACK); // анхны тохиргоог тохируулах (); }
Алхам 9: Гогцоо
Гогцоонд бид дэлгэц дээр хүрч буй цэгийг авч, аль нэг зураг дээр хүрч байгааг харах болно.
void loop () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); // mapeia o ponto de touch para o (x, y) grafico // o fato de termos rotacionado a tela para Landscape implica no X хүлээн авагч эсвэл Y TSPoint p; p.x = газрын зураг (touchPoint.y, TS_MINY, TS_MAXY, 0, 320); p.y = газрын зураг (touchPoint.x, TS_MINX, TS_MAXX, 240, 0); // verifica se a pressão no toque foi suficiente if (touchPoint.z> MINPRESSURE && touchPoint.z <MAXPRESSURE) {// verifica se tocou no retangulo if (pointInRect (p)) {writeShape ("Rect"); } // verifica se tocou өөр гурвалжин байхгүй бол (pointInsideTriangle (TSPoint (110, 150, 0), TSPoint (150, 100, 0), TSPoint (190, 150, 0), p)) {writeShape ("Гурвалжин"); } // verifica se tocou өөр тойрог байхгүй бол (pointInCircle (p)) {writeShape ("Circle"); }}}
Алхам 10: Бид тойрог дээр хүрч байгаа эсэхийг шалгаарай
Энэ үе шатанд бид дэлгэцийг эхлүүлэхтэй холбоотой бөгөөд харуулах текстийн өнгийг тодорхойлдог.
/ *Desenha na tela os elementos */ void initialSettings () {tft.setTextColor (WHITE); tft.setTextSize (TEXT_SIZE_S); tft.println ("ACESSE"); tft.setTextColor (ШАР); tft.setTextSize (TEXT_SIZE_M); tft.println ("MEU BLOG"); tft.setTextColor (НОГООН); tft.setTextSize (TEXT_SIZE_L); tft.println ("FERNANDOK. COM"); createRect (); createTriangle (); createCircle (); tft.setCursor (FEEDBACK_LABEL_X, FEEDBACK_LABEL_Y); tft.setTextColor (CYAN); tft.setTextSize (TEXT_SIZE_L); tft.println ("SHAPE:"); }
Алхам 11: Геометрийн хэлбэр үүсгэх функцууд
Бид тодорхойлсон гарал үүсэлтэй тэгш өнцөгт, гурвалжин, тойрог үүсгэдэг.
// cria um retangulo com origem (x, y) = (10, 100) // width = 80 e height = 50 void createRect () {tft.fillRect (10, 100, 80, 50, RED); tft.drawRect (10, 100, 80, 50, ЦАГААН); } // cria um triangulo com os vertices: // A = (110, 150); B = (150, 100); C = (190, 150) void createTriangle () {tft.fillTriangle (110, 150, 150, 100, 190, 150, ШАР); tft.drawTriangle (110, 150, 150, 100, 190, 150, ЦАГААН); } // cria um circulo com origem no ponto (x, y) = (240, 125) e raio = 30 void createCircle () {tft.fillCircle (240, 125, 30, GREEN); tft.drawCircle (240, 125, 30, ЦАГААН); }
Алхам 12: Бид тэгш өнцөгт хүрэх эсэхийг шалгана уу
Энэ функц нь цэг нь тэгш өнцөгт дотор байгаа эсэхийг шалгадаг.
// Função que verifica se o ponto está dentro do retângulobool pointInRect (TSPoint p) {// max/min X do retangulo if (px> = 10 && px <= 90) {// max/min Y do retangulo if (py) = 100) {буцах үнэн; }} худал буцаах; }
Алхам 13: Бид тойрог дээр хүрч байгаа эсэхийг шалгаарай
Энэ нь тойрогтой адил юм.
// distancia entre pontos D = raiz ((xb-xa)^2 + (yb-ya)^2) // vefifica se o ponto está dentro do circulo // se a distancia do ponto pra origem do circulo for menor ou igual ao raio, ele está dentro bool pointInCircle (TSPoint p) {хөвөх зай = sqrt (pow (px - тойрог_х, 2) + pow (py - тойрог_y, 2)); if (зай <= тойрог_радиус) {буцах үнэн; } худал буцах; }
Алхам 14: Бид гурвалжинд хүрч байгаа эсэхийг шалгаарай
Тухайн цэгийн ижил шалгалт нь гурвалжин дотор хийгддэг.
// Funcão que verifica se o ponto p esta dentro do triangulo ABC // Үүсгэгчийг солих ҮНЭН нь хуурамч bool pointInsideTriangle (TSPoint a, TSPoint b, TSPoint c, TSPoint p) {float ABC = гурвалжинАреа (a, b, c); хөвөх ACP = гурвалжинАреа (a, c, p); хөвөх ABP = гурвалжинАреа (a, b, p); хөвөх CPB = гурвалжинАреа (c, p, b); if (ABC == ACP+ABP+CPB) {буцах үнэн; } худал буцах; } // Função que calcula a um de triangulo com nos pontos x, y float triangleArea (TSPoint a, TSPoint b, TSPoint c) {fabs буцах (((bx - ax)*(cy - ay) - (cx - ax) * (by - ay))/2); }
Алхам 15: Хүрсэн объектын нэрийг хэвлэх функц
Энд бид ашиглаж буй геометрийн дүрсийн нэрийг дэлгэц дээр бичнэ.
// escreve na tela o nome da figura geométrica que foi tocadavoid writeShape (String хэлбэр) {tft.fillRect (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y, 170, 30, BLACK); tft.setCursor (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y); tft.setTextSize (TEXT_SIZE_G); tft.setTextColor (ЦАГААН); tft.println (хэлбэр); }
Алхам 16: Файлууд
Файлуудыг татаж авах:
INO
Зөвлөмж болгож буй:
Мэдрэгчтэй дэлгэц бүхий ESP32 дээр суурилсан RFID уншигч: 7 алхам
Мэдрэгчтэй дэлгэц бүхий ESP32 дээр суурилсан RFID уншигч: Энэ хэсэгт би ESP32 DEV KIT C модуль, RC-522 дээр суурилсан уншигч компьютер, AZ-Touch ESP хэрэгслийг ашиглан TFT гаралттай хананд бэхлэх энгийн RFID уншигч хэрхэн бүтээхийг зааж өгөх болно. Та энэ уншигчийг хаалга руу нэвтрэх эсвэл халдлага үйлдэх зорилгоор ашиглаж болно
Micropython бүхий TTGO (өнгөт) дэлгэц (TTGO T-дэлгэц): 6 алхам
Micropython бүхий TTGO (өнгөт) дэлгэц (TTGO T-дэлгэц): TTGO T-Display нь ESP32 дээр суурилсан 1.14 инчийн өнгөт дэлгэцтэй самбар юм. Уг самбарыг 7 доллараас бага үнээр худалдаж авах боломжтой (тээвэрлэлт, шагналыг banggood дээрээс үзнэ үү). Энэ бол дэлгэцийг багтаасан ESP32 -ийн гайхалтай шагнал юм
Мэдрэгчтэй дэлгэц, Max2Play бүхий Raspberry Pi Hi-Fi аудио дамжуулагч: 9 алхам
Мэдрэгчтэй дэлгэц, Max2Play бүхий Raspberry Pi Hi-Fi аудио дамжуулагч: Энд бид шинэ Raspberry Pi Touch Streamer-ийн угсралтын талаар дэлгэрэнгүй ярих болно. Энэхүү тохиргоонд шаардлагатай бүх бүрэлдэхүүн хэсгүүдийг агуулсан багцыг Max2Play дэлгүүрээс олж болно. Хэрэв та эдгээр эд ангиудыг эзэмшдэг бол хэргийг тусад нь худалдаж авч болно
ESP8266 ба мэдрэгчтэй дэлгэц бүхий DIY Geiger тоолуур: 4 алхам (зурагтай)
ESP8266 ба мэдрэгчтэй дэлгэц бүхий DIY Geiger тоолуур: ШИНЭЧЛЭЛТ: WIFI болон НЭМЭГДСЭН ОНЦЛОГУУДТАЙ ШИНЭ, СОНГОГДСОН ВЕРЦИЙН ЭНДЭЭР ИОНжуулагч цацрагийг илрүүлж, хэрэглэгчдээ хүрээлэн буй орчны цацрагийн аюултай түвшний талаар анхааруулж чадах төхөөрөмж болох Geiger Counter -ийг зохион бүтээжээ. хэт танил "үгүй" дээр дарна уу
2 инчийн TFT дэлгэц ба олон мэдрэгчтэй харьцангуй өнгө бүхий термометр: 5 алхам
2 инчийн TFT дэлгэц ба олон мэдрэгч дээр харьцангуй өнгө бүхий термометр: Би хэд хэдэн температур мэдрэгчийн хэмжилтийг харуулдаг дэлгэц хийсэн. Хамгийн гайхалтай зүйл бол температурын дагуу утгын өнгө өөрчлөгддөг: > 75 хэм Celcius = RED > 60 > 75 = Улбар шар > 40 < 60 = ШАР > 30 < 40