Balancer: Все сообщения за 20 Мая 2017 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Balancer

администратор
★★★★★
Monya> О, все хотел у кого-нибудь спросить - а как она на улице против яркого солнышка смотрится?

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

Monya> причем вечером на эту стенку солнышко светит.

Как осилю соединение с STM32 (а работы там непочатый край, библиотека сильно под Arduino заточена, много придётся переписывать и ещё больше — разбираться с самим STM32 :)) — могу попробовать на улице под солнцем сфотографировать :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
OAS> Плохо с детализацией объектов. Например, река название которой видно на более высоком уровне детализации не видна на низком уровне.

У Гугла сейчас с параметрами детализации стало совсем печально. И это их официальная позиция. Были статьи на этот счёт. Они специально сносят всё «лишнее», оставляя видимыми только какие-то единичные вещи и делая ставку на работу навигатора. Т.е. карты прокладывают маршрут, ты по нему едешь, видишь на карте только какие-то ключевые объекты. Всё.

Сейчас особенно часто бесит такой подход сейчас с номерами домов. Они в Гуглокартах под Андроидом видны только в очень крупном масштабе. Когда на карте всего несколько домов видно. Задолбаешься скроллить экран в поисках нужного. А чуть масштаб уменьшил — всё, номера пропадают.


Вот, 4 аттача, три первых — Гуглокарты в разном масштабе, четвёртая — Яндекс. С ним тоже теперь не всё гладко, это самый мелкий масштаб, когда номера домов видны, ещё мельче — и исчезают, но всё равно много лучше Гугла :)
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Monya> Ну если совсем для эксперимента, то можно обойтись диодами с резистором, если преобразователей уровня нет

Да есть, давно накуплено и с запасом, благо, они копейки стоят :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★

Ватикан вслед за Госдепом одернул Киев

Украинского посла вызвали «на ковер» к Папе Римскому из-за дискриминационных «церковных законов» //  www.kp.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Научился через Arduino (ЯП/IDE) управлять портами не через digitalWrite, а через регистры. То, что надо для управления панелью (вместо регистра PORTB Arduino).

Примерно так:
code cpp
  1. void setup() {
  2.   // Пока не знаю, как настроить вывод нативно, через GPIOA->regs->CRL не вышло.
  3.   // GPIOA->regs->CRL = (GPIOA->regs->CRL & 0x33333333) ; //set PA0-PA7 output — не работает
  4.   // Поэтому — через Arduino API
  5.   pinMode(PA0, OUTPUT);
  6.   pinMode(PA1, OUTPUT);
  7.   pinMode(PA2, OUTPUT);
  8. }
  9.  
  10. void loop() {
  11.   // Вешаем для теста RGB-светодиод каналами на PA0/PA1/PA2
  12.   // Инкрементим регистр состояний —
  13.   // младшие биты по очереди перебирают все комбинации
  14.   // Светодиод меняет цвета каждую секунду
  15.   GPIOA->regs->ODR++;
  16.   delay(1000);
  17. }


Подробнее по нативному программированию пинов:

GPIO registers and port manipulation - Arduino for STM32

Postby iwalpola » Sun Jul 03, 2016 9:35 pm Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Postby RogerClark » Sun Jul 03, 2016 10:42 pm Postby Ollie » Sun Jul 03, 2016 11:01 pm Postby RogerClark » Sun Jul 03, 2016 11:25 pm Postby iwalpola » Sun Jul 03, 2016 11:49 pm Postby smithy » Sun Sep 04, 2016 2:54 pm Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Postby atacanteknik » Mon May 08, 2017 7:05 am Postby edogaldo » Mon May 08, 2017 9:57 am Code: Select all Postby atacanteknik » Mon May 08, 2017 11:22 am Postby edogaldo » Mon May 08, 2017 11:53 am Return to “Code snipplets” Users browsing this forum: No registered users and 0 guests //  www.stm32duino.com
 

API - STM32duino wiki

Arduino boards support 8-bit PWM, which means that calls to analogWrite() take values between 0 (always off) and 255 (always on). STM32 boards support 16-bit PWM so values can range from 0 (always off) and 65535 (always on). For backward compatibility, in STM32duino, analogWrite() still takes values between 0 (always off) and 255 (always on); the new pwmWrite() function provides instead support to the higher resolution 0 (always off) and 65535 (always on). Arduino boards support 10-bit ADC, which means that calls to analogRead() will return values between 0 and 1023. //  Дальше — wiki.stm32duino.com
 

Потом прошил, наконец, USB-загрузчик. И теперь моя STM32 шьётся по USB, USB-Serial можно убрать в коробочку :) Рецепт есть тут:

Дешевая STM32 плата + Arduino IDE UPD 15.07.2016

