Передача PinMode в функцию
- Войдите на сайт для отправки комментариев
Чт, 24/09/2020 - 17:26
Вопрос как можно реализовать следующее:
в ядре в Commons.h есть перечисление
typedef enum { INPUT = 0x0, OUTPUT = 0x1, INPUT_PULLUP = 0x2, INPUT_PULLDOWN = 0x3, } PinMode;
его использует функция void pinMode(uint8_t pin, PinMode mode); из wiring_digital.c
Я делаю класс кнопки и хочу в конструкторе сразу передавать значения номера
пина и pinMode. Сейчас это через костыль - доп переменную const uint8_t mode
class MyButton { public: MyButton(const int pinN, const uint8_t mode) { if (mode == 0) { pinMode(pinN, INPUT); digitalWrite(pinN, LOW ); } if (mode == 1) { pinMode(pinN, INPUT_PULLUP); digitalWrite(pinN,LOW); } this->pinN = pinN; }
а хотелось бы сразу MyButton(const int pinN, PinMode mode) {} но не понимаю как передать это в функцию. В лоб - не компилируется
pinMode(pinN, INPUT); => pinMode(pinN, mode);
Я делаю класс кнопки и хочу в конструкторе сразу передавать значения номера
пина и pinMode. Сейчас это через костыль - доп переменную const uint8_t mode
в передачи переменной mode как раз никакого "костыля" нет, так и надо делать. А вот код внутри конструктуора у вас - сплошной костыль
Что мешает написать это так
Спасибо! Все проще чем я думал, тогда конечно костыли откидываем. Просто не хватает опыта и пытаюсь простое сделать сложным, а потом бороться...
просто меня смутило, что enum сделан как отдельный тип данных typedef PinMode. И я пытался передать значение используя этот тип, а не int
вообще там и byte хватит
uint8_t это byte, int в этом случае - лишняя трата памяти
uint8_t - это да. Я больше с typedef запутался