Засыпкин С.В.

Лаборатория электроники и программирования

Электронное периодическое издание

№ 26


Учредитель, гл. редактор и автор – Засыпкин С.В.

Цена свободная.

Дата выхода: 16.02.2016

Издание зарегистрировано в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор).

Свидетельство о регистрации СМИ – Эл № ФС77-43332 от 28 декабря 2010 г.

12+

 


©
Засыпкин С.В., 2011-2016

1. Примеры программ на С++ для персональных компьютеров.

                Продолжение. Начало см. в номере 24, 25.  

                Добавим кнопку «Очистить» с идентификатором «IDC_BUTTON_Clear_Read» и обработчиком:

void CTerminal_232_485Dlg::OnBnClickedButtonClearread()

{

                // TODO: добавьте свой код обработчика уведомлений

                c_IDC_RICHEDIT2_Read.SetSel(0, -1); // установим начальную позицию

                c_IDC_RICHEDIT2_Read.Clear(); // стираем весь текст

}


...

2. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Фоторегулятор (программный запуск).

                В журнале № 25 были рассмотрены примеры программы для фотореле. В данной статье рассматривается пример программы для  фоторегулятора. В зависимости от уровня освещенности будет изменяться яркость светодиода. Полученное значение с АЦП изменяется в диапазоне ~0 – 4096, а длительность импульса ШИМ от 0 до 1000. Поэтому используем коэффициент пересчета 4,096. Чем менее освещен фоторезистор, тем ярче горит светодиод. Схема подключения фоторезистора как в прошлой статье.

Пример программы сделан для компилятора «CooCox®» [4].  Отладочная плата - «STM32F4DISCOVERY» [5].
...

3. Автоматизация поиска информации в сети интернет. Занятие 7.

                Рассмотренный ранее способ ожидания окончания загрузки страницы рассчитан только на страницу без фреймов. Если страница с фреймами, то необходимо изменить функции ожидания окончания загрузки следующим образом:

...

4. Автоматизация размещения информации в сети интернет. Занятие 1.

                В данном цикле статей будем рассматривать, как автоматически подавать объявления в сети интернет для рекламы своей продукции.

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

Рассмотрим пример для сайта объявлений «www.avito.ru» [2].

Данные пароля и логина (в данном случае электронной почты) будем брать из файла «1.txt». Они записываются пользователем в первой и второй строках файла соответственно (у себя пишите реальные данные):

...

...

5. Работа с модулями радиосвязи в беспроводных сетях. Часть 9. Соединение точка-точка.

Продолжение (Начало см. в № 4-7).

Рассмотрим пример настройки и обмена данными между двумя модулями «132» (см. №5 статья 5) через ПК.


...

6. Программирование на языке С++ на

примере микроконтроллера ATmega328.

 Весы с интерфейсом «Ethernet».

Такая вещь может быть полезна не только торговым сетям, но и обычному рядовому потребителю. Например, вы можете периодически узнавать, сколько у вас осталось в овощной яме картошки, капусты, .... Если вы не были в яме, а вес изменился, то может запасы стали портиться или поедаются неустановленными лицами (или мордами).

Можно также установить это устройство в холодильник, что явно добавит ему "ума" и со временем он будет разговаривать с вами "на равных", предлагая с утра есть кашу и пряча от вас всю колбасу. Или взвесит вас вместо продуктов и совсем не откроется, скажет - "перевес, худеть пора".

Для измерения массы используется мостовой тензодатчик на 5 кг (в зависимости от задачи можно использовать датчики на другой вес) и плата с АЦП  «HX711» [8]. При написании программы используется библиотека «Hx711». В интернете можно найти разные версии данной библиотеки с разным набором функций. Используется самая простая версия. Для получения правильных значений веса нужно задать масштаб и количество измерений для осреднения результата. По умолчанию масштаб – 1992, осреднение  - за 25 измерений.
...


...

7. Лаборатория для предметной съемки. Исследование возможностей «китового» объектива для макросъемки и простые способы расширения этих возможностей.

                Данная статья поможет тем, кто хочет начать заниматься макросъемкой. Обычно у всех всегда возникает вопрос – покупать дорогой макрообъектив или воспользоваться недорогими приспособлениями для имеющегося «китового» объектива.

