0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16

Raspberry Pi Pico надо помигать 12-ю светодиодами

21.08.2024, 17:10. Показов 2182. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть Raspberry Pi Pico и 12-ть 3-х вольтовых светодиодов, то есть их можно напрямую в GPIO подключать.
Задача: мигать всеми с разной частотой. Например, один светодиод должен мигать 10 раз в секунду, другой 3 раза, третий 0.6с гореть и 1.4с тухнуть, четвёртый 15 секунд гореть и 8 тухнуть, пятый гореть 25 секунд и 10 тухнуть и т.д.
Это вообще реально? Малинка умеет одновременно несколько циклов программно обрабатывать, например, на микропитоне (чтобы понятней было что в малинке творится)?
ЗЫ: пробую программировать в первый раз.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2024, 17:10
Ответы с готовыми решениями:

Помигать светодиодами
Помогите,пожалуйста ,выполнить три задания Правила форума: 5.16. Запрещено создавать темы с множеством вопросов во всех разделах,...

RP2040 Zero или Raspberry Pico
у кого есть опыт запуска ? Не определяется в системе ни как внешний диск, ни как COM, никак USB. Нажатия кнопок по инструкции для...

Помигать тремя светодиодами на STM32F103C8
Помигать тремя светодиодами на STM32F103C8. подскажите пжл как видите я вышла на финишную прямую. мне даже удалось настроить...

17
Эксперт по электронике
6851 / 3275 / 339
Регистрация: 28.10.2011
Сообщений: 12,809
Записей в блоге: 7
22.08.2024, 17:55
Это все можно сделать в одном цикле.
Заводите массив где храните время следующего переключения состояния светодиодов. В цикле проверяете время и если оно подошло, вкл/выкл светодиод и записываете в массив время сведущего изменения состояния.
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
22.08.2024, 18:26  [ТС]
Можете пример такого программирования привести? Как я понимаю, тут надо по 0.1с цикл делать. Что-то пока не представляю как это сделать.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
23.08.2024, 21:11
таймер настроить и запустить
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
25.08.2024, 22:18  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
таймер настроить и запустить
А как их несколько запустить? У каждого свой цикл, не все они синхронные. При этом мигать надо постоянно и всеми сразу.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
25.08.2024, 23:51
"наименьшее общее кратное", если не ошибаюсь, проходят еще в школе на уроках математики
0
656 / 409 / 76
Регистрация: 21.09.2008
Сообщений: 1,407
27.08.2024, 22:45

0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
28.08.2024, 13:39  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
"наименьшее общее кратное", если не ошибаюсь, проходят еще в школе на уроках математики
А длина цикла какая будет в тиках? Особенно с учётом асинхронного включения и выключения, да к тому же очень разных по длине циклов каждого светодиода. Сразу видно подход железячника. Мне коллега тоже такой вариант поначалу посоветовал, мол, малинка может не уметь асинхронную обработку.

А вот ответ программистов: MicroPython на Raspberry Pi Pico: надо помигать 12-ю светодиодами
То есть средствами языка запускаем сколько нужно асинхронных циклов. Микропитон позволяет. Гибко, просто и ненапряжно. Железяка сегодня пришла. Завтра заберу, буду прогать.
Всем спасибо!
0
4 / 4 / 1
Регистрация: 27.02.2014
Сообщений: 103
28.08.2024, 19:38
На питоне примерно так можно сделать.
Python
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
import uasyncio as asyncio
from machine import Pin
 
# Конфигурация светодиодов и их частот мигания
led_configs = [
    {"pin": "LED", "on_time": 0.05, "off_time": 0.05},   # 10 раз в секунду
    {"pin": 1, "on_time": 0.166, "off_time": 0.166}, # 3 раза в секунду
    {"pin": 2, "on_time": 0.6, "off_time": 1.4},     # 0.6с гореть и 1.4с тухнуть
    {"pin": 3, "on_time": 15, "off_time": 8},        # 15 секунд гореть и 8 тухнуть
    {"pin": 4, "on_time": 25, "off_time": 10},       # 25 секунд гореть и 10 тухнуть
    # Добавьте остальные конфигурации по необходимости
]
 
async def blink_led(pin_number, on_time, off_time):
    led = Pin(pin_number, Pin.OUT)
    while True:
        led.on()
        await asyncio.sleep(on_time)
        led.off()
        await asyncio.sleep(off_time)
 
async def main():
    tasks = []
    for config in led_configs:
        task = asyncio.create_task(blink_led(config["pin"], config["on_time"], config["off_time"]))
        tasks.append(task)
    await asyncio.gather(*tasks)
 
