Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
piP

pi

@pi
Сводка
Сообщения
6.3k
Темы
1.6k
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • GPIO для чайников (часть 6)
    piP pi

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


  • GPIO для чайников (часть 6)
    piP pi

    Ура ододел и все работает автоматом. Rn6ljk по твоей инструкции все работает. Сам я сначала недопонял. Просто надо класть в автостарт так сказать ярлык.


  • GPIO для чайников (часть 6)
    piP pi

    Однако сделать так, чтобы программа автозапускалась у меня не получилось никаким образом. Скрипт написал (sudo /home/pi/Myprog/./radio) он рабочий и руками спокойно запускается. Поместил его в /etc/init.d. Сделал ссылку на него в /etc/rc.2 и так далее rc.5. Сделать так как написал блоггер под ником "rn6ljk" тоже не получилось. Прошу помощи. Дайте совет чайнику.


  • GPIO для чайников (часть 6)
    piP pi

    После долгих изысканий я понял, что за ошибки выдает при компиляции. Строки

    char *station1={"http://listen2.myradio24.com:9000/8304", NULL};
    char *station2={"http://89.208.99.16:8088/zvezda_128", NULL};
    char *station3={"http://imgradio.pro/MegaRadio", NULL};
    char *station4={"http://imgradio.pro/RusHit", NULL};
    

    Надо писать так

    char *station1[]={"http://listen2.myradio24.com:9000/8304", NULL};
    char *station2[]={"http://89.208.99.16:8088/zvezda_128", NULL};
    char *station3[]={"http://imgradio.pro/MegaRadio", NULL};
    char *station4[]={"http://imgradio.pro/RusHit", NULL};
    

    Теперь процитирую автора: "Прячем наш RPI в изящную коробочку, выводим на панель нашу кнопочку, подключаем колонки и ставим на холодильник готовое устройство, наслаждаемся проделанной работой под музычку, играемую нашим RPI-интернет-радио."


  • GPIO для чайников (часть 6)
    piP pi

    Здравствуйте все! Автор - ты лучший)) Сейчас пытаюсь добавить кнопок для работы omxplayer. Но выходит не очень. Проблемы с кнопкой "p" (то бишь, пауза). Срабатывает только один раз (а хотелось бы n раз), а включение опроса второй кнопки в цикл, само собой, не позволяет пройти основной программе (для работы "q"). Помогите, пожалуйста.
    Может, нужно для опроса этой кнопки создать ещё один параллельный процесс? Как он тогда будет выглядить?


  • GPIO для чайников (часть 6)
    piP pi

    Код копирую - вставляю... и десяток ошибок при компиляции... ничего не пойму... как так может быть... что не так...

    radio.c:32:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:32:1: warning: (near initialization for ‘station1’) [enabled by default]
    radio.c:33:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:33:1: warning: (near initialization for ‘station2’) [enabled by default]
    radio.c:34:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:34:1: warning: (near initialization for ‘station3’) [enabled by default]
    radio.c:35:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:35:1: warning: (near initialization for ‘station4’) [enabled by default]
    radio.c: In function ‘play_station’:
    radio.c:91:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:92:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:93:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:94:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    /tmp/ccbV3SwR.o: In function `main':
    radio.c:(.text+0x1fc): undefined reference to `forkpty'
    /usr/local/lib/libbcm2835.a(bcm2835.o): In function `bcm2835_delayMicroseconds':
    /home/pi/myprog/bcm2835-1.17/src/bcm2835.c:364: undefined reference to `clock_gettime'
    /home/pi/myprog/bcm2835-1.17/src/bcm2835.c:374: undefined reference to `clock_gettime'
    collect2: ld returned 1 exit status
    

    (((((((((((((((((((((


  • GPIO для чайников (часть 6)
    piP pi

    Спасибо за интересную и полезную статью! Хорошая статья и ее реализация! Только вот у меня не компилируется кнопка, а об этой программе вообще нет смысла говорить... надо разобраться с работой кнопки...


  • GPIO для чайников (часть 6)
    piP pi

    У меня вылазят ошибки при компиляции

    radio.c:32:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:32:1: warning: (near initialization for ‘station1’) [enabled by default]
    radio.c:33:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:33:1: warning: (near initialization for ‘station2’) [enabled by default]
    radio.c:34:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:34:1: warning: (near initialization for ‘station3’) [enabled by default]
    radio.c:35:1: warning: excess elements in scalar initializer [enabled by default]
    radio.c:35:1: warning: (near initialization for ‘station4’) [enabled by default]
    radio.c: In function ‘play_station’:
    radio.c:91:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:92:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:93:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    radio.c:94:17: warning: passing argument 1 of ‘do_child’ from incompatible pointer type [enabled by default]
    radio.c:43:6: note: expected ‘char **’ but argument is of type ‘char *’
    

    в чем причина?


  • GPIO для чайников (часть 6)
    piP pi

    в случае с mocp плеером можно запустить один раз в начале сервер
    execlp("mocp", "mocp", "-S", NULL);
    а затем каждую радиостанцию скармливать ему с параметром -l
    вот только после запуска сервера программа завершает свою работу.
    что тут можно придумать?


  • GPIO для чайников (часть 6)
    piP pi

    Привет всем!
    По поводу кода возник следующий вопрос:
    В какое место кода добавить write(); чтобы передать работающему дочернему процессу кнопку ENTER сразу после открытия станции? и как правильно передать нажатие этой кнопки? в ascii?
    Пробую с другими плеерами ибо omx не установился на archlinux.


  • GPIO для чайников (часть 6)
    piP pi

    У меня нет такого датчика. Создайте тему в форуме. Не я, так кто-нить другой подскажет.


  • GPIO для чайников (часть 6)
    piP pi

    Здравствуйте!
    А не могли бы рассмотреть работу RPI и датчика температуры DS18B20?


  • GPIO для чайников (часть 6)
    piP pi

    Куда уж подробнее. И так всё разжёвано


  • GPIO для чайников (часть 6)
    piP pi

    ОК!
    Будем работать над ошибками.
    Мой респект Вам!


  • GPIO для чайников (часть 6)
    piP pi

    Х-сервер (который запускается при старте графической оболочки LXDE, либо другой) требуют программы, которые для отображения графики используют его API. Грубо говоря, если интерфейс этих программ выглядит в виде типичного окна со стандартными кнопочками, то разумеется, просто в терминале такая программа не заработает. Есть программы, которые с графикой работают напрямую. Им LXDE тоже ненужен. В основном это либо игрушки, либо всякие демки с красивыми визуальными эффектами. А есть программы с псевдографическим интерфейсом, это когда графика рисуется в терминале печатными символами. Им тоже LXDE без надобности.


  • GPIO для чайников (часть 6)
    piP pi

    Ну дак а я вас и не ругаю. Способ, который описал я, является стандартным способом автозапуска приложений в Линуксе. Это не моё изобретение. Почему он у вас не сработал, я ничего сказать не могу, т.к. тоже в Линуксе чайник и сам с ним разбираюсь потихоньку.


  • GPIO для чайников (часть 6)
    piP pi

    Еще раз про загрузку программ из графической оболочки.
    Как я понял есть программы, которые необходимо запускать именно при работаещей графике. Я столкнулся с этим при экспериментах с радиолюбительской программой WSPR. Все попытки загрузить эту прогу без графической оболочки у меня провалились. Это видимо от незнания и непонимания, но тем не менее результат был достигнут и прога стала загружаться автономно, т.е. при включении питания RPI. И я не вижу ничего зазорного при таком подходе. Может кому и пригодится.


  • GPIO для чайников (часть 6)
    piP pi

    Спасибо за разъяснение работы индикатора загрузки. Я не заядлый любитель линукс, но чисто визуально мне показалось, что при индикации полной загрузки процессора другие приложения прихрамывают, но это видимо отдельная тема.
    Что касается второго вопроса о графической оболочке, то Вы видимо меня не совсем поняли. Я предложил иной способ загрузки прогаммы интернет радио в отличии от Вашего, т.к. Ваша методика у меня не сработала. Т.е. при описанном мною способе программа так же как и Вас загружается при включении RPI без клавы, мыши и пр.. Включил и получил радио, управляемое кнопкой. Ну так у меня получилось и не надо меня ругать. Это работает. Просто я имел в виду, что при таком способе сохраняется возможность полноценно применять графическую оболочки, при условии, что это необходимо. Еще раз повторюсь, что окна программы не видно. но кнопка работает. Может изложил сумбурно, но все это работает именно так как описано в Ваших техусловиях.


  • GPIO для чайников (часть 6)
    piP pi

    Несовсем верный вывод. Это в Виндусе, если показывается 100% загрузка процессора, значит компьютер задохнулся от возложенных на него задач и находится на грани зависания. В Линуксе на вашем RPi индикатор загрузки процессора показывает не его реальную загрузку, а скорее процент загрузки свободного времени. Если вы запустите ещё какое-либо приложение, оно спокойно запустится и будет работать. Просто на опрос кнопки процессор будет выделять меньше своего свободного времени. Задачи же имеющие более высокий приоритет, чем наша программа, сами прекрасно отберут себе ресурсов столько, сколько им нужно. Опрос состояния кнопки не является ресурсоёмкой задачей, поэтому и не представляет для процессора сколь-либо заметной нагрузки. Но раз у процессора куча свободного времени и делать ему больше нечего, он с удовольствием отдаёт всё своё свободное время процессу опроса кнопочки. Разумеется, если мы запусти несколько десятков тысяч процессов опроса кнопки, то они уже реально смогут загрузить процессор.
    И ещё, если вы продолжаете использовать RPi как десктоп, то в репозитариях есть масса уже готовых интрнет-приёмников с графической оболочкой и тысячами радиостанций в плей-листе. Так что в вашем случае лучше выбрать одну из таких программ. (просто вбейте в поиск репозитария слово radio и выбирайте любую).


  • GPIO для чайников (часть 6)
    piP pi

    Надеюсь последний на сегодня мой комментарий.
    При работе этой программы получаем 100% загрузку процессора и если пользуем ее в фоновом режиме, то это не очень хорошо, поэтому предлагаю лобовое решение по снижению загрузки проца до 15-20% без заметной потери функциональности. Просто несколько увеличилось время нажатия кнопки и все. Дискомфорта у мня такое решение не вызвало. Итак модифицируем одну строку:

    while(bcm2835_gpio_lev(PIN_IN)){delay(1000);}   
    // Просто ждём, пока не будет нажата кнопка управления
    

    т.е. добавлен delay(1000);
    Все.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 313
  • 314
  • 5 / 314
  • Войти

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

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