Код (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) программа всё равно будет работать?
Неужели трудно оформлять код правильно? Два щелчка мышкой. Аналоговые по умолчанию INPUT, цифровые OUTPUT, в вашем коде не видно кто какой.
Вот все верно, цифровой на выход, аналоговый на вход, теоретически можно не инициализировать. Но по правилам хорошего тона нужно, да и безопаснее.
Состояние вывода может быть следующим: INPUT, LOW - плавающий вход; INPUT, HIGH - вход притянут к Vcc через встроенный резистор 20~100кОм; OUTPUT, LOW - вывод притянут к GND через низкоомный канал полевика; OUTPUT, HIGH - вывод притянут к Vcc через низкоомный канал полевика; После сброса все выводы аппаратно переключаются в INPUT, LOW. Отсюда следует ответ на ваши вопросы: 1) Изменится сопротивление выхода контроллера с миллиом на десятки килоом; 2) Ничего; 3) Будет, но вы этого не видите; 4) Потому, что светодиоду хватает тока через подтягивающий резистор и вы не видите разницу между состояниями INPUT, HIGH и OUTPUT, HIGH.
Почему INPUT, HIGH, притянутый к vcc через аж 20-100 кОм не отличается от OUTPUT, HIGH притянутый через 220 Ом?