Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Аппаратные модули
  3. Общие вопросы по GPIO, I2C, UART, SPI, 1-Wire, DSI, CSI, I2S
  4. Как написать программу для включения и выключения светодиода?

Как написать программу для включения и выключения светодиода?

Запланировано Прикреплена Закрыта Перенесена Общие вопросы по GPIO, I2C, UART, SPI, 1-Wire, DSI, CSI, I2S
13 Сообщения 1 Posters 78 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано
    #2

    Совсем забыл для управления gpio используется библиотека bcm2835 версии 1.16

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано pi
      #3

      https://raspberrypi.ru/forum/topic/2/gpio-для-чайников-часть-1/51

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #4

        Эту статью я уже видел. Но мне совершенно непонятно как сделать чтоб светодиод загорался по нажатию на кнопку и выключался при повторном нажатии

        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #5

          Ваш вопрос относится не к схемотехнике, а к программированию. Т.к. не важно, нажимаете ли вы кнопку, или клавиатуру, и загорается ли при этом светодиод, либо выполняются любые другие действия. Вам просто нужно последовательно изучать программирование и тогда вы сможете с лёгкостью решать такие простые задачи. Сейчас ваша проблема заключается в неумении составить алгоритм действий. Это из-за недостатка опыта, даже самого минимального.
          Что касается непосредственно вашего вопроса:
          В данном случае вам нужно модифицировать обработку события нажатия кнопки. Для этого надо задать переменную-флаг, значение которой будет соответствовать текущему режиму работы светодиода. Например, если светодиод горит, это переменная должна равняться 1, а если погашен, то 0. При инициализации светдиод не горит, по этому в начале программы присваиваем ей значение 0.
          Теперь в том месте, где программа будет реагировать на нажатую кнопку, вы должны поставить условные операторы if, или switch-case, и в них уже проверять, если флаг=0, то светодиод включить и присвоить флагу значение 1. Если флаг=1, то светодиод выключить и присвоить флагу значение 0. Далее опять возвращаемся к месту ожидания нажатия на кнопку.
          И так безконца.

          1 ответ Последний ответ
          0
          • piP Не в сети
            piP Не в сети
            pi
            написал в отредактировано pi
            #6

            Добрый вечер! Помогите разобраться, пожалуйста: после компиляции

            gcc -o GPIO-test GPIO-test.c -lrt -lbcm2835
            

            пишет ошибку:

            undefined reference to 'bcm2835_delay'
            collect2: error: ld returbed 1 exit status
            

            Я новичок, проверка показала, что ревизия платы = 1

            1 ответ Последний ответ
            0
            • piP Не в сети
              piP Не в сети
              pi
              написал в отредактировано
              #7

              Компилятор не может найти определение для функции bcm2835_delay().
              Обновите библиотеку bcm2835.
              Просто установите последнюю версию (как описано в 1-й части статей), старую можно не удалять, она поверх неё встанет.
              В последних версиях библиотеки изменились названия некоторых функций. Раньше эта функция называлась просто delay(), а теперь её название изменилось на bcm2835_delay().
              И проверьте листинг ваших программ. Я уже успел поправить первые 3 статьи "GPIO для чайников" в соответствии с последней версией библиотеки. Остальные части чуть позже исправлю.

              1 ответ Последний ответ
              0
              • piP Не в сети
                piP Не в сети
                pi
                написал в отредактировано
                #8

                Довольно любопытно, но версия библиотеки последняя - только вчера скачивал и устанавливал. В листинге записано bcm2835_delay(1000); - но все равно ошибка. Заменил функцию delay на стандартную usleep(1000000) - в микросекундах, и все заработало - диод начал загораться! Еще ревизия все-таки оказалась 2-я, хотя при проверке cat /proc/cpuinfo hardware revision выдал 0002 🙂

                1 ответ Последний ответ
                0
                • piP Не в сети
                  piP Не в сети
                  pi
                  написал в отредактировано
                  #9

                  Сегодня вечерком проверю на новой и чистой системе.

                  1 ответ Последний ответ
                  0
                  • piP Не в сети
                    piP Не в сети
                    pi
                    написал в отредактировано
                    #10

                    Хмм...
                    Только что загрузил и установил последнюю сборку 2013-02-09-wheezy-raspbian, установил bcm2835-1.17, скопировал и вставил листинг GPIO-test.c.
                    Всё скомпилировалось без ошибок.
                    Даже не знаю что и сказать.

                    1 ответ Последний ответ
                    0
                    • piP Не в сети
                      piP Не в сети
                      pi
                      написал в отредактировано
                      #11

                      Я устанавливал через fedora-arm-installer-1.0.0 - ссылка с этого сайта в разделе Документация на флешку из Windows 7. Пришлось помучаться, т.к. с linux вообще никак знаком не был), но там даже gcc не было - пришлось устанавливать через yum-утилиту. Может что-нибудь криво встало...

                      1 ответ Последний ответ
                      0
                      • piP Не в сети
                        piP Не в сети
                        pi
                        написал в отредактировано
                        #12

                        Возможно.
                        А зачем вам Федора? Она явно не для начинающих. Там всё самому делать надо.
                        А Разбиан какраз для тех, кому нужно "включил- и работай".

                        1 ответ Последний ответ
                        0
                        • piP Не в сети
                          piP Не в сети
                          pi
                          написал в отредактировано
                          #13

                          Они для меня все были на одно лицо на момент установки) Прочитал хорошие отзывы о fedora - вот разбираюсь, думаю надо осваивать, да и интересно. Спасибо Вам за полезные статьи по GPIO, перехожу к 3й части... Думаю скоро начать пробовать строить автоматизированные системы по принципу умного дома

                          1 ответ Последний ответ
                          0
                          • piP pi переместил эту тему из Raspberry Pi в

                          • Войти

                          • Нет учётной записи? Зарегистрироваться

                          • Login or register to search.
                          • Первое сообщение
                            Последнее сообщение
                          0
                          • Категории
                          • Главная
                          • Документация
                          • Последние
                          • Пользователи