Сообщество - Arduino & Pi
Добавить пост

Arduino & Pi

1 377 постов 20 574 подписчика

Популярные теги в сообществе:

Arduino, MDB и торговый автомат

Всем здравствуйте!

Есть терминал безналичной оплаты и настольный кофейный автомат с датчиком наличия стакана. Между тобой они "общаются" по протоколу MDB.

Так же имеется модуль выдачи стаканов, который при нажатии кнопки по одному выдает стакан.

Хотелось бы все это соединить в одно устройство. То есть чтобы после оплаты модуль выдавал стакан.

На данный момент я это вижу так: Ардуино подключается в разрыв шины MDB и "слушает" сигнал оплаты. После удачной оплаты даёт импульс на замыкание реле.

Нужна помощь в разработке скетча для Ардуино, естественно не бесплатно. Либо Ваши советы и идеи - как это реализовать. Знаю и понимаю, что есть готовые решения. Но нужно реализовать свое.

Всем больше спасибо.

Несколько интересных фактов про Динамическое программирование

Динамика - это искусство Разбивать задачи на части И решать их по порядку Сохраняя результаты.

Динамика - это мудрость Видеть оптимальность структуры И строить из подзадач путь К желанному решению.

Несколько интересных фактов про Динамическое программирование Программирование, IT, Программист, Алгоритм
  • Динамическое программирование было придумано Ричардом Беллманом в 1940-х годах для решения задач теории управления. Он выбрал это название, чтобы скрыть от своих начальников военное значение своих исследований, так как слово «динамическое» звучало впечатляюще.

  • Динамическое программирование широко используется в различных областях, таких как биоинформатика, криптография, компьютерная графика, компиляторы, игровая теория и многие другие3. Например, алгоритм Нидлмана-Вунша для выравнивания последовательностей ДНК и РНК основан на динамическом программировании.

  • Динамическое программирование может быть реализовано на C++ разными способами, в зависимости от типа задачи, структуры данных и требуемой эффективности. Например, можно использовать одномерные или многомерные массивы, векторы, хеш-таблицы, рекурсию с мемоизацией или итерацию с заполнением таблицы. Также можно применять различные техники оптимизации, такие как сжатие состояний, разбиение на подзадачи, отсечение лишних ветвей и т.д

Интересные факты и фичи языков программирования у нас в канале, заходи :)

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

Все есть файл в Linux

В Linux все есть файл, потому что это упрощает работу с различными ресурсами системы, такими как устройства, ядро, сокеты и т.д. Вместо того, чтобы создавать отдельные интерфейсы для каждого типа ресурса, Linux использует общий интерфейс файловой системы, который позволяет открывать, читать, писать и закрывать файлы. Таким образом, любой ресурс можно представить как файл и работать с ним с помощью стандартных программ и API.

Все есть файл в Linux Программирование, Linux, IT, Программист

Файлы в Linux делятся на три основных типа:

  • Обыкновенные

  • Специальные

  • Директории

Обыкновенные файлы содержат данные, такие как текст, изображения, код и т.д.

Специальные файлы представляют собой интерфейсы к устройствам (блочные или символьные), к ядру (procfs или sysfs) или к другим процессам (сокеты или каналы).

Директории служат для группировки файлов по разным критериям и облегчения навигации по файловой системе.

Специальные файлы в Linux - это файлы, которые представляют собой интерфейсы к различным ресурсам системы, таким как устройства, ядро, сокеты и т.д. Они позволяют работать с этими ресурсами так же, как с обычными файлами, используя стандартные операции открытия, чтения, записи и закрытия.

Специальные файлы делятся на два основных типа:

  • Блочные

  • Символьные

Блочные файлы обеспечивают буферизованный доступ к аппаратным компонентам, таким как жесткие диски, съемные носители и т.д.

Символьные файлы обеспечивают небуферизованный доступ к ядру и аппаратным компонентам, таким как клавиатура, монитор, принтеры и т.д.

Некоторые интересные факты про специальные файлы в Linux:

  • Специальные файлы находятся в каталоге /dev (от англ. devices - устройства), который содержит интерфейсы работы с драйверами ядра.

  • Специальные файлы можно определить по первому символу в выводе команды ls -l. Блочные файлы обозначаются буквой b, символьные - буквой c.

  • Специальные файлы имеют два числа: основное (major) и дополнительное (minor), которые определяют тип устройства и его номер. Например, файл /dev/sda имеет основной номер 8 и дополнительный номер 0, что означает, что он представляет первый жесткий диск в системе.

  • Специальные файлы можно создавать с помощью команды mknod (от англ. make node - создать узел), которая принимает четыре аргумента: имя файла, тип файла (b или c), основной номер и дополнительный номер. Например, команда mknod /dev/mydevice c 10 20 создаст символьный файл с именем mydevice, основным номером 10 и дополнительным номером 20.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

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

Здравствуй, форум!

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

Вспомним историю нашего любимого raspberry pi

Raspberry Pi - это одноплатный компьютер, который был разработан в Великобритании для обучения информатике и программированию. Он был представлен в 2011 году и с тех пор стал очень популярным среди любителей, ученых и художников.

Вспомним историю нашего любимого raspberry pi Raspberry pi, Программирование, IT, Электроника, Программист, Linux, Длиннопост

