Прошу помощи с отслеживание состоянии пина

Тема в разделе "Arduino & Shields", создана пользователем qwerty13rus, 12 июл 2019.

Метки:
  1. qwerty13rus

    qwerty13rus Нерд

    Вообщем есть два состояния, когда приходят подряд три 1 и дальше сразу три 0 и так далее. А второе состояние когда приходят около 60 нулей, а после несколько раз три 1 и три 0 и далее 60 нулей. Так вот, как дать понять дуине когда какое состояние?
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Какие идеи?
     
  3. qwerty13rus

    qwerty13rus Нерд

    Идеи есть, а реализация хромает. Думаю можно сделать так что бы если за секунду дуня насчитает больше чем допустим 10 единиц, то это первое состояние, а когда меньше, то второе.
     
  4. Asper Daffy

    Asper Daffy Иксперд

    А что такое единица и ноль в терминах сигнала на пине?
     
  5. qwerty13rus

    qwerty13rus Нерд

    наверное истина или ложь, если вы об этом :D
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Тогда как может прийти сразу "три нуля подряд". Как Вы их собираетесь один от другого отличать? "Где начало того конца, которым оканчивается начало?"
     
  7. qwerty13rus

    qwerty13rus Нерд

    Сигнал приходит через оптопару от мп3 блютуз модуля. Когда три раза 1 и три раза 0, то модуль в поиске устройства, а когда 60 нулей, то модуль подключен.
     
  8. qwerty13rus

    qwerty13rus Нерд

    Из за этого вопроса я тут.
     
  9. Asper Daffy

    Asper Daffy Иксперд

    Так, ещё раз. Что такое 0 и что такое 1? В терминах уровней.

    Только не говорите, 0 - это Gnd, а 1 - это питание. Потому что тогда пойдёт следующий вопрос. вот пришёл Gnd и висит 1ns - это сколько нулей? А 1 секунду? А если час висит? Как ты собираешься считать нули - в терминах уровней? (тоже и про 1-цы)
     
  10. qwerty13rus

    qwerty13rus Нерд

    Да, это гнд. Я не знаю сколько за 1ns прихдит нулей. Знаю только сколько успевает считать мк, это я уже писал. Нужно как то считывать состояние когда подряд приходят 3 единицы и 3 нуля
     
  11. Asper Daffy

    Asper Daffy Иксперд

    Господи, ока Вы не сможет словами объяснить что такое "пришло 3 нуля" - Вы не решите задачу. Никак!

    Кто шлёт сигналы? Ваше устройство или чужое? Каков протокол?
     
  12. KindMan

    KindMan Гуру

    Можете опубликовать код программы для МК, где он насчитал 3 нуля/единицы и где он успел насчитать 60 нулей? У вас спрашивают, как вы отличаете эти нули от единицы?
     
  13. parovoZZ

    parovoZZ Гуру

    он же ответил
    как где?
    Но ТС не уподобился ознакомиться с архитектурой МК. А если бы он это сделал, то знал бы. что внутри есть таймеры, с помощью которых можно вычислять время между состояниями на ноге. А уже по этим цифрам принимать какие-то решения.
     
  14. KindMan

    KindMan Гуру

    Я как раз и хотел научиться определять 60 состояний 0, без перехода в состояние 1 59 раз с одной оптопары. Таймер можно, да?
     
  15. parovoZZ

    parovoZZ Гуру

    это в попугаях. Т.е. в каких-то абсратных временных единицнах. типа такого:
    Код (C++):
    while(mp3pin == 0)
    {
    popugai ++;
    }
     
  16. Airbus

    Airbus Радиохулиган Модератор

    А как тогда отследить "вечный ноль" таймером?Вот просто нол-нэт ничего.Это сколько нолей 100?200?600?
    Логику включи.
     
  17. Onkel

    Onkel Гуру

    У ТС видимо 1 попугай- 1 прокрутка loop().
    А откуда сигналы? Может с пульта RC, или сигнал - импульсная модуляция для сервы?
     
  18. parovoZZ

    parovoZZ Гуру

    а зачем? Вечное вне времени.
     
  19. Airbus

    Airbus Радиохулиган Модератор

    Единственное что пришло на ум-Единица по переднему фронту импульса rise.А ноль по заднему фронту-rise.
     
    Daniil нравится это.
  20. parovoZZ

    parovoZZ Гуру

    да зачем это все??? У таймера есть вход сравнения ICPx - вот через него и работать.