Имеющийся у меня фотоаппарат «Canon EOS 650D Kit 18-55mm IS II» имеет объектив с диапазоном фокусных расстояний 18-55 мм. Будем производить съемку на 55 мм. Максимальная диафрагма для этого фокусного расстояния - 5,6. Все снимки будут делаться на ISO – 100 и максимальной диафрагме. В процессе съемки будем получать максимально возможное  изображение предмета, когда еще возможно на него сфокусироваться в ручном режиме. Съемки производились в пасмурный день (естественное освещение) в комнате без дополнительного освещения с использованием штатива и макрорельсов.

Рассмотрим, какого минимального размера предмет может быть сфотографирован в полный кадр.

ISO 100; диафрагма5,6; выдержка 1сек:


...

8. Программирование на языке С на примере микроконтроллера STM32F407VGT6.  Работа с памятью  24LC16.

                В рассматриваемых микроконтроллерах отсутствует память EEPROM для хранения данных. Поэтому для хранения настроек необходимо использовать внешнюю EEPROM. Наиболее часто для этих целей применяются микросхемы 24 серии с интерфейсом I2C®. Пример работы с I2C® уже был приведен в журнале (№20, для работы с акселерометром). Сделаем программу на его основе.

                Подключим память к интерфейсу следующим образом:


...

9. Программирование на языке С на примере микроконтроллера STM32F407VGT6.  Работа с таймерами. Управление внешним сигналом (модулятор).

Для решения ряда задач требуется получить  модулированный сигнал.


На таймерах, имеющих схемы сравнения можно делать генераторы прямоугольных импульсов. Возможность управления выходом генератора внешним сигналом есть только у таймеров с расширенными возможностями 1 и 8. Сделаем для примера генератор на частоту 36 кГц (меандр) на таймере 1 (используется канал 1 – вывод PE9). Для управления генерацией используется PE15, на который нужно подать логическую «1» для  генерации и  «0», если генерация не нужна (активный уровень сигнала управления в принципе можно настроить программно). 

Примеры программ сделаны для компилятора «CooCox®» [4].  Отладочная плата - «STM32F4DISCOVERY» [5].
...

10. Программирование на языке С на примере микроконтроллера STM32F407VGT6.  Работа с акселерометром  LIS3DSH.

На отладочных платах могут устанавливаться разные типы акселерометров. В журнале (№ 20) был рассмотрен пример работы с акселерометром  LIS302DK по интерфейсe SPI®  . В данной статье рассмотрим пример работы с акселерометром LIS3DSH [16] по этому же интерфейсу. Следует отметить, что хотя многие настройки для LIS3DSH остались аналогичными LIS302DK, некоторые изменились, включая регистры в которых они находятся.

Для начала работы с акселерометром, его необходимо включить с помощью установки бит разрешения измерений по осям и установив отличную от 0 частоту преобразования в регистре «CTRL_REG4». В регистре «CTRL_REG6» установим бит инкремента адреса, чтобы считывать данные ускорений последовательно. После этого можно считывать значения регистров ускорений «OUT_X», «OUT_Y» и «OUT_Z».

Поскольку акселерометр производит оцифровку данных самостоятельно, то перед считыванием необходимо убедиться, что данные по всем осям обновлены и их можно считывать. Для этого есть специальный бит «XYZDA» в регистре «STATUS_REG».

Рассмотрим пример программы. Для передачи данных ускорений  используется  интерфейс UART.  После инициализации программа циклически опрашивает флаг готовности ускорений, считывает их и передает по UART в символьном виде. Для имен регистров сделаны символьные имена для лучшей читаемости программы.

После передачи каждого байта необходимо производить считывание принятого байта, иначе будет устанавливаться флаг перезаписи принятых данных «OVR» в регистре «SPI_SR» и новые данные будут теряться. При только операциях записи это значения не имело, а при считывании имеет, т.к. при любой записи данных байт также принимается.

Также по сравнению с программой из № 20 сделано преобразование данных из формата "two’s complement number" (дополнительный код)  в десятичное число со знаком.

...