В C++ вы не можете просто так превратить идентификатор в строку и передать ее как параметр. С помощью препроцессора это в принципе делается, но не так красиво. Кроме того, какой в этом смысл? Вы что, будете на ходу переименовывать пины? Зачем?
Короче, как вы хотите сделать, это все переворачивает с ног на голову. Так не нужно делать. Код (Text): class LED { private: byte m_Pin; public: byte pin() const { return m_Pin; } public: LED(const byte pin); ~LED() {} }; LED::LED(const byte pin) { m_Pin = pin; } LED flash(13), boom(10), bang(7); void foo(const LED& led, byte state) { digitalWrite(led.pin(), state); } void bar(void) { foo(flash,1); foo(boom,0); foo(bang,1); }
Не понимаю... Зачем нужны byte, что такое ~LED() {}, Какие действия выполняют bar, foo, boom, bang? Сделайте пожалуйста пример на мигание или чем нибудь другом.
byte - тип переменной, параметра функции. flash, boom, bang - объекты класса LED foo, bar - функции для примера LED::LED() - конструктор LED LED:: ~LED() - деструктор LED
Код (Text): class LED { private: byte m_Pin; public: byte pin() const { return m_Pin; } void in(); void out(); void on(); void off(); void blink(const int ontime, const int offtime, const int count); void blink(const int pulsetime, const int count); public: explicit LED(const byte pin); ~LED(); }; LED::LED(const byte pin) { m_Pin = pin; out(); off(); } LED::~LED() { in(); off(); } void LED::in() { pinMode(m_Pin, INPUT); } void LED::out() { pinMode(m_Pin, OUTPUT); } void LED::on() { digitalWrite(m_Pin, HIGH); } void LED::off() { digitalWrite(m_Pin, LOW); } void LED::blink(const int ontime, const int offtime, const int count) { for (int i = 0; i < count; i++) { on(); delay(ontime); off(); delay(offtime); } } void LED::blink(const int pulsetime, const int count) { blink(pulsetime, pulsetime, count); } LED flash(13), boom(10), bang(7); void test(void) { flash.blink(200,50,10); boom.blink(100,1,1); bang.blink(3000,100,1); }
Я вот не пойму, зачем классы нужны в данном случае? Чтобы устать? Функция вроде бы требуется простейшая - помигать лампочкой с заданной частотой заданное время, нет?
Как вы там глаза не сломали, я его пропустил. Вообще, может я не прав, но я противник умножать без нужды сущее. Если можно сделать проще, то надо сделать проще. Здесь можно было и на два порядка.
Ошибки на Вашу библиотеку: C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF\GeneralF.cpp: In member function 'void LED::blink(int, int, int)': C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF\GeneralF.cpp:41:29: error: expected ';' before 'i' for (int i = 0; i < count i++) C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF\GeneralF.cpp: At global scope: C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF\GeneralF.cpp:48:11: error: expected unqualified-id before 'void' void LED::void blink(const int pulsetime, const int count)
Просто опечатка, должно быть for (int i = 0; i < count; i++) Аналогично. void LED::blink(const int pulsetime, const int count)
Что то мне подсказывает, что вы не понимаете смысла написанного, раз для вас элементарная опечатка представляет проблему...