# Запуск главной асинхронной функции
asyncio.run(main())
ПС... Резисторы ом по 200 - 300 добавить в любом случае стоит.
Они в данном случае необходимы не для того чтобы не спалить светодиоды, а чтобы не спалить пины микроконтроллера.
1
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
29.08.2024, 14:53  [ТС]
aleksandr_l, в 6-й строчке так и должно быть? Вместо номера пина LED?
0
4 / 4 / 1
Регистрация: 27.02.2014
Сообщений: 103
29.08.2024, 15:42
Цитата Сообщение от swatik Посмотреть сообщение
в 6-й строчке так и должно быть? Вместо номера пина LED?
Там может быть любой pin (0, к примеру).
Конкретно в данном случае указан светодиод на плате - pin 25
led_configs можно заполнить хоть на все доступные пины и все должны мигать со своими настройками.
Лень паять было - пробежался осциллографом и вроде должно работать.
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
29.08.2024, 15:49  [ТС]
aleksandr_l, я спаяю. О результатах отпишусь.
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
30.08.2024, 18:19  [ТС]
Почитал про ток с GPIO малинки, максимум 2-3 светодиодами сможет светить, больше не сможет (50мА вроде как на всё). Надо что-то сооружать между малинкой и светодиодами, желательно такое же одноплатное.

Добавлено через 1 час 25 минут
Теперь я понял, почему во всех примерах малинка управляет 1-2 светодиодами, не больше. хех...
Надо будет внешний источник питания (в наличии там только 5В), ну и ключи на основе транзисторов, видимо.
0
4 / 4 / 1
Регистрация: 27.02.2014
Сообщений: 103
30.08.2024, 22:20
Цитата Сообщение от swatik Посмотреть сообщение
Почитал про ток с GPIO малинки, максимум 2-3 светодиодами сможет светить, больше не сможет (50мА вроде как на всё). Надо что-то сооружать между малинкой и светодиодами, желательно такое же одноплатное.
Добавлено через 1 час 25 минут
Теперь я понял, почему во всех примерах малинка управляет 1-2 светодиодами, не больше. хех...
Надо будет внешний источник питания (в наличии там только 5В), ну и ключи на основе транзисторов, видимо.

Не по теме:


1) Если 50мА на порт, что сомнительно, то можно навесить светодиоды через резисторы 270-300R.
На светодиоде будет порядка 3мА, что в случае 12 светодиодов получится 36мА
2) Можно использовать 2 штуки ULN2003
3) Можно использовать транзисторы.
4) Можно использовать логику

Да миллионы вариантов можно использовать в данном случае.

0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
31.08.2024, 12:23  [ТС]
aleksandr_l, а почему не по теме? Всё по теме. Надо мигать и ярко 12-ю лампочками с помощью малинки. Оказалось, что управлять малинка может, но вот питать все 12 не может. Так что всё в теме.
1) 50 это на все GPIO, на один порт примерно 16, как пишут в интернете. Если уменьшать ток, чтобы хватило на 12, то так не пойдёт. Надо именно светить и ярко всеми 12-ю, а не подсвечивать.
2) вот оптимальный вариант. Уже заказал микросхемы и макетную плату для пайки. Там ещё надо будет 3 светодиода в параллель к одному порту делать и 4 в параллель к другому. Пока думаю как это сделать. Может оставшиеся выходы с микросхем использовать, либо ограничительным резистором поиграть.
Спасибо!

Добавлено через 1 час 52 минуты
Все светодиоды должны светить ярко, на все 20мА. Ну или хотя бы на 90%.
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
07.04.2026, 09:56  [ТС]
aleksandr_l, большое спасибо! Только руки дошли допаять и сварганить скрипт. Всё заработало, только первую строчку пришлось вот так переписать:

import asyncio as asyncio

С буковой "u" не работало. После заработало.

Ну и ещё вопрос. Как программу сохранить в малинке и самое главное - сделать так, чтобы она запускалась, как только подаётся питание? В принципе, малинка для одной этой задачи и покупалась.
Делал на плате RP2350-Zero.

Добавление. Питание светодиодов увеличил с помощью ULN2003a. У неё ток гораздо больше и вероятность малинку спалить уже ниже.
0
343 / 102 / 6
Регистрация: 19.07.2024
Сообщений: 549
07.04.2026, 13:32
Почти 2 года учиться примитивно мигать лампочками??!
0
0 / 0 / 0
Регистрация: 01.08.2024
Сообщений: 16
08.04.2026, 04:03  [ТС]
Сам нашёл.
Надо сохранить программу на устройство с именем main.py
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2026, 04:03
Помогаю со студенческими работами здесь

Управление генератором SI5153 c помощью платы Raspberry Pi Pico
Есть такой код на Python, который должен задавать частоту генератора, но всё работает абсолютно неправильно. Первый раз сталкиваюсь с...

Кросс компиляция для Raspberry Pi 4 (Raspberry Pi OS 10 Buster)
Привет всем! Как установить qt c toolchain -ом для кросс компиляции в Raspberry Pi OS 10 Buster потому как для Raspberry Pi 4 ? На...

Операционные системы Pico и Nano
Кто нибуть знает вычислительные системы, построенные с использованием так называемых Pico и Nano операционных систем?

Помигать вкладками TabControl
Добрый день. Каким образом можно помигать (изменить цвет на непродолжительное время) всеми, кроме текущей, вкладками TabControl? ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru