Attiny85 простая проблема с аналоговым и цифровым выходом
Я просто зажигаю светодиод через TIP31C, контакт 0 проходит через резистор 560 кОм на входной контакт наконечника. контакт 1 проходит через резистор 750 Ом на входной контакт наконечника ^я не уверен, что эта информация действительно актуальна
Причина, по которой я делаю это, заключается в том, что я могу перевести attiny85 в спящий режим, в то время как контакт 0 установлен в положение HIGH, чтобы светодиод работал с очень низкой яркостью, что-то вроде функции ожидания
void setup() {
}
void loop() {
digitalWrite(0, HIGH);//работает ТОЛЬКО в первый раз
delay(500);
digitalWrite(0, LOW);
delay(500);
analogWrite(1, 15);//всегда работает
delay(500);
analogWrite(1, 0);
delay(500);
/*it's like as soon as i've used an analogWrite, i can no
longer output with digitalWrite
*/
//pinMode(0, OUTPUT);//не помогло
digitalWrite(0, HIGH);//никогда не работает
delay(500);
digitalWrite(0, LOW);
delay(500);
}
@Valkor Simpson, 👍-1
Обсуждение1 ответ
Здесь есть ряд проблем:
Вы утверждаете, что у вас резистор 560 кОм, это слишком высокое значение. При напряжении 5 В ток будет ограничен до 8,9 мкА.
- Это слишком мало для питания светодиода, для которого, вероятно, требуется до 20 мА (5 В / 0,02 А = не менее 250 Ом)
- Это также слишком мало для базы транзистора (я не совсем уверен, правильно ли я понимаю усиление транзистора, но я думаю, что если вы подаете 1 мА на базу TIP31C, его усиление 25 будет допустим до 25 мА между коллектором и эмиттером.) Исходя из этого, 5 В / 0,001 А = 5 кОм.
Вам нужны
pinMode(0, OUTPUT);
иpinMode(A1, OUTPUT);
в настройках. Это будет работать, за исключением того, что вы не заметите эффекта с вашим резистором 560 кОм.Вам также необходимо проверить контакты atTiny85.
Как видите, единственные аналоговые выходы находятся на физических контактах 2, 3 и 7. Вам нужно обращаться к ним (для подключения к контакту 7) как:
pinMode(A1, OUTPUT);
analogWrite(A1, 15);
Ниже показано приблизительное представление о том, как должна выглядеть схема
Ниже приведен (непроверенный) пример кода:
void setup() {
pinMode(A1, OUTPUT);
}
void loop() {
analogWrite(A1, 15);
delay(500);
analogWrite(A1, 0);
delay(500);
}
Я думаю, вы перепутали «аналоговый выход» (на самом деле Attiny85 не имеет реального аналогового выхода, то есть ЦАП, цифро-аналогового преобразователя. Он может выводить только напряжения ШИМ для имитации аналоговых сигналов) с выводами АЦП (аналогово-цифровой преобразователь). ), который в основном является аналоговым входом., @chrisl
- Случайная ошибка "Compilation error: Error: 13 INTERNAL: exit status 1". Как устранить или что вызывает эту ошибку
- установка выходного аналогового/цифрового контакта на землю
- Опасно ли соединять два выходных контакта вместе?
- attiny85 сбрасывает себя вместо процедуры пробуждения
- ATtiny85 не выходит из сна
- Аналоговая запись (PIN, 1023) <>Цифровая запись (PIN, HIGH)
- Функция AnalogWrite выдает меньшее напряжение, чем digitalWrite на моей плате.
- ATtiny85 со сном и последовательным портом
есть проблема какая-то?, @jsotola
@jsotola да, я добавил комментарии в код, объясняющий это, @Valkor Simpson
Попробуйте сделать pinMode в методе настройки. Вот где это должно быть., @Filip Franik
@FilipFranik Я пробовал, все равно не работает, @Valkor Simpson