Хотите прокачать ваши Arduino проекты? Заставить их работать быстрее, измерения и регулировку сделать точнее, ну и добавить баги(с новыми девайсами они... //  geektimes.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44
** Сообщение с ограниченным доступом **

Balancer

администратор
★★★★★
Для переписывания Arduino-библиотеки под сабж на STM32 разбираюсь с ней. Открыл совершенно новую для себя вещь :D

Матрица не имеет встроенного управления яркостью. Фактически она получает в несколько проходов битовые массивы вкл/выкл для каждого светодиода. 2048 светодиодов в 16 блоков, по 128 значений в каждом. Как передаётся конкретное значение — пока не разбирался. Интересное не в этом :)

Регулировка яркости осуществляется через PWM (ШИМ). Но 2048 светодиодов рулить через ШИМ/PWM — это ж сколько ресурсов нужно!

Так вот, в библиотеке матрицы используют некую модификацию PWM — Binary Code Modulation:

Batsocks - LED dimming using Binary Code Modulation - Introduction

Page 1/5 of the "LED dimming using Binary Code Modulation" article. This page introduces the "LED Binary Code Modulation" article. It introduces the fact that a rapidly blinking LED will appear dimmed to the eye. It also introduces the term "Duty Cycle".. //  www.batsocks.co.uk
 

На пальцах всё понятно. Вместо того, чтобы, как в PWM выставлять 1, ждать период скважинности, выставлять 0 и ждать полный период мину период скважинности, мы выставляем значение бинарного бита с выводимого уровня и ждём время, пропорциональное значению этого бита:

Для 4-х битного числа 0b1101 = 0xD = 13 (и, соответственно, скважинность 13/15):

При высокой частоте повторения это ничем для глаза не отличается от PWN с линейной скважинностью, но заявляется, что так нагрузка на процессор не зависит от числа каналов.

То есть, у PWM нагрузка на процессор:

- Не зависит от разрешения
- Зависит от числа каналов

У BCM:

- Не зависит от числа каналов
- Зависит от разрешения

Практика показывает, что Arduino отлично справляется. У матрицы 64x32 и 2048 светодиодов максимальная частота обновления где-то на уровне 100Гц.

Но почему получается независимость от числа каналов я пока не понимаю :) В моём представлении всё равно задержка на каждый канал же должна рассчитываться индивидуально. Что-то я недопонимаю...

Ещё ссылки по этому методу (на русском — нет)

Using Binary Code Modulation to control LED brightness

Pulse Width Modulation is definitely the preferred method of dimming an LED with a microcontroller, but we were interested in hearing about a different method called Binary Code Modulation. BCM do... //  hackaday.com
 

4-bit angle modulating 16 LEDs using Arduino and shift registers

So in this article we’re extending the previous example where we learned how to drive 16 LEDs using three pins of the Arduino. //  medium.com
 

BCM and Exponential Duty Cycle improve LED intensity levels

Having seen great success with my Larson Scanner I wanted to look around and see if there was room for improvement. I want to make it expandable and I knew I needed to work on the timing to get eno... //  jumptuck.com
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Ага, вижу первый упущенный ранее момент. Для честного PWM при 16 градациях сигнала при выводе массива нужно переключать состояние 16 раз за период. И выводить массив, соответственно, 16 раз. При BCM нужно 4 раза, хотя и с разной периодичностью.

При 256 градациях, соответственно, 256 раз и 8 раз.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
И, да, понятно также, почему нужно много памяти. Потому что вся работа идёт с буфером памяти и его содержимое сбрасывается периодически на матрицу для организации BCM. Без регулировки яркости можно бы было обновлять только отдельные плоскости. 2 пиксела в высоту, 64 в ширину, по биту на каждый цветовой канал, памяти нужно было бы только 2*64*3/8 = 48 байт :)

Можно будет спортивного интереса ради потом попробовать написать такую примитивную библиотечку. Хотя практического смысла мало, всё равно, как я понял, Adafruit GFX, через которую выводят тексты и фигуры, работает только с байтовым массивом. Хотя, нет, как-то же оно работает с цветными LCD-дисплеями 320x240 на Arduino Uno :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Monya> Кстати, это хорошо, спасибо за инфу, что в ST это работает. А то я с PIC, с ассемблера начинал - так для меня как раз при переходе на Arduino и корежило это digitalWrite

Так оно и в Arduno (т.е. на Atmega) тоже можно так работать. Регистры (на самом деле макросы, в зависимости от платформы) PORTB/PORC/PORTD. Пишешь в регистр битовую маску, она появляется на соответствующих пинах:

Arduino - PortManipulation

