Запутался с пинами

Тема в разделе "Arduino & Shields", создана пользователем 64detali, 9 май 2021.

  1. 64detali

    64detali Нерд

    Всем привет, пожалуйста дайте ответ на следующий глупый вопрос:
    analogRead(0);
    " эта команда будет пытаться читать аналоговое значение какого входа, цифрового D0 или аналогового А0"
    PS см. прикрепленную картинку.
     

    Вложения:

    • пины.jpg
      пины.jpg
      Размер файла:
      75,8 КБ
      Просмотров:
      104
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Будет пытаться с PD0. А в реале получится - со случайного из А0-А7 (!!!)
     
  3. Airbus

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

    У Вас же в шпаргалке все написано? Или с буквой А (латинской!) или номером больше 14. Как Вам удобнее
     
  4. 64detali

    64detali Нерд

    Кстати обратил на это внимание, что может читать с соседнего аналогового входа. Если задать вместо "0" значение "A0" перестанет перебирать другие пины?
     
  5. 64detali

    64detali Нерд

    Свободно читает соседний аналоговый вход, если перепутать пайку. Другой вопрос, когда задействовано два аналоговых пина.
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Два аналоговых входа ОДНОВРЕМЕННО быть задействованы - НЕ МОГУТ в принципе. Схемотехника входного коммутатора не позволяет. Другое дело - что переключаются они быстро.
     
  7. Asper Daffy

    Asper Daffy Иксперд

    ТС,

    Вас троллят. analogRead(0) - ровно тоже самое, что и analogRead(A0) и ровно тоже самое, что analogRead(14). Пишите так, как Вам больше нравится.

    Вот, что делает analogRead первой же строкой
    Код (C++):
    if (pin >= 14) pin -= 14;
     
    Последнее редактирование: 10 май 2021
    64detali нравится это.
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Тогда как будет выглядеть чтение с А1 ? Он же вроде будет номером 15 ? А ваше if не позволит !?
     
  9. Asper Daffy

    Asper Daffy Иксперд

    Чего не позволит? Из 15 оно сделает 1. Из 16 - 2. Нужен номер ADC канала - вот он и получается. См. исходник функции analogRead в файле wiring_analog.c
     
  10. Ariadna-on-Line

    Ariadna-on-Line Гуру

    if (pin >= 14) pin -= 14;
    1. Из 15 оно сделает 14, из 16 - то же. но не 1 или 2.
    2. Синтаксический анализатор отличит "АналогРид" от команды "ДиджиталРид" и подставит нужные по смыслу номера пинов.
     
    Последнее редактирование: 10 май 2021
  11. Asper Daffy

    Asper Daffy Иксперд

    Чего?

    Т.е. если переменная pin равна 15, то после выполнения оператора
    Код (C++):
    if (pin >= 14) pin -= 14;
    она станет равной 14?

    Я не буду это комментировать, просто запустите и проверьте. А потом расскажете, что получилось.

    Ну, а пункт №2 я тем более комментировать не буду. Сами-то поняли чего сказали?
     
    Последнее редактирование: 10 май 2021
    b707 и 64detali нравится это.
  12. b707

    b707 Гуру

    да ладно. Ариадна просто сослепу не увидел "минус" в операторе
    Код (C++):
    pin -=14;
     
    Ariadna-on-Line нравится это.