Мазмұны:
- 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 10:26
Сіз жекелендірілген мәзірлер мен адам/машина интерфейсін жақсартқыңыз келе ме? Мұндай жобалар үшін Arduino мен сенсорлы дисплейлерді қолдануға болады. Бұл идея тартымды болып көрінеді ме? Егер солай болса, бүгін бейнені қараңыз, онда мен сізге Mega Arduino мен сенсорлы дисплейі бар құрастыруды көрсетемін. Сіз экранда қалаған конструкцияларды қалай жасау керектігін, сондай -ақ белгілі бір пәрменді түрту және іске қосу үшін экран аймағын қалай анықтау керектігін көресіз. Мен түйреуіштердің санына байланысты Arduino Mega қолдануды таңдағанымды баса айтамын.
Сонымен, бүгін мен сенсорлы экранды, оның графикалық функцияларын және сенсорлық нүктені экранда қалай ұстау керектігін таныстырамын. Сонымен қатар орналасуды, жазуды, пішіндерді, түстерді және жанасуды жобалау сияқты барлық элементтері бар мысал құрайық.
1 -қадам: Arduino Mega 2560
2 -қадам: TFT LCD экраны 2,4 дюйм
Біздің жобада қолданатын бұл дисплейдің қызықты ерекшелігі бар: оның SD картасы бар. Алайда, бұған қатысты жазу мен оқу басқа видеода көрсетіледі, мен оны жақын арада шығарамын. Бүгінгі сабақтың мақсаты - бұл дисплейдің графикалық және сенсорлық экрандарының ерекшеліктерін қарастыру.
Сипаттамасы:
Экран өлшемі: 2,4 дюйм
MicroSD картасының ұясы
Түсті СКД: 65K
Жүргізуші: ILI9325
Ажыратымдылық: 240 x 320
Сенсорлық экран: 4 сымды резистивті сенсорлық экран
Интерфейс: 8 биттік деректер, 4 бақылау желісі
Жұмыс кернеуі: 3.3-5В
Өлшемдері: 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 функциясы нүктеден және биіктіктен тік сызық жүргізуге жауап береді.
жарамсыз drawFastVLine (int16_t x, int16_t y, int16_t с, uint16_t түсі);
4. drawFastHLine
DrawFastHLine функциясы нүкте мен енден көлденең сызық жүргізуге жауап береді.
void drawFastHLine (int16_t x, int16_t y, int16_t w, uint16_t түсі);
5. DrawRect
DrawRect функциясы экранда тіктөртбұрыш салуға, шығу нүктесін, оның биіктігі мен енін өткізуге жауап береді.
жарамсыз drawRect (int16_t x, int16_t y, int16_t w, int16_t с, 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 функциясымен бірдей, бірақ тіктөртбұрыштың дөңгеленген жиектері болады.
жарамсыз drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t с, int16_t радиусы, uint16_t түсі);
8. fillRoundRect
FillRoundRect функциясы drawRoundRect функциясымен бірдей, бірақ төртбұрыш берілген түспен толтырылады.
жарамсыз fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t с, 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
FillScreen функциясы экранды бір түспен толтыруға жауап береді.
жарамсыз fillScreen (uint16_t түсі);
14. setCursor
SetCursor функциясы курсорды берілген нүктеге жазуға орналастыруға жауап береді.
void setCursor (int16_t x, int16_t y);
15. setTextColor
SetTextColor функциясы жазылатын мәтінге түс беруге жауап береді. Бізде оны қолданудың екі әдісі бар:
жарамсыз setTextColor (uint16_t c); // жазу түсін өзгертеді onlyvoid setTextColor (uint16_t c, uint16_t bg); // жазу түсін және фон түсін орнатыңыз
16. setTextSize
SetTextSize функциясы жазылатын мәтінге өлшем тағайындауға жауап береді.
жарамсыз setTextSize (uint8_t s);
17. setTextWrap
SetTextWrap функциясы экранның шегіне жеткенде сызықты бұзуға жауапты.
жарамсыз setTextWrap (логикалық w);
18. setRotation
SetRotation функциясы экранды айналдыруға жауап береді (пейзаж, портрет).
жарамсыз setRotation (uint8_t r); // 0 (стандартты), 1, 2, 3
5 -қадам: Мысал
Біз дисплей беретін ресурстардың көп бөлігін қолданатын бағдарлама жасаймыз.
Әр түрлі өлшемдегі бірнеше жолдар жазайық, үш геометриялық фигура құрайық және оларға жанасу оқиғасын алайық, фигуралардың біріне тиген сайын біз олардың астындағы фигураның аты туралы кері байланыс аламыз.
6 -қадам: Кітапханалар
Алдымен біз қолданатын кітапханаларды анықтайық.
#қосу // жауап беру
#қосу // жауап беру
#қосу // comunicação com немесе дисплей
#қосу // comunicação com немесе дисплей
#«math.h» қосыңыз // есептік потенция
7 -қадам: анықтайды
Біз түйреуіштер үшін кейбір макростарды, сондай -ақ біз қолданатын маңызды мәндерді анықтаймыз.
// Portas de leitura das coordenadas do touch #YP A1 анықтау // Y+ #XM A2 анықтау // X- #demine YM 7 // Y- #depine XP 6 // X+ // valores encontrados através da calibração do touch // (x, y) ақаулардың алдын алудың қарапайым әдістері // максимум/мин (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 #define FEEDBACK_LABEL_X 10 #dinefine FEEDBACK_LABEL_Y 200 #200FinFoDeFineFineFoFineFineFineFEFEFEFEFEFEFEFFEFFEFFEED 10 #MAXPRESSURE 1000 анықтаңыз
Біз кейбір макростардың анықтамасын жалғастырамыз.
// Ассоциация nos das cores aos valores корреспонденттері #ҚАРА анықтаңыз 0x0000 #анықтаңыз ҚЫЗЫЛ 0xF800 #анықтаңыз ЖАСЫЛ 0x07E0 #анықтайтын CYAN 0x07FF #define САРЫ 0xFFE0 #define WHITE 0xFFFF // dados de cia de cia de cia de cia? const int Circle_x = 240; const int Circle_y = 125; // TouchScreen ts = TouchScreen (XP, YP, XM, YM) бағдарламаларының бір бөлігі; // SWTFT tft;
8 -қадам: Орнату
Орнатуда біз графикалық басқару объектісін инициализациялаймыз және бірінші конфигурацияларды жасаймыз.
void setup () {Serial.begin (9600); // бастапқы кестені қалпына келтіру tft.reset (); // индикаторлар бақылау тиф.teg.begin (); кешіктіру (500); // ландшафт tft.setRotation (1); // tft.fillScreen (ҚАРА); // бастапқы баптаулардың конфигурациясы үшін функцияларды орнату (); }
9 -қадам: ілмек
Циклда біз экранға тиетін нүктені таңдаймыз және жанасудың фигуралардың бірінде болғанын көреміз.
void loop () {TSPoint touchPoint = ts.getPoint (); // touch (x, y, z = pressao) pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); // x (y, grafico) графикалық картасы // ол TSPoint p X картасын қабылдамайтын ландшафттық пейзажды анықтауға мүмкіндік береді; 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 else if no triangulo else if (pointInsideTriangle (TSPoint (110, 150, 0), TSPoint (150, 100, 0), TSPoint (190, 150, 0), p)) {writeShape («Үшбұрыш»)); } // verifica se tocou басқа айналым болмайды if (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) // ені = 80 e биіктігі = 50 void createRect () {tft.fillRect (10, 100, 80, 50, ҚЫЗЫЛ); tft.drawRect (10, 100, 80, 50, АҚ); } // cria um triangulo com os vertices: // A = (110, 150); В = (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 -қадам: тіктөртбұрышқа тиетінімізді тексеріңіз
Бұл функция нүктенің тіктөртбұрыштың ішінде екенін тексереді.
// Funngão que verifica se or 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) {қайтару ақиқат; }} false қайтару; }
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 - шеңбер_x, 2) + pow (py - шеңбер_y, 2)); if (қашықтық <= шеңбер_радиус) {ақиқатты қайтару; } жалған қайтару; }
14 -қадам: Үшбұрышқа тиетінімізді тексеріңіз
Нүктенің дәл осылай тексерілуі үшбұрыштың ішінде де болады.
// ABC триангуло функцияларының орындалуы // ЖАҢА сендірудің бұрмалануы ЖАЛҒАН bool pointInsideTriangle (TSPoint a, TSPoint b, TSPoint c, TSPoint p) {float ABC = үшбұрышАудан (a, b, c)); өзгермелі ACP = triangleArea (a, c, p); float ABP = triangleArea (a, b, p); өзгермелі CPB = triangleArea (c, p, b); if (ABC == ACP+ABP+CPB) {true қайтару; } жалған қайтару; } // Funcão que calcula a de de triangulo com pontos x, y float triangleArea (TSPoint a, TSPoint b, TSPoint c) {қайтару (((bx - ax)*(cy - ay) - (cx - ax) * (by - ay))/2); }
15 -қадам: Объектінің атын түрту функциясы
Мұнда біз экранда қолданылатын геометриялық фигураның атын жазамыз.
// escRave 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 -қадам: файлдар
Файлдарды жүктеңіз:
МЕН ЖОҚ
Ұсынылған:
NodeMCU сенсорлы сенсорлы LDR температураны басқару релесі бар үйді автоматтандыру: 16 қадам
NodeMCU сенсорлы сенсорлы LDR температураны бақылау релесі бар үйді автоматтандыру: Менің бұрынғы NodeMCU жобаларымда мен Blynk қосымшасының екі тұрмыстық техникасын басқардым. Мен жобаны қолмен басқару және басқа мүмкіндіктерді қосу арқылы жаңарту үшін көптеген түсініктемелер мен хабарламалар алдым, сондықтан мен бұл ақылды үйді кеңейту қорабын жасадым
Музыкалық ассемблер: сенсорлы блокты сенсорлы интеграцияланған виртуалды аспап: 4 қадам
Музыкалық ассемблер: сенсорлы сенсорлы интеграцияланған виртуалды аспап: музыкалық аспапта ойнауды үйренгісі келетіндер көп. Өкінішке орай, олардың кейбіреулері құралдардың қымбат болуына байланысты оны бастамайды. Осыған сүйене отырып, біз жаңа бюджетті азайту үшін интеграцияланған музыкалық аспаптар жүйесін жасауды шештік
Сенсорлық экранмен өлшеу шкаласы (Arduino): 7 қадам (суреттермен)
Сенсорлық экранмен өлшеу шкаласы (Arduino): Сенсорлық экраны бар өлшеу шкаласын құрғыңыз келді ме? Сіз бұл туралы ешқашан ойламадыңыз ба? Жақсы оқыңыз және біреуін жасап көріңіз … TFT сенсорлы экраны мен жүктеу ұяшығының не екенін білесіз бе? Егер Иә, егер 1 -қадамға өтсеңіз, кіріспені оқудан бастаңыз. Кіріспе: Мен не
Өмір ағашы (Arduino Capacitive сенсорлы сенсорлы қозғалтқыш): 6 қадам (суреттермен)
Өмір ағашы (Arduino Capacitive Touch Sensor Driving Servo Motor): Бұл жоба үшін біз сыйымдылық сенсоры мен серво қозғалтқыштан тұратын күріш беретін ағаш жасадық. Кілемшеге қол тигізгенде, серво қозғалтқышы қосылады және күріш (немесе оған салғыңыз келетін нәрсе) шығарылады. Мұнда қысқаша бейне
Сенсорлы экранмен қолғап жасау: 3 қадам (суреттермен)
Сенсорлы экранда қолғаппен жұмыс жасау: Сіз мұны көп ноу-хаусыз бірнеше минут ішінде жасай аласыз. Қыс жақындап келеді (егер сіз Солтүстік жарты шарда болсаңыз) ал қыста суық келеді ауа райы, ал суық мезгілде қолғап келеді. Бірақ суықта сіздің телефоныңыз