Begemot911

Begemot911

Хочу исчезнуть, но не хватает духу, ненавижу свою жизнь
На Пикабу
47К рейтинг 50 подписчиков 361 подписка 60 постов 4 в горячем
Награды:
10 лет на ПикабуС Днем рождения, Пикабу!

Игрушки своими руками

Дракон печатался одним куском, три крупные детали: крылья, туловище. Сегменты неразъемные.
Окупится ли печать на заказ? Только с хорошим принтером, в который вложишься при покупке. То одна деталь отойдет от стола, то заело нить пластика и он напечатал только половину.

Показать полностью 4
31

Продолжение поста «Платформа на радиоуправлении»1

В продолжении развития самодельного ровера на радиоуправлении.

Изменена конструкция платформы, теперь клиренс выше и не застревает в глубоком снегу, плюс резиновые накладки на траки для лучшего сцепления. Ну и добавил питания, теперь 3 батареи 18650 и жрет три ампера, что позволяет стартовать бодро с места.

Корпус печатался частями и склеивался космофеном (опасно, пары ядовиты, а от пальцев не очищайте лезвием).

Радио модуль Nrf24L01 хорошо себя показал по стабильности передачи и дальности связи.

Продолжение поста «Платформа на радиоуправлении»
Показать полностью 1 1
1

Платформа на радиоуправлении1

Имея в распоряжении 3Д принтер и желание прокрастинировать собрал вот такую платформу. Исходная модель www.thingiverse.com/thing:1906831 . Либо из-за не соответствия размеров, приведших к изменению деталей гусеницы, колесо плохо входило в зацепление и заедало, егоп ришлось модифицировать, сделав зубчики немного меньше и более скругленными.
Управление по радиоканалу с микросхемой nrf24l01+ , управление джойстиком. Недостатки - низкая посадка, застревал, траки слишком гладкие, снег не зацеплялся и в итоге буксовал. Источник питания 2 последовательно включенные батареи 18650, драйвер LN298, 4 DC мотора.

Вес примерно 500 грамм, ушло много на траки из АБС пластика.

Платформа на радиоуправлении
Показать полностью 1 2

Новогодняя игрушка

Напечатано на 3Д принтере, покрыто белой акриловой грунтовкой и раскрашено масляными красками кривыми руками художника от слова "худо"

И наконец, как это получается у людей с прямыми руками
https://www.thingiverse.com/thing:164804

Показать полностью 4

Радар на ультразвуковом датчике

Информации о том, как подключить к Ардуино ультразвуковой датчик hc-sr04, как он работает навалом, даже как радар собрать. Чем отличается данный пост? Подключен цветной IPS  экран 240 х 240 на контроллере ST7789 и выводится информация в виде графика в полярных координатах.

Проблема данного дисплея в том, что он подключается по SPI протоколу, но на плате отсутствует вывод CS chip select.

Кто-то припаивает дополнительные проводки, но благо нашлись люди, написавшие библиотеку для данного случая https://github.com/ananevilya/Arduino-ST7789-Library

и нам понадобится ещё для работы с дисплеем https://github.com/adafruit/Adafruit-GFX-Library


Библиотека для серво двигателя Servo.h но она есть при установке программы Arduino IDE.

Из железа: Arduino UNO, серво двигатель, УЗ датчик hc-sr04, дисплей ST7789. УЗ датчик крепится к серводвигателю и получаем аналог антенны. Свой радар печатал на 3Д принтере.


Алгоритм работы программы:

1. Подключить дисплей, сбросить экран.

2. Установить  положение вала серводвигателя в начальное положение i=0

3. Провести измерение расстояния до объекта distance_sm .

4. Отобразить на экране расстояние в виде числа, построить линию с длинной пропорциональной расстоянию до объекта и углом, соответствующим углу вала сервы.

5. Повернуть "антенну" на шаг в 1 градус.

6. Повторить п.3-п.5 при изменении угла поворота от 0 до 180 градусов.

7. Повторить п.3-п.5 от 180 до 0 градусов.

Повтор организуется циклом при увеличении счетчика


Теперь про отрисовку: экран обладает своим контроллером, мы не пишем программу для непосредственной отрисовки пикселей на уровне железа, нам достаточно знать протокол передачи данных и использовать команды, используемые экраном, в библиотеке всё реализовано на естественном языке. Когда мы передаем в экран информацию, которую хотим отобразить, она там так и остается, пока ей на замену не придет новая. И вот тут интересный подводный камень: если мы выведем число "42", а затем "57", то пиксели второго числа наложатся на пиксели первого и будет каша. Можно очистить весь экран, сбросить, и отрисовать новый кадр изображения заново, но это займет кучу машинного времени и изображение будет мигать при смене информации. Делаем по другому: в начале выводим число "42" зеленого цвета, а перед отрисовкой "57" мы рисуем "42" цветом фона, например черным, а потом рисуем уже новое число. Также надо делать и с линиями.


Приведем основные команды, имеющиеся в библиотеке для работы с экраном:


tft.init(240, 240); //инициализация экрана, задаем его размер

tft.fillScreen(BLACK); //закрасить черным


tft.setCursor(0,0); //установить курсор

tft.setTextColor(GREEN); //цвет текста

tft.setTextSize(0); //размер от 1 до 5

tft.print("Angle:"); //вывод текста

tft.println("Angle:"); //вывод текста, новый текст будет с новой строки

tft.drawLine(x1, y1,x2, y2, color); //линия

tft.drawRect(x1, y1 ,x2, y2, color); //прямоугольник

tft.fillRect(x1, y1 ,x2, y2, color); //прямоугольник закрашенный

tft.drawCircle(x, y, radius, color); //круг

tft.fillCircle(x, y, radius, color); //круг заполненный


Цвета задаются в шестнадцетиричном код или десятичном от 0x0000 до 0xFFFF, либо по  соответствующих в библиотеке именам: BLACK, BLUE, RED, GREEN, MAGENTA, YELLOW, WHITE.


Теперь небольшой пример программы для дисплея


#include <Adafruit_GFX.h> // библиотека для графики
#include <Arduino_ST7789.h> // бибилотека для ST7789 (с или без CS пина)
#include <SPI.h>
#define TFT_DC 8
#define TFT_RST 9
#define TFT_MOSI 11 // (sda вывод на экране)
#define TFT_SCLK 13 // (scl вывод на экране)
Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST); //для дисплеев без CS
void setup(void) {
Serial.begin(9600);
Serial.print("Hello! ST7789 TFT Test");
tft.init(240, 240); // инициализация чипа ST7789, размер экрана 240x240
Serial.println("Initialized");
// large block of text
tft.fillScreen(BLACK);
tft.setCursor(0,0);
tft.setTextColor(GREEN);
tft.setTextSize(3);
tft.println("TEST");
delay(1000);
}
void loop() {
tft.fillScreen(BLACK);
for (int x=0; x < tft.width(); x+=6) {
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, random(64000));
delay(100);
}
}

Итоговый код программы, используемой в проекте: https://www.dropbox.com/s/t1hu976zxwk6te7/radar_ekran.rar?dl...


Показать полностью 2

Паркуюсь как могу

На фото запечатлен автомобиль, припаркованный на пешеходном переходе, загородивший часть прохода. Но всякое бывает, может места не было, а нужно срочно остановиться!?

А нет, все нормально, свободного места навалом на пол километра вперёд .  И кстати,  рядом есть придомовая парковка со свободными местами.

Показать полностью 2
Отличная работа, все прочитано!