Оглавление:
- Запасы
- Шаг 1. Как это работает…
- Шаг 2: загрузка кода
- Шаг 3: Необходимые библиотеки:
- Шаг 4: Подключения
- Шаг 5: взбейте все вместе
- Шаг 6: Дальнейшие улучшения:
Видео: Робот, который скажет, обманывает ли продавец электроники вас или нет: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
В прошлом году мы с отцом пошли в недавно открывшийся магазин робототехники / электроники, очень близко к тому месту, где мы живем. Когда я вошел туда, он был полон электроники, серовиков, датчиков, малиновых писем и ардуинов. На следующий день мы пошли в тот же магазин и купили много сеньоров и 3 Arduinos на сумму около 150 долларов США. Как только я пошел домой, ни один другой продукт, кроме Arduino Mega, не работал. Нас обманули примерно на 130 долларов, что очень много.
Итак, я решил создать робота, который может проверить около 12 датчиков и 2 двигателя (все еще работающих на сервоприводе) и определить, неисправен ли продукт.
Давайте прямо в это дело!
Запасы
1. Arduino UNO
2. 2,4-дюймовый сенсорный TFT-дисплей.
3. пара перемычек
4. датчики и моторы, чтобы вы могли их протестировать (здесь я использовал - датчик движения, датчик газа MQ6, датчик звука, потенциометр и датчик уровня воды)
Шаг 1. Как это работает…
Я запрограммировал Arduino для создания интерактивного пользовательского интерфейса с TFT-дисплеем. Как мы знаем, у TFT-дисплея есть только один свободный вывод, то есть вывод A5. (если вы используете UNO). Таким образом, любой датчик, который использует аналоговые контакты для чтения данных, совместим с этой настройкой …
В пользовательском интерфейсе вы можете изменить цвет фона рабочего стола и открыть приложение, разработанное мной для Arduino для тестирования датчиков.
При открытии приложения вы увидите 2 варианта: ВХОД и ВЫВОД. поэтому, если вы нажмете «Ввод», отобразятся 4 датчика (он совместим с 12, но я еще не запрограммировал его, так как у меня приближаются экзамены…. Нет времени:(. Любой может редактировать код…)
И он также может проверить, работает ли серводвигатель, если вы подключаете его в слот.
посмотри:
Шаг 2: загрузка кода
Код представляет собой программу из 600 строк, которую я тщательно написал примерно за 50 часов. В нем есть несколько ошибок, поэтому, пожалуйста, исправьте его и отправьте мне по почте ([email protected]).
Загрузите код и подключите экран TFT к Arduino. Я рекомендую вам поиграть с пользовательским интерфейсом, чтобы вы лучше его освоили.
Код:
#включают
#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0x000F #define0define #define #define RED 0x000F #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 6 #define YM A2 7 #define YM 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int sound; состояние символа = 6; int touch = 0; int color = ЧЕРНЫЙ; int redir = 0; int ota; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (БЕЛЫЙ); tft.setCursor (60, 160); tft.setTextColor (ЧЕРНЫЙ); tft.print («Проведите пальцем, чтобы войти»); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, ВЫХОД); pinMode (YP, ВЫХОД); if (pz> MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && ру <100) {касание = 26; }} если (касание == 1 && состояние == 6) {tft.setRotation (0); tft.fillScreen (цвет); звук = 0; tft.fillRect (200, 180, 80, 140, БЕЛЫЙ); tft.drawRect (201, 181, 81, 141, ЧЕРНЫЙ); tft.fillRect (80, 30, 100, 100, СИАН); tft.drawRect (81, 31, 101, 101, ЧЕРНЫЙ); tft.fillRect (10, 30, 50, 100, ТЕМНО-СИНИЙ); tft.drawRect (11, 31, 51, 101, ЧЕРНЫЙ); tft.fillRect (10, 180, 30, 120, ФИОЛЕТОВЫЙ); tft.drawRect (11, 181, 31, 121, ЧЕРНЫЙ); tft.fillRect (45, 180, 30, 120, СИНИЙ); tft.drawRect (46, 181, 31, 121, ЧЕРНЫЙ); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ЧЕРНЫЙ); tft.fillRect (115, 180, 30, 120, ЗЕЛЕНЫЙ); tft.drawRect (116, 181, 31, 121, ЧЕРНЫЙ); tft.fillRect (150, 180, 30, 120, ЖЕЛТЫЙ); tft.drawRect (151, 181, 31, 121, ЧЕРНЫЙ); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЕЛЫЙ); tft.fillRect (200, 35, 12, 12, БЕЛЫЙ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРНЫЙ); tft.drawRect (200, 35, 12, 12, ЧЕРНЫЙ); tft.drawCircle (210, 40, 14, БЕЛЫЙ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print («Настройки»); tft.fillRoundRect (45, 75, 75, 75, 4, БЕЛЫЙ); tft.drawRoundRect (45, 75, 75, 75, 4, ЧЕРНЫЙ); tft.fillRect (75, 75, 15, 30, ЧЕРНЫЙ); tft.fillRect (75, 120, 15, 30, ЧЕРНЫЙ); tft.fillRect (90, 105, 30, 15, ЧЕРНЫЙ); tft.fillRect (45, 105, 30, 15, ЧЕРНЫЙ); состояние = 7; touch = 0; ota = 0; } if (touch == 2) {tft.fillScreen (БЕЛЫЙ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЕЛЫЙ); tft.fillRect (200, 35, 12, 12, БЕЛЫЙ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРНЫЙ); tft.drawRect (200, 35, 12, 12, ЧЕРНЫЙ); tft.drawCircle (210, 40, 14, ЧЕРНЫЙ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРНЫЙ); tft.drawLine (300, 30, 270, 30, ЧЕРНЫЙ); tft.setCursor (20, 200); tft.print («персонализация»); tft.setCursor (20, 170); tft.print («выйти из системы»); tft.setCursor (20, 140); tft.print («периферийные устройства»); tft.setCursor (20, 110); tft.print («О программе»); touch = 1; состояние = 2; } if (touch == 10 && state == 2) {tft.fillScreen (БЕЛЫЙ); tft.setCursor (10, 160); tft.setTextColor (ЧЕРНЫЙ); tft.print («Создано и разработано»); tft.setCursor (100, 190); tft.print ("автор:"); tft.setCursor (60, 220); tft.print («Подросток из Индии»); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЕЛЫЙ); tft.fillRect (200, 35, 12, 12, БЕЛЫЙ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРНЫЙ); tft.drawRect (200, 35, 12, 12, ЧЕРНЫЙ); tft.drawCircle (210, 40, 14, ЧЕРНЫЙ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРНЫЙ); tft.drawLine (300, 30, 270, 30, ЧЕРНЫЙ); состояние = 6; } if (touch == 11 && state == 2) {tft.fillScreen (БЕЛЫЙ); tft.setCursor (60, 40); tft.print («Выбрать»); tft.setCursor (40, 60); tft.print («цвет фона»); tft.fillRect (60, 180, 45, 45, КРАСНЫЙ); tft.fillRect (120, 180, 45, 45, ЖЕЛТЫЙ); tft.fillRect (180, 180, 45, 45, СИНИЙ); tft.fillRect (240, 180, 45, 45, ЗЕЛЕНЫЙ); tft.fillRect (60, 130, 45, 45, ПУРПУРНЫЙ); tft.fillRect (120, 130, 45, 45, ТЕМНО-СИНИЙ); tft.fillRect (180, 130, 45, 45, СВЕТЛОГРЕЙ); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, БЕЛЫЙ); tft.drawRect (60, 80, 45, 45, ЧЕРНЫЙ); tft.fillRect (120, 80, 45, 45, ЧЕРНЫЙ); tft.fillRect (180, 80, 45, 45, ОЛИВКОВЫЙ); tft.fillRect (240, 80, 45, 45, ФИОЛЕТОВЫЙ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЕЛЫЙ); tft.fillRect (200, 35, 12, 12, БЕЛЫЙ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРНЫЙ); tft.drawRect (200, 35, 12, 12, ЧЕРНЫЙ); tft.drawCircle (210, 40, 14, ЧЕРНЫЙ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРНЫЙ); tft.drawLine (300, 30, 270, 30, ЧЕРНЫЙ); состояние = 6; если (redir == 1) {цвет = БЕЛЫЙ; } если (redir == 2) {цвет = ЧЕРНЫЙ; } если (redir == 3) {цвет = ОЛИВКОВЫЙ; } если (redir == 4) {цвет = ФИОЛЕТОВЫЙ; } если (redir == 5) {цвет = ПУРПУРНЫЙ; } if (redir == 6) {color = NAVY; } если (redir == 7) {color = LIGHTGREY; } если (redir == 8) {color = CYAN; } если (redir == 9) {цвет = КРАСНЫЙ; } если (redir == 10) {цвет = ЖЕЛТЫЙ; } если (redir == 11) {цвет = СИНИЙ; } если (redir == 12) {цвет = ЗЕЛЕНЫЙ; }} если (касание == 26) {ota = 1; tft.fillScreen (БЕЛЫЙ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЕЛЫЙ); tft.fillRect (200, 35, 12, 12, БЕЛЫЙ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРНЫЙ); tft.drawRect (200, 35, 12, 12, ЧЕРНЫЙ); tft.drawCircle (210, 40, 14, ЧЕРНЫЙ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРНЫЙ); tft.drawLine (300, 30, 270, 30, ЧЕРНЫЙ); tft.setRotation (1); tft.setCursor (30, 80); tft.print («Ввод»); tft.setCursor (30, 150); tft.print («Вывод»); tft.drawRect (25, 130, 90, 30, ЧЕРНЫЙ); tft.drawRect (25, 60, 90, 30, ЧЕРНЫЙ); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print («Уровень воды»); tft.setCursor (150, 170); tft.print («Уровень газа»); tft.setCursor (150, 120); tft.print («Расстояние»); tft.setCursor (150, 70); tft.print («Звук»); touch = 1; состояние = 2; }}} в то время как (звук == 1) {tft.fillScreen (БЕЛЫЙ); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Уровень звука ="); Serial.println (sensorVoltage); задержка (1000); если (звук == 0) {перерыв; }}}}
Шаг 3: Необходимые библиотеки:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Ссылки на Github для того же:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Шаг 4: Подключения
Вам понадобится 6 перемычек. 3 кобеля и 3 суки. припаяйте их прямо к плате Arduino следующим образом:
Шаг 5: взбейте все вместе
Подсоедините провода к Arduino (см. Изображение), при необходимости воспользуйтесь клеевым пистолетом…
Затем прикрепите экран TFT и проверьте свои датчики.
Спасибо за прокрутку вниз. Не забудьте проголосовать за меня, если считаете этот проект уникальным и полезным.
Удачи и остерегайтесь мошенников в сфере электроники?
Шаг 6: Дальнейшие улучшения:
- Больше совместимости с датчиками
- Код серводвигателя должен быть закончен
- Еще одно приложение, которое может взаимодействовать с модулями Bluetooth, чтобы с его помощью мы могли управлять роботом с питанием от Bluetooth.
- Исправление ошибок
Рекомендуемые:
Сделать ЛЕГКИЙ зеркальный куб бесконечности - НЕТ 3D-печати и НЕТ программирования: 15 шагов (с изображениями)
Сделать ЛЕГКИЙ зеркальный куб бесконечности | НИКАКОЙ 3D-печати и НИКАКОГО программирования: всем нравится хороший бесконечный куб, но похоже, что его будет сложно сделать. Моя цель в этом Руководстве - показать вам, как его сделать шаг за шагом. Не только это, но и с инструкциями, которые я вам даю, вы сможете сделать одно о
Нет Макея Макея? Нет проблем ! Как сделать свой Макей Макей дома!: 3 шага
Нет Макея Макея? Нет проблем ! Как сделать Макей Макей дома !: Вы когда-нибудь хотели принять участие в конкурсе Макей Макей на Instructables, но у вас никогда не было Макея Макея?! Теперь вы можете! В следующем руководстве я хочу показать вам, как создать свой собственный Макей Макей с помощью некоторых простых компонентов, которые вы можете
Делать прививку или нет? Проект по наблюдению за иммунитетом стада посредством моделирования заболеваний: 15 шагов
Делать прививку или нет? Проект по наблюдению за коллективным иммунитетом посредством моделирования заболеваний: Обзор проекта: наш проект исследует коллективный иммунитет и надеется побудить людей пройти вакцинацию, чтобы снизить уровень инфицирования в наших общинах. Наша программа моделирует, как болезнь поражает население с разным процентом вакцинированных
Как снять свой независимый фильм в метро Нью-Йорка, когда у вас нет разрешения: 12 шагов
Как снять свой независимый фильм в метро Нью-Йорка, когда вы не можете позволить себе разрешения: это простое руководство для начинающих независимых режиссеров, которые мечтают снять эту волшебную сцену в прекрасной системе метро Нью-Йорка, но которые не может позволить себе тысячи долларов, необходимых для получения разрешения на легальную стрельбу
У вас есть стереосистема и нет ремня безопасности?: 6 шагов
Есть стерео и без ремня безопасности? Я взял Pioneer AVIC-F700BT, это была сделка, поэтому у него отсутствовал жгут проводов предусилителя. Бывают случаи, когда вы обнаруживаете, что в дешевой автомобильной стереосистеме не хватает нескольких аксессуаров (это все, что я скажу об этом). Когда вы это сделаете, вам понадобится жгут проводов. Я