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
    написал в отредактировано 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
                        • Категории
                        • Главная
                        • Документация
                        • Последние
                        • Пользователи