Вопрос по Эксперименту №3 (Светильник с управляемой яркостью)

Тема в разделе "Arduino & Shields", создана пользователем Alex777, 7 июл 2015.

  1. Alex777

    Alex777 Нуб

    Код (Text):
    #define LED_PIN 9
    #define POT_PIN A0

    void setup()
    {
    pinMode(LED_PIN, OUTPUT);
    pinMode(POT_PIN, INPUT);
    }
    void loop()
    {
    int rotation, brightness;
    rotation = analogRead(POT_PIN);
    brightness = rotation / 4;
    analogWrite(LED_PIN, brightness);
    }

     
    3. Что будет, если стереть из программы строчку pinMode(LED_PIN, OUTPUT)? строчку pinMode(POT_PIN, INPUT)?


    Если убрать по очереди сперва одну, потом вторую строку, то с программой ничего не произойдёт, почему?
    Уже была похожая тема, но так и не нашёл в ней короткого и внятного объяснения.
    Мои предположения только в том, что порт, помеченный на плате как «ANALOG IN» и пронумерованный с префиксом AО не требует функции настройки pinMode (POT_PIN, INPUT), т.к. уже по умолчанию предопределён как вход (INPUT),
    тогда почему, если убрать строку pinMode (LED_PIN, OUTPUT) программа всё равно будет работать?
     
    Последнее редактирование: 7 июл 2015
  2. DrProg

    DrProg Вечный нерд

    Неужели трудно оформлять код правильно? Два щелчка мышкой.
    Аналоговые по умолчанию INPUT, цифровые OUTPUT, в вашем коде не видно кто какой.
     
  3. Alex777

    Alex777 Нуб

    готово
     
  4. DrProg

    DrProg Вечный нерд

    Вот все верно, цифровой на выход, аналоговый на вход, теоретически можно не инициализировать. Но по правилам хорошего тона нужно, да и безопаснее.
     
  5. Alex777

    Alex777 Нуб

    Т.е. объяснения "Аналоговые по умолчанию INPUT, цифровые OUTPUT" достаточно?
     
  6. DrProg

    DrProg Вечный нерд

    Что не понятно из сказанного?
     
  7. Unixon

    Unixon Оракул Модератор

    После сброса контроллера все выводы в INPUT.
     
  8. Unixon

    Unixon Оракул Модератор

    Состояние вывода может быть следующим:
    INPUT, LOW - плавающий вход;
    INPUT, HIGH - вход притянут к Vcc через встроенный резистор 20~100кОм;
    OUTPUT, LOW - вывод притянут к GND через низкоомный канал полевика;
    OUTPUT, HIGH - вывод притянут к Vcc через низкоомный канал полевика;
    После сброса все выводы аппаратно переключаются в INPUT, LOW.

    Отсюда следует ответ на ваши вопросы:
    1) Изменится сопротивление выхода контроллера с миллиом на десятки килоом;
    2) Ничего;
    3) Будет, но вы этого не видите;
    4) Потому, что светодиоду хватает тока через подтягивающий резистор и вы не видите разницу между состояниями INPUT, HIGH и OUTPUT, HIGH.
     
  9. DrProg

    DrProg Вечный нерд

    Почему INPUT, HIGH, притянутый к vcc через аж 20-100 кОм не отличается от OUTPUT, HIGH притянутый через 220 Ом?
     
  10. Unixon

    Unixon Оракул Модератор

    Потому, что глаз не точный измерительный прибор.