• Как написать простой код со светодиодной лентой ардуино?

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

    Чтобы мой ответ не был совсем бсполезным, могу посоветовать вот этот сайт: https://alexgyver.ru/
    Здесь полно обучающих материалов, рассказано как работать с ардуино, RGB-светодиодами и адресными лентами. У автора сайта есть канал на ютубе с кучей обучающих роликов, а также подборки компонентов, инструментов и прочего. Есть даже проект лампы-будильника, о которой вы спрашиваете: https://alexgyver.ru/dawn-clock/
    Ответ написан
    Комментировать
  • Как внешне открыть файл с помощью python?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    есть ли в python функция, для открытия файла? (open не подойдёт)


    Суть в том, чтобы открывать файл нажатием на него, а не выбором в приложении.


    А какое отношение к этому имеет сам питон? Это вопрос к интерфейсу операционной системы, как в ней зареганы ассоциации.
    Если вам нужно, чтобы конкретный скрипт на питоне открывал конкретные файлы, зарегайте ассоциацию с параметром и в скрипте открывайте файл, переданный параметром.

    Но ваш вопрос звучит таким образом, что я подозреваю смысла предыдущего абзац вы не поймете...
    Ответ написан
    Комментировать
  • Как убрать помехи от серво на ардуино? Какой емкости кондесатор использовать?

    @kalapanga
    Это не от помех конденсатор поставлен. В процессе движения типичные хоббийные сервы потребляют небольшой ток. Но могут иметь место короткие скачки потребляемого тока, например в начале движения. Если источник питания совсем слабый, то просадка напряжения может привести к перезагрузке МК. Вот тут немного поможет этот конденсатор (470 мкФ или более). Но лучше просто иметь БП достаточной мощности.
    Ответ написан
    2 комментария
  • Как называется (термин) предельное число в счетной системе континуумного типа?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вы про точную верхнюю грань последовательности (супремум)? Обозначается она символом sup.
    Ответ написан
    Комментировать
  • Сколько раз можно перезаписывать прошивку в микроконтроллер?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Имеется, как и предел итераций записи на SSD или флеш накопитель. Только вот реально ли его достигнуть на практике - вопрос открытый.
    Скажем, первое что нагуглилось:
    Производители микроконтроллеров AVR в документации указывают что их Flash-память можно перезаписывать не менее 10000 раз, а EEPROM- 100000 раз.
    Ответ написан
    5 комментариев
  • Как считать выражение из переменной?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Если это
    lst = [1, 2, 1-2**64, 2**64]
    то нельзя, так как 1-2**64 вычисляется в момент создания списка.

    Единственный вариант - сразу передавать в строковом виде
    lst = ["1", "2", "1-2**64", "2**64"]
    pairs = [(x, eval(x)) for x in lst]
    min_pair = min(pairs, key=lambda x: x[1])
    print(min_pair[0])
    Ответ написан
    Комментировать
  • Как сделать свой телефон?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Так не бывает.
    Нельзя сделать что-то в одном экземпляре бюджетным.
    бОльшая часть стоимости смартфона (а именно о нём, как я понял, речь, раз уж упомянут Андроид), составляет инженерная разработка. Профессиональная деятльность специалистов стоит дорого и окупается только большими партиями конечных устройств.
    Очень наивно полагать, что вы соберёте что-то хотя бы отдалённо похожее на заводской смартфон самостоятельно, и это будет дешевле заводского варианта.
    Поясню на примере. Без всякого андроида если собрать простейшую звонилку на модуле SIM800 и ардуинке, вы вылезете сильно (в разы) за пределы стоимости аналогичного по функциональности бабушкофона. Просто потому что сам модуль стоит как простейшая готовая звонилка с экраном, цветным экранчиком и корпусом в разумном по рамеру форм-факторе без торчащих проводов и не пол кило весом.
    Чтобы сделать смартфон с андроидом их готовых компонентов, вам придётся либо собирать все модули крупноблочно (блютус, вайфай, GSM из дорогих и некомпактных блоков, либо проектировать и разводить плату, что на несколько порядков сложнее и, судя по вашему вопросу, просто невозможно для вашего уровня.

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

    Проще этот принцип масштаба почувствовать на спичках. Попробуйте сделать самостоятельно коробок спичек, чтобы он был дешевле заводского. Если получится, то вы обогатитесь.
    Ответ написан
    Комментировать
  • В чем заключается ошибка в коде python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Это типичная ошибка тех, кто не учил язык. Попробуйте так:
    if self.s1 in [color1, color2]:
    Ответ написан
    4 комментария
  • OpenCV. Почему отдельные кадры из видео весят больше чем видео?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Потому что кадры в массивах хранятся в несжатом виде, а исходный видео-ролик сжат кодеком.
    Кодеки сейчас довольно сложные, у них много параметров сжатия и нетривиальные алгоритмы. Вы один и тот же ролик можете расжать и сжать по новой, а в результате получите совсем другой объём и даже немного отличающийся контент, ведь сжатие происходит обычно с потерей качества.
    Ответ написан
    Комментировать
  • Как проверить запустилась ли трансляция FFMPEG через Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    UPD: Если вы не можете дождаться завершения дочернего процесса, то не обязательно блокировать программу для получения всего его выхлопа:
    import subprocess
    
    
    if __name__ == '__main__':
        cmd = 'py "(time.sleep(1) or print(i) for i in itertools.count())"'
        cmd = 'ping ya.ru'
        cmd = 'ffmpeg'
    
        with subprocess.Popen([cmd], stdout=subprocess.PIPE, text=True, shell=True) as p:
            for line in p.stdout:
                print(line.strip())

    Так вы можете получать выхлоп построчно или вовсе посимвольно:
    while 1:
        print(p.stdout.read(1), end='')

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

    UPD2:
    Ну так что, автор, разобрался, или разжевывать надо решение?
    import subprocess
    import threading
    import logging
    import sys
    
    
    log = logging.getLogger(__name__)
    
    
    def check_process_output(process: subprocess.Popen, timeout: float, substring: str):
        def fetch_output():
            try:
                while process.poll() is None:
                    line = p.stdout.readline()
                    log.debug('FETCH: %s', line.strip())
                    data.append(line)
            except ValueError as e:
                pass
    
        data = []
        t = threading.Thread(target=fetch_output)
        t.start()
        log.debug(f'Wait %f s', timeout)
        t.join(timeout)
        result = substring in ''.join(data)
        log.debug('Output is%s contained substring %r', '' if result else ' NOT', substring)
        return result
    
    
    if __name__ == '__main__':
        logging.basicConfig(stream=sys.stderr, level='DEBUG')
        cmd = 'py "(time.sleep(1) or print(i) for i in itertools.count())"'
        cmd = 'ping ya.ru -c 8'
        # cmd = 'ffmpeg'
    
        with (subprocess.Popen([cmd], stdout=subprocess.PIPE, text=True, shell=True) as p):
            print('CHECK RESULT:', check_process_output(p, timeout=5, substring='ya.ru'))


    Можно сделать потомка от Popen, который будет вычитывать в треде свой stdout и на каждую строчку дёргать коллбэк, а также будет валиться по таймауту, если за какое-то время ни один коллбэк не вернул True.
    А можно просто добавить методы readline и read прямо в класс и с таймаутами в аргументах.
    Ответ написан
    4 комментария
  • Как зациклить это действие?

    Vindicar
    @Vindicar
    RTFM!
    Цикл while?
    Не, серьёзно. Это основы языка. Открой учебник и читай.
    Ответ написан
    Комментировать
  • Как "пропустить" напряжение дальше только при подаче напряжение с 2 других провдов?

    @d-stream
    Готовые решения - не подаю, но...
    Так работает обычное электромагнитное реле с нормальноразомкнутыми контактами.
    Провода А и С - на контактную группу, В - на обмотку

    И тогда при появлении напряжения на обмотке (В) контактная группа замкнётся и А и С соединятся между собой.

    Ну а если на B будет напряжение, а на А - нет - то замыкание А-С - даст то же отсутствие напряжения)))

    Ну и реле бывают твердотельными/полупроводниковыми/оптронными/etc

    з.ы. транзистор, тиристор, триод (ежели кто помнит) - поведут себя сходным образом
    Ответ написан
    2 комментария
  • Как отыскать подкартинку в картинке средствами python?

    FanaticExplorer
    @FanaticExplorer
    чел
    Через opencv можно:
    import cv2
    import numpy as np
    
    image = cv2.imread('image.jpg', 0)
    template = cv2.imread('part.jpg', 0)
    
    res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
    
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    
    threshold = 0.8
    if max_val > threshold:
        top_left = max_loc
        print("Подкартинка найдена:", top_left)
    else:
        print("Подкартинка не найдена")

    Со значением threshold надо будет поиграться, что бы работал более корректно.
    Ответ написан
    2 комментария
  • Как определить координаты картинки у которой нет дубликатов, либо с наименьшими повторениями?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Смотрите в сторону хеширующих функций, например реализация phash Вас спасет - https://en.m.wikipedia.org/wiki/Perceptual_hashing
    Ну и книжку порекомендую "цифровая обработка изображений" Гонсалес и Вудс.
    Ответ написан
    2 комментария
  • Возможно ли обучить ИИ определять данные анализов по фото?

    vabka
    @vabka
    Токсичный шарпист
    Тут больше задача на OCR и машинное зрение похожа.
    Нужно определить границы таблицы и распознать текст в ячейках.
    Можно попробовать Opencv + tesseract.

    Но скажу, что это сложнее, чем может показаться на первый взгляд (когда-то пробовали такой подход и часто либо границы криво распознавались, либо текст. Причём пробовали сканы, а не фотографии)
    Ответ написан
    1 комментарий
  • Как запустить MATLAB со скриптом через bat файл?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    стандартная практика передать первым аргументом путь к файлу который хотят открыть.
    Это действует практически для всех программ.

    start "C:/Program Files/MATLAB/R2022b/bin/matlab.exe Work.m"
    Ответ написан
    Комментировать
  • Библиотеке os выводит непонятные символы, что делать?

    Vindicar
    @Vindicar
    RTFM!
    Не "библиотека os", а процесс, который ты запускаешь. В какой кодировке он выводит текст, знает разве что он сам (вероятно, или windows-1251, или cp866). Но почти наверняка не в юникоде, с которым работает питон.
    Так что кодировку придётся выяснять опытным путём и самому полученную строку перекодировать.
    Ответ написан
    Комментировать
  • Как из любой точки мира передать сообщение на ESP32 или любую ардуинку без установления подключения?

    nava2002
    @nava2002
    Инженер
    Учитывая все вышесказанное:
    Думаю что данную задачу удобнее можно решить на Raspberry Рi (или аналогов).
    Raspberry Рi имеет достаточные возможности для запуска Вэб сервера ( на Linux ) для организации внешнего доступа через интернет, а также имеет аппаратные выходы (по типу ESP32) для управления любыми устройствами низкого уровня.
    Дополнительно появится возможность не только "отправлять" сообщения, а и получать "ответы" о текущем состоянии оборудования.
    Ответ написан
    Комментировать
  • Как исправить ошибку Scikit-learn?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну код писал не ты, просто взял откуда-то да и все. Ошибка элементарная. У тебя где то он должен подсветить не совпадают размерности массивов. (1,4901) - это матрица с одним рядом и 4901 колонкой, а второй массив одномерный. Предположу что ошибка происходит при рисовании графика, это matplotlib выдает такую ошибку.
    Я тебе сделал маленький пример с идентичной ошибкой.
    X = np.arange(0,4901)
    y = 1.2 * X + 3
    X = X.reshape(1,4901)
    plt.plot(X,y)

    Вот мой код выдаст такую же ошибку. Как поправить нужно привести размерности массивов, к виду при котором с ними можно работать. ну например либо plt.plot(X.reshape(-1,1),y) сработает либо распрямить X сработает plt.plot(X.ravel(),y). И так и так сработает. Ищи на каком plot'e у тебя ошибка и приводи размерности к подходящему виду.
    Ответ написан
    Комментировать