Reference   Language | Libraries | Comparison | Changes Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. The chips used on the Arduino board (the ATmega8 and ATmega168) have three ports: Each port is controlled by three registers, which are also defined variables in the arduino language. The DDR register, determines whether the pin is an INPUT or OUTPUT. The PORT register controls whether the pin is HIGH or LOW, and the PIN register reads the state of INPUT pins set to input with pinMode(). //  Дальше — www.arduino.cc
 
code cpp
  1. PORTD = B10101000; // sets digital pins 7,5,3 HIGH


При чём я об этом только вчера узнал :D :hihihi:
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Monya> А померять напругу при полной нагрузке прям на матрице и прям на блоке питания нечем?

У меня там как — к БП крепятся крокодилы, крокодилами я подцепился на провода питания матрицы. Измерил сейчас на крокодилах — 4.65В при обычной нагрузке и... 2.8В при пиковой! Вот такие проводочки у БП :D

Прикрутил провода матрицы сразу на выход БП — 4.99В и 3.98А на максимальном белом цвете. Впервые услышал, что БП какой-то звук издаёт :) Даже интересно, насколько круглое число, почти точно заявленные 4А :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Wyvern-2> Хорошая годная разгромная статья на тему

Опять путаются в двух соснах — ИИ и ИР.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Yuriy> Вот, кстати, очередное зеркало

Хотите, чтобы хранилось вечно, пока есть заинтересованные и без зависимости от любых хостингов — пишите в ZeroNet :) А на этом хостинге ещё и кодировкой всё плохо.

ZeroNet

ZeroNet p2p-сеть для бессерверной раздачи сайтов. ZeroNet: Decentralized websites using Bitcoin crypto and the BitTorrent network It's nowhere because it's everywhere! Sites are served by visitors. No single point of failure. How does it work? How does it work? Read the FAQ Read the FAQ Please donate to keep this project alive Please donate to keep this project alive //  zeronet.io   ZeroNet — Распределенные сайты через Bittorrent и Bitcoin — Стартовое окно ZeroNet В нынешнее время…// Infonesy — распределённая социальная система и прочее, связанное с p2p.
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
Итак, новая практическая задача :) Хочу повесить RGB LED матрицу у входной двери, чтобы при выходе из дому она давала напоминания. Какие-то TODO, погоду, предупреждение о невыключенном на кухне газе и т.п.

RGB LED матрица 64x32

Пришла китайская RGB-матрица Free shipping Led Display P5 32*64 Pixles 320*160mm 64x32 1/16 scan indoor rgb full color hub75 SMD p5 led display module-in LED Displays from Electronic Components & Supplies on Aliexpress.com | Alibaba Group Cheap led display module, Buy Quality smd p5 directly from China led display p5 Suppliers: Free shipping Led Display P5 32*64 Pixles 320*160mm 64x32 1/16 scan indoor rgb full color hub75 SMD p5 led display module //  www.aliexpress.com   Неплохо,…// Радиоэлектронный
 


Планировал сперва задействовать STM32 в роли управления матрицей + ESP8266 для связи. Сейчас думаю, что с адаптацией библиотеки матрицы под STM32 дело затянется, так что лучше временно задействовать нынешнюю Arduino Mega. А для связи хватит и банального nRF24L01 (кои всё равно без дела валяются).

Попалось по теме такое решение:

Или такое:

VaclavSynacek/RF24SN

RF24SN - Connects sensors/actuators to MQTT broker. Simpler than MQTT-SN. Runs on nRF24L01 hardware. //  github.com
 

Т.е. нода с матрицей будет по nRF24L01 связываться со шлюзом (или на отдельном Arduino, всё равно Ethernet-шилд без дела валяется тоже и вряд ли куда-то ещё его придумаю задействовать, или на Orange Pi), а уже шлюз будет получать данные с MQTT-брокера (и слать туда в том числе тоже — например, информация о присутствии человека в прихожей).

Думаю, начинать нужно с самого простого. А то так с места и не стронется :)

Надо сделать получение простой строки текста с MQTT и вывод на дисплей. Потом можно будет уже расширять до передачи цвета, картинок...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
D.Vinitski> Кажется, проще такой планшет привесить :D

Не проще. Он маленький (7", а у меня — 14" панель), тусклый, не умеет сам включаться для показа информации при надобности. Под него придётся писать дофига софта (возможно, вообще прошивку кастомизировать), намного более сложного, чем под Arduino :)

Всё, что у него положительного — это разрешение :)

...

Хотя, если бы кто-то решил вопрос софта и удалённого управления — то вариант интересный. Я думал об этом, у меня итак 10" планшет на кухне висит. Но готовых решений нет, а самому писать — это на порядок сложнее, чем под Arduino.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru