А что такое порт?
Лично я вопросов больше не имею.
Второе
нашел в интернете код и он работает как надо
void setup() {
pinMode(3, INPUT_PULLUP);
pinMode(4, OUTPUT);
}
bool led;
bool flag = 0;
void loop() {
bool butt = digitalRead(3);
if (butt == 1 && flag == 0) {
flag = 1;
led = !led;
digitalWrite(4, led);
}
if (butt == 0 && flag == 1) {
flag = 0;
}
}
void setup() {
pinMode(3, INPUT_PULLUP);
pinMode(4, OUTPUT);
}
void loop() {
if (digitalRead(3)==LOW) {
digitalWrite(4,!digitalRead(4) );
delay(200);
}
}
Во так во! Не думая…
это точно, речь шла про триггеры, а тут чуть кнопку подольше подержишь…
Вот мне и интересно как такой программный триггер преодолевает дребезг?
…
и перейдёшь в удобный автоматический режим нарастания счётчика-переменной по удержанию
…а со светодиодом - приятное мигание на удержании кнопки.
Чем боьше изучаю, тем больше нравится что-то такое
void setup() {
DDRD &= ~(1<<DDD3);
DDRD |= (1<<DDD4);
PORTD |= (1<<PD4)|(1<<PD3);
EICRA |= (1<<ISC11);
EIMSK |= (1<<INT1);
}
ISR(INT1_vect) {
DDRB ^= DDD4;
}
void loop() {}
Памяти потребляет очень сильно меньше, еще бы урезать, но не знаю как- только начал… И не менее интересно как одним битом управляется.
А DDRB тут причём? И что будем делать с дребезгом?
А известно ли тебе, Юрик, что светодиоды и от подтяжки светят?
И что вообще за мк? Я вот эти вот DDD3 / DDD4 не понял, если честно…
Понапридумывают, понимаешь ли. И гадай тут.
Небось 1<<3 что PB3, что DDD3.
это дьявольское искушение секты поклонников АВРСтудио
Не знаю. Я ж учусь только. Не проверял, если честно. Написал как запомнил
Как же ты учишься, если не знаешь?
Так вот, в телефоне. Долго и с ошибками. Я думал перевожу регистры DDRD на вход, нет? Проверить только послезавтра смогу.
Так вот, если пишешь, то каждый символ тебе должен быть понятен. Почему так, а не иначе. И по каждому знаку должен внятно ответить.
«Вот я что-то сляпал, нате разбирайтесь сами…»
Ничего там дьявольского нет. Разве что компилятор сильно устарел, а как его обновить - я так и не разобрался (имею ввиду gcc). Зато в MPLAB X IDE это делается элементарно.
void setup() {
DDRD &= ~(1<<DDD3); // пин 3 на вход
DDRD |= (1<<DDD4); // пин 4 на выход
PORTD |= (1<<PD4)|(1<<PD3); // включаем подтяжку пин 3 и HIGH пин 4
EICRA |= (1<<ISC11); // прерывание 1 на падение
EIMSK |= (1<<INT1); // включаем прерывание 1
}
ISR(INT1_vect) {
DDRB ^= DDD4; // инвертируем на вход
}
void loop() {}
По поводу если на входе засветится, так же можно бит подтяжки снять.

DDRD &= ~(1<<DDD3); // пин 3 на вход
Еще раз спрошу - что такое DDD3 и чем обычное (привычное) PD3 не устраивает? В конце концов просто «3» (три)?!