Код прерывания

VictorArx

★★✩✩✩✩✩
22 Мар 2021
532
86
Просьба посмотреть мой код и определить насколько он грамотный. Критика приветствуется.
C++:
const int buttonPin1 = 2;     // номер вывода с кнопкой
const int buttonPin2 = 3;

const int ledPin1 =  10;      // номер вывода со светодиодом
const int ledPin2 =  11;
volatile int buttonState = 0;         // переменная для чтения состояния кнопки

void setup()
{
  // настроить вывод светодиода на выход:
  pinMode(ledPin1, OUTPUT);
  // настроить вывод кнопки на вход:

  pinMode(ledPin2, OUTPUT);

  pinMode(buttonPin1, INPUT);
  // прикрепить прерывание к вектору ISR
  pinMode(buttonPin2, INPUT);

  attachInterrupt(0, pin_ISR, CHANGE);
  attachInterrupt(1, pin_ISR, CHANGE);

}

void loop()
{
  // Здесь ничего нет!
}

void pin_ISR()
{
  buttonState = digitalRead(buttonPin1);
  digitalWrite(ledPin1, buttonState);

  buttonState = digitalRead(buttonPin2);
  digitalWrite(ledPin2, buttonState);


}
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
с тем же успехом можно напрямую кнопки к светодиодам подключать без всяких контроллеров и кода
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
532
86
У вас два отдельных внешних прерывания на двух разных пинах. Зачем делать общий обработчик? - делайте отдельно на каждый пин
Понятно. Отвечаю сразу всем, а то опять удалят. Что такое 3,14? Можно без всяких прерываний сразу подключить кнопки. Товарищ не понял, что я изучаю прерывания. Спасибо всем ответившим.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
никакого процесса изучения в коде не наблюдается, а наоборот, неосмысленный копипаст каких то примеров. Это сразу видно по типам переменных.
Изучать в прерываниях нечего, т.к. это обычные функции с внеочередным выполнением по какому либо событию.
Кроме того не указано что вы вообще хотели сделать и получилось ли это или нет.
Так что смысла в посте вообще нет.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@Эдуард Анисимов, было бы там что то сложное или под конкретную задачу...
А так все сводится к копипасту примера и запуска на своей ардуине.
Если заработало - создается тема "смотрите я сделал",
иначе - "взял код отсюда(ссылка), а он не работает"
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,412
978
58
Марий-Эл
@IamNikolay, Системы просто нет. Нужно поставить какую то цель. И идти к ней. Роя интернет. Задавая вопросы.
А просто пробуя то одно, то другое достичь чего либо довольно сложно.
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
532
86

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,412
978
58
Марий-Эл
@VictorArx, Часы на DS3231 собрать. И не так, как здесь все делают. А правильно, на прерываниях и остальных плюшках что даёт этот чип. Можно говорящие. Тогда можно изучить или флеш микросхемы или флеш карты.
 

Александр Симонов

★★★★✩✩✩
2 Авг 2018
727
208
Мне раз сказали что код безграмотный вот и написал про грамотный.
Вот так бросят бездумно фразу, а потом у ребенка травма на всю жизнь.

Ладно, так быть. Как сертифицированный грамотей 20-го уровня международного класса, объявляю твой код грамотным. Кто скажет иначе, отсылай их ко мне. А ты учись дальше, больше пиши, ещё больше читай чужой код. Всё будет хорошо. Аминь.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@VictorArx, тогда посмотрите про типы переменных, buttonState - может принимать только 0 и 1 (т.к. кнопка нажата либо нет, третьего не дано) по этому правильнее объявить её булевым типом.
Что касается указания пинов кнопок и светодиодов - то они указываются через #define
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
532
86
@VictorArx, тогда посмотрите про типы переменных, buttonState - может принимать только 0 и 1 (т.к. кнопка нажата либо нет, третьего не дано) по этому правильнее объявить её булевым типом.
Что касается указания пинов кнопок и светодиодов - то они указываются через #define
Замечательно, спасибо! Вот таких ответов я жду, конструктивных, с объяснениями , а не просто критики в стиле твой код фигня. По совету друзей начал изучать язык С++(упращённый вариант для Arduino). Надеюсь к пенсии выучу. Теперь понял, что начинать коды нужно с изучения С++, а не с кода прерываний и разных циклов.
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
532
86
нет никакого "упрощенного С++ для ардуино", в ардуино поддерживается полный набор конструкций С++ .
Не правильно выразился. Изучение С++ освещено в разных изданиях. Мне дали описания в более доступной форме.
И что Вы в меня такой влюблённый.