История Raspberry Pi началась в 2006 году, когда группа коллег из Кембриджского университета решила создать дешевый и простой компьютер, который бы мог заинтересовать детей и подростков. Они создали несколько прототипов на основе микроконтроллеров Atmel, но они были слишком сложными и ограниченными в возможностях. Позже они нашли подходящий чип от Broadcom, который имел достаточную мощность и графические возможности для запуска Linux и других операционных систем.

В 2009 году они основали фонд Raspberry Pi Foundation, чтобы продвигать свою идею и собирать средства для производства компьютеров. Они также выбрали название Raspberry Pi, которое отражало традицию называть компьютеры по фруктам (например, Apple, Apricot, Acorn) и сокращение Pi, которое обозначало Python - один из основных языков программирования для Raspberry Pi.

В 2012 году началась продажа первой партии Raspberry Pi модели B, которая имела процессор с частотой 700 МГц, 256 МБ оперативной памяти, два порта USB, порт Ethernet, видеовыходы HDMI и RCA, аудиовыход 3.5 мм и разъем для карты памяти SD. Стоимость компьютера составляла всего 35 долларов. Спрос на него был огромным, и сайты продавцов не выдержали наплыва посетителей.

С тех пор было выпущено несколько моделей Raspberry Pi с разными характеристиками и ценами. Самой дешевой моделью является Raspberry Pi Zero, которая стоит всего 5 долларов и имеет процессор с частотой 1 ГГц, 512 МБ оперативной памяти, один порт micro USB, видеовыход mini HDMI и разъем для карты памяти micro SD. Самой мощной моделью является Raspberry Pi 4 Model B, которая стоит 35-75 долларов в зависимости от объема оперативной памяти (от 1 до 8 ГБ), имеет процессор с частотой 1.5 ГГц, четыре порта USB (два из них типа C), два порта micro HDMI, порт Ethernet, аудиовыход 3.5 мм и разъем для карты памяти micro SD.

Вспомним историю нашего любимого raspberry pi Raspberry pi, Программирование, IT, Электроника, Программист, Linux, Длиннопост

Raspberry Pi Zero

По состоянию на конец 2019 года было продано более 30 миллионов устройств Raspberry Pi 1. Они используются для самых разных целей: обучения, развлечения, науки, искусства, робототехники, интернета вещей и многого другого. Raspberry Pi стал одним из самых известных и успешных мини-компьютеров в мире.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

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

Способы оптимизации кода в C++

Оптимизация кода в C++ - это процесс улучшения эффективности, скорости и качества кода, написанного на языке C++.

Способы оптимизации кода в C++ Arduino, C++, Программирование, Программист, IT

Оптимизация кода в C++ может быть выполнена на разных уровнях, таких как:

  • Оптимизация на уровне алгоритмов и структур данных. Это означает выбор наиболее подходящих и эффективных алгоритмов и структур данных для решения задачи, учитывая сложность, память, время и другие факторы. Например, использование сортировки слиянием вместо сортировки пузырьком, или использование хеш-таблицы вместо списка для поиска элементов.

  • Оптимизация на уровне языка. Это означает использование возможностей и особенностей языка C++, которые могут повысить производительность кода. Например, использование константных ссылок вместо копирования объектов при передаче аргументов функциям, использование шаблонов вместо дублирования кода для разных типов данных, использование лямбда-выражений вместо обычных функций для передачи поведения в качестве параметра.

  • Оптимизация на уровне компилятора. Это означает использование параметров компилятора, которые могут изменить способ генерации исполняемого кода компилятором. Например, использование параметра /O2 для включения оптимизации по скорости выполнения, использование параметра /Ob2 для включения раскрытия функций (inline expansion), использование параметра /GL для включения оптимизации по всему программному модулю.

Оптимизация кода в C++ требует знания того, какие части программы должны выполняться быстро, какой размер и скорость выполнения кода, какие затраты на реализацию новых возможностей, какой минимальный объем работы, необходимый для выполнения задания5 Оптимизация кода в C++ также требует тестирования и профилирования кода для измерения и анализа его характеристик работы, таких как время выполнения, потребление памяти, количество вызовов функций и других. Для этого можно использовать различные инструменты, такие как Visual Studio Debugger, Visual Studio Profiler, Intel VTune Amplifier и другие.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

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

Переосмыслил пистолет от ретро консоли!

Угадайте звездного капитана юмористической команды «Сборная Красноярска» по описанию одного из участников

Ну что, потренировались? А теперь пора браться за дело всерьез.

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

Немного про кросс-компиляцию в linux

Кросс-компиляция - это процесс создания исполняемых файлов для платформы, отличной от той, на которой происходит компиляция. Например, ты можешь кросс-компилировать программу на C++ в Linux для запуска на Windows или Android.

Немного про кросс-компиляцию в linux Linux, Программирование, IT, Программист

Для этого тебе нужно иметь:

  • Компилятор, который может генерировать машинный код для целевого процессора. Например, clang или gcc.

  • Компоновщик, который может создавать исполняемые файлы в формате, поддерживаемом целевой операционной системой. Например, ld или lld.

  • Библиотеки и заголовочные файлы, которые соответствуют API целевой операционной системы. Например, glibc или musl для Linux и mingw-w64 для Windows3.

Для установки и настройки этих инструментов ты можешь использовать различные способы, в зависимости от твоего хоста и цели. Например, ты можешь скачать готовые пакеты кросс-компиляторов из репозиториев твоего дистрибутива Linux, собрать их самостоятельно из исходного кода или использовать специальные средства, такие как Buildroot или crosstool-NG, которые автоматизируют процесс сборки кросс-компиляционной среды.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

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