Анимационная снежинка или знакомство с PIC & GCB

Тема в разделе "Глядите, что я сделал", создана пользователем KindMan, 23 мар 2019.

  1. KindMan

    KindMan Гик

    Покажу свой проект выходного дня. Немного опоздал со временем года, но свободное время и доставка из Китая вносят свои коррективы.
    Так уж сложилось, что я, на "радость" жены, электроник/барахольщик, и не поднимается рука выбросить то, на чем есть радиодетали. Работа моя в сфере ОПС, и вот скопилось у меня множество разных охранных извещателей, среди которых Шорох 2.
    sh2.jpg
    Много там всего нужного, и есть микроконтроллер PIC16F716. Никогда с PICами не общался, но поскольку накопилось их много, решил купить программатор, ознакомится. По меркам ардуинщиков в моём экземпляре ничтожные размеры Flash`a и оперативки - 2КB и 128B. Но ничего, опыт чистого Си имеется, попробуем. Скачал MPLAB, запустил .... и ничего не понял. Первый раз на моей практике не получилось сделать "Hello Blink" без RTFM. ИДЕ показалась такой громоздкой, так что оставим её для профи. Поиски из бесплатного выдали только Great Cow Basic. Проекту уже больше десяти лет, но поскольку разрабатывается на энтузиазме, то только готовится к релизу. Скачал, запустил, и уже через две минуты заставил весело моргать штатные светодиоды Шороха. Оставляю! Программатор работает, можно выпаять МК и сварганить что нибудь. Давно хотел сделать иллюминацию на уличную ёлку, и решил сварганить прототип снежинки.
    Shem.jpg
    snow.jpg
    Код (Text):
      #chip 16f716, 16

      #define ProgramCount 6
      #define Lw 0
      #define Rw 1
      #define TableCount 11

      #define StartProg 1

      dir PORTA out
      dir PORTB out

      Dim CurrentStep as Byte
      Dim CurrentProgram as Byte
      Dim Bug as Byte
      dim PORT as Byte

      CurrentProgram = 0

      Do Forever

        call NextProgram
        Select Case CurrentProgram
          case 1
           repeat 20
            Rotate PORTB Left Simple
            call ShowLine(20, 1, Lw)
           end Repeat
          case 2
           repeat 20
            Rotate PORTB Right Simple
            call ShowLine(20, 1, Lw)
           end Repeat
          case 3
            PORT = b'00000001'
            ShowLine(1, 80, Lw)
          case 4
            PORT = b'00010000'
            ShowLine(1, 80, Rw)
          case 5
             do while Bug <> TableCount
              incf Bug, 1
              ReadTable BitValue, Bug, Temp
              PORTA = Temp
              call MyWait(100)
             Loop
          case 6
             do while Bug <> 1
              decf Bug, 1
              ReadTable BitValue, Bug, Temp
              PORTA = Temp
              call MyWait(100)
             Loop
        end Select
      Loop

      Sub NextProgram
        incf CurrentProgram, 1
        if CurrentProgram > ProgramCount then CurrentProgram = StartProg
        Select Case CurrentProgram
          case 1 to 2
            PORTB = b'10001000'
            PORT = b'00000001'
          case 3 to 5
            PORTB = b'11111111'
            Bug = 0
          case 6
            Bug = TableCount
         end Select
      End Sub


      sub ShowLine(Cycles as byte, Delay as Word, Way as byte)
        do while Cycles > 0
        repeat 5
         PORTA = PORT
         call MyWait(Delay)
         if Way = Lw then
           Rotate PORT Left Simple
         else
           Rotate PORT Right Simple
         end if
         end Repeat
         decf Cycles, 1
        Loop

      end sub

      sub MyWait(Delay as word)
        wait Delay ms
      end sub

    Table BitValue as Byte
    0
    1
    3
    7
    15
    31
    30
    28
    24
    16
    0
    End Table
    Подводя итог - МК несколько отличается от привычных мне AVR, но со всеми "капризами" получилось за два дня справится. Среда разработки тоже порадовала, буду применять, даже для Ардуино.
    В релизе проекта хочу найти трубочки из прозрачного пластика, запихать туда светодиоды, загерметизировать и развесить на улице. Гуляя в парке, видел похожие, мне понравилось. К следующему НГ порадую детей.

     
    Последнее редактирование: 24 мар 2019
    DetSimen, alp69 и ИгорьК нравится это.
  2. znamen

    znamen Guest

    Более комфортной и привычной для Вас средой разработки была бы IDE microC. В МPLAB долго вкуривать.
     
  3. KindMan

    KindMan Гик

    Как вы меня хорошо знаете :)
    А что делать, когда программа превысит объем кода в демо варианте? (Есть у меня и более крутые ПИКи)
     
  4. znamen

    znamen Guest

    С удовольствием отвечу на Ваш вопрос. В инете имеется куча креков ,для превращения демо версии в полно
    ценную. Конечно если Вы по этичным соображениям отбросила этот вариант-тогда конечно. Насчёт более
    крутых ПИКов. Среда разработки,которой Вы пользуетесь ,предусматривает 18 серию как максимально
    Возможную. Для Микроси 24 и 30 серия по зубам.
     
  5. KindMan

    KindMan Гик

    Да, есть такое ...
    У меня 24 и выше неоткуда выпаять :D 18lf6722 есть, мне их с головой хватит. Меги вон лежат 2560 уже несколько лет, никуда не пристрою, 328 хватает на всё. (Не в ардуино IDE, конечно, если прогать)
     
  6. znamen

    znamen Guest

    Поверьте мне на слово,что бывают в жизни случаи,когда возможностей перечисленных Вами процессоров
    не хватает. ПИКи хорошо себя зарекомендовали в промышленном применении. А там задачи пошире,чем
    В Вашем проекте. И совершенно не возражаю ,что для любительских конструкций 18 серии-больше чем с
    головой.
     
  7. KindMan

    KindMan Гик

    Это не проект, так игрушка. Подайте идею, какие лучше трубочки использовать, чтобы туда светодиоды запихать. Силиконовыми пользовался, но они мягковаты для этого изделия. Что то ничего на глаза не попадается.
     
  8. znamen

    znamen Guest

    Извените,но в трубочках-я профан.
     
  9. parovoZZ

    parovoZZ Гуру

    Здесь только отодвигать светодиоды вглубь. По-другому никак.
     
  10. KindMan

    KindMan Гик

    Так я и хочу, запаять пихнуть, и так далее… саму трубку не найду, типа от авторучки что нибудь.
     
  11. znamen

    znamen Guest

    Друг работает в компании по наружной рекламе. Видил ещё одно решение без трубочек. Берут кусок прозрачного плекса. В нем сверлятся на пол глубины отверстия. (те же трубочки) ,в которые вставляются
    светодиоды. От глубины отверстий зависит яркость свечения. Так они создают подсвечиваемый фон и сам
    рисунок. Видил готовые решениям смотрится по сравнению с трубочками дорого и красиво.
     
  12. alp69

    alp69 Форумчанин

    Прозрачная термоусадка и для жесткости и придания нужных форм внутрь вязальную проволоку.
     
  13. カオナシ

    カオナシ Нерд

    Ну это пока Ethernet и MQTT не используется.
    Потом с 32-ю КБ начинается сплошная оптимизация.
     
  14. KindMan

    KindMan Гик

    Спасибо за идею, можно получить некий скелет из светодиодов. Проволока, наверное, будет лишней, хватит и той, на которую буду припаивать.
    Это да, расточительно. Сейчас делаю контроллер для ректификационной колонны, все датчики и исполниловка к МК подключены, а он через UART с ESP8266 общается, а уж в неё запихиваю всю связь с WEBом. Просто прогать esp меня бесит из за времени прошивки, она для меня только связь с внешним миром.
     
  15. カオナシ

    カオナシ Нерд

    Не, меня не бесит. Ну подольше, ну за то и места под код и данные побольше.
    Две минуты на компиляцию и загрузку - это же не вечность.
    Все равно пишешь в разы дольше.
    Ну один - два раза за вечер зальешь - в общей сложности - 4 минуты.
    Я дольше продумываю, пишу, переписываю частями. Вечером заливаю.
    Потом долго анализирую, ищу, что нужно доработать.
     
  16. Бодрейт там произвольный, если что. Можно хоть за секунду вливать
     
  17. KindMan

    KindMan Гик

    Да ну…
     
  18. Arkad_snz

    Arkad_snz Гик

    Если коктейльные маловаты по диаметру, то можно попробовать термоусадку.
    Мне (давно уже) потребовались прозрачные трубочки для подсветки одной поделки светодиодами.
    Поговорил со школьной молодью во дворе.
    У них в школе - эпидемия - по всей школе, в классах, в коридорах валяются сломанные ручки (колпачок потерялся, стержень кончился...) - школота не заморачивается с заменой стержня - проще купить новую ручку целиком..
    Внес деловое предложение - плачу 2р за корпус (трубочку) шариковой ручки - и в школе меньше мусора, и мне для дела, и вам - на мороженое..
    -----
    Когда эта затея, и битва с жесткими негнущимися трубочками от ручек мне надоела - углядел в зоомагазине трубочки-шлаги для аквариумных дел.
    Вот они пошли на "ура" - гибкие, и легко режутся по размеру.
    И светодиод в них запихнуть - не проблема.
     
    Последнее редактирование: 7 апр 2019
  19. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1. Есть в наличии MicroC for PIC v6.2.1.0 Речь об энтом ?
    2..Шести-гранные трубки прозрачные - длинная крутилка управлять жалюзЯМИ на окне. Мелкий светодиод входит идеально. Видел в отделе жалюзей как расходный материал. Грани самое то для снежинки. Клеится циан-акрилом.
     
  20. KindMan

    KindMan Гик

    Не понял ... я про микроСи ничего не говорил, он мне не понравился. GCB приглянулся простотой в работе с периферией, и в тоже время контроль программы есть, можно строку на бэйсике и затем сразу на асме.
    Да, прикольный вариант, из него колхозят некоторые "ангельские глазки" в фары авто. Но у меня не лезут туда светодиоды. С авторучками попробовал, но такой гемор с проводами, они тонюсенькие должны быть, в бортик светодиода пробовал их вплавлять и толкать ... 5 проводов на нижнем ... время нет на этот мазохизм :) Скорее всего остановлюсь на предложении @alp69, из текстолита вырежу тоненькую полоску (а может даже дойдут руки до заказа в Китае готовых, уже 5 лет хочу попробовать) и напаяю туда smd диоды и всё термоусадкой зажму. Будет видно, правда, с одной стороны, но когда она на дереве и не важно. Если где на растяжку повесить, можно и с двух сторон напаять. Главное время на это всё найти :(