Библиотека для цифрового выхода
- Войдите на сайт для отправки комментариев
Втр, 03/05/2016 - 18:55
Библиотека упрощает объявление цифровых выходов и управление ими.
Имеет функцию установки высокого уровня на выходе, низкого уровня на выходе, инвертирование выхода, а так-же проверку состояния выхода.
Пример Blink`a с применением библиотеки
#include <DigOut.h>//подключаем библиотеку DigOut LED(13);//инициализация цифрового выхода 13 без установки уровня void setup() { } void loop() { LED.HI();//устанвливаем низкий уровень на выходе delay(1000); LED.LO();//устанвливаем низкий уровень на выходе delay(1000); }
или
#include <DigOut.h>//подключаем библиотеку DigOut LED(13,0);//инициализация цифрового выхода 13 с установкой низкого уровня void setup() { Serial.begin(9600); } void loop() { LED.invert();//инвертируем состояние выхода Serial.println(LED.state());//Получаем состояние цифрового выхода и выводим delay(1000); }
Жесть. Реализовывать ногодрыг в классах через Wiring. Фсё, ушел на пензию.. :)
Библиотека упрощает
Можете пояснить в чём именно состоит упрощение?
Пропадает необходимость забивать Setup() строками типа pinMode(13,OUTPUT), писать #define LED 13 или #define LED_on digitalWrite(LED, HIGH)
Просто даем имя выходу (если так можно выразится), а дальше всё просто LED.HI(), LED.LO(), LED.invert() или проверяем состояние if(LED.state()==1){}/
Но Вам это незачем Уважаемые эксперты.
Но Вам это незачем Уважаемые эксперты.
Я действительно хочу разобраться, в чем именно упрщение. Читаю Ваш ответ и аытаюсь понять.
Пропадает необходимость забивать Setup() строками типа pinMode(13,OUTPUT)
писать #define LED 13
Нет, я всё-таки хочу понять, поэтому объясните пожалуйста, толком. Вот Ваш код.
а вот стандартный код
Строк одинаково. Чем Ваш код удобнее? Может объяснить?
Дело не в количестве строк, а в читаемости (визуальном восприятии) кода. Меньше подготовительной работы - #define MyPIN 13, pinMode(MyPIN, OUTPUT). Просто - DigOut MyPin(13)
Я устал. Я ухожу. (цитата)
Держал в коллекции библиотеку AH_74HC165.h (должна гуглиться, но если нет это "Created by A. Hinkel 2012-08-05 и " Download from "http://www.arduino-projekte.de". Это еще не все. Там в заголовке еще Code license: CC-BY-SA, не меньше. У меня есть еще примеров библиотекописательства.
Это восхитительно в плане э-ээ... донесения до общественности результатов своих изысканий, как на кулинарном форуме. Ну и собирания "лайков" вроде "чмоки". Заслуживает внимания и чеканный оборот, сродни do ... while - просто ... а дальше все просто (конец оборота).
Ну вот кто дернул уважаемых экспертов на непродуманные и эмоциональные реплики?
(уходит, бормоча) ... прости, Г-ди, дитей ардуиновых, ибо не ведают что
Дело не в количестве строк, а в читаемости (визуальном восприятии) кода. Меньше подготовительной работы - #define MyPIN 13, pinMode(MyPIN, OUTPUT). Просто - DigOut MyPin(13)
Значит, вместо #define MyPIN 13, pinMode(MyPIN, OUTPUT), будет #define MyPIN 13, DigOut MyPin(MyPIN) и это гораздо, удобнее. Понятно!
Можно поинтересоваться, а для чего в классе свойство _state? Используется оно единственный раз в методе DigOut и больше нигде. Если его убрать, то ничего не изментися. Так, для чего оно? "На вырост"? Для использования в будущих расширениях? Или просто, чтобы память занимала?
Чтобы память занимала. Надо её занять чем-то пока светодиодами моргаем, чтобы транзисторы не атрофировались)
Чтобы память занимала. Надо её занять чем-то пока светодиодами моргаем, чтобы транзисторы не атрофировались)
Ну, вот, теперь понятно.
Можете же объяснять толково, а то сразу "вам не надо" ...
Ну так и чтобы тормозила внятнее .. а то 16 мгц как-то много шибко. Да даже 100кгц digitalWrite() глазом не уследишь .. :)
Подправил. Избавился от _state)
Подправил. Избавился от _state)
Молодец.
Теперь обратите внимание на два практически одинаковых метода
Зачем?
Они запросто объединяются в один. Для этого достаточно выбросить первый, а в описании класса, второму задать значение параметра state по умолчанию. Тогда к этому методу можно будет обращаться как с двумя параметрами, так и с одним.
Э-э.. нет. ТАК не пойдет. В первом конструкторе установка состояния вывода НЕ вызывается и вовсе, а во втором установка происходит в заданное значение. Параметр по умолчанию БУДЕТ делать установку в значение по умолчанию. Автор таким способом хотел "сэкономить" код (помазав сверху пирог wiring ещё и своим).
Э-э.. нет. ТАК не пойдет. В первом конструкторе установка состояния вывода НЕ вызывается и вовсе, а во втором установка происходит в заданное значение. Параметр по умолчанию БУДЕТ делать установку в значение по умолчанию.
Кто Вам такое сказал? Сделайте его не bool, а int8_t. По умолчанию -1, а внутри, если меньше нуля - не устанавливать, а в противном случае установить. Делов-то!
То есть Вы предлагаете ДОБАВИТЬ проверку в том месте где ТС хотел СЭКОНОМИТЬ?!? (он хотел конечно странного, но все же!)
Покопался в интернете, получилось следующее
DigOut.h
DigOut.cpp
Теперь можно вызывать и без второго параметра (0 по умолчанию).
Теперь экземпляр класса можно описать
DigOut x; - с параметрами по умолчанию (имя экземпляра x, 13 пин, состояние LOW)
DigOut x(myPin); - (имя экземпляра x, пин myPin, состояние LOW по умолчанию)
DigOut x(myPin, 1); - (имя экземпляра x, пин myPin, состояние HIGH задано)
Библиотека DigOut
... а теперь попробуйте с прямым доступом к портам, и диджитал врайт забудите.
за библиотеку спасибо, еще один пример создания библиотеки.
Последнее время пытаюсь облегчить процесс написания программ, вот недавно еще библиотеку для терморезистора писал тут.
Arduino позволяет пользователю сосредоточиться на разработке проектов, а не изучении устройства и принципов функционирования отдельных элементов.
Я думаю что большенству (для моргалок, теплиц, лестниц с подсветкой, паяльных станций и т.п. ) хватит и дигталВритев, а кому мало ... можно и глубже копнуть.)
То есть Вы предлагаете ДОБАВИТЬ проверку в том месте где ТС хотел СЭКОНОМИТЬ?!? (он хотел конечно странного, но все же!)
Он хотел сэкномить? Впервые слышу. Ну, если не хотите добавлять проверку, то можно оставить оба метода, но не дублировать, а вызывать один из другого. В любом случае одинаковые куски кода - абсолютное зло.
Покопался в интернете, получилось следующее
Я так понимаю, Вы упражняетесь в написании классов. Если так, давайте упражнаяться дальше.
Следующее упражнение, добавьте возможность присваивания уровня пину. Т.е., чтобы можно было писать.
Потом, присваивание пинов друг другу (по уровню, чтобы уровень одного присваивался другому)
Как сделаете, попробуйте добавить сравнения пинов по уровню, чтобы можно было писать
Заинтриговали, да и вплане воспоминания С++, тоже решил поучаствовать:
И? Сравнил части файла "для Си-онистов" и "для классных г-кодеров" .. и вот не могу понять чем же С++ выгоднее и лучше? Явно код будет больше и ЗНАЧИТЕЛЬНО, писать - больше И ЗНАЧИТЕЛЬНО, возможностей ошибитьсядаже в написании методов, классов .. больше и ЗНАЧИТЕЛЬНО. Как итог: на "С" часть, вместе с платформозависимым куском (больше всего времени) ушло от силы минут 30. Кусок "для классных кодеров" писался 2(ДВА) часа!
Ладно, это одна из первых моих поделок для С++ после 17-и летнего перерыва .. мож и намудрил чего. Ну ТАК ПОКАЖИТЕ мне как оно пишется "легко и ненапряжно", а главное "шустрее и абстрактнее" .. вот сильно сомневаюсь, что кто-то тут из апологетов С++ возьмется изменить хоть что-то..
А в довесок ко всему .. оно ещё и НЕ КОМПИЛЯЕТСЯ в ИДЕ вот таким одним файлом .. ни в какой версии. (1.0 не имею и давно уже).
Жесть. Линус Торвальд абсолютно прав, когда пишет, что С++ -- инструмент говнокодера.
тоже решил поучаствовать:
Решения поставленных задач в коде не обнаружено. Участие не засчитывается.
не могу понять чем же С++ выгоднее и лучше?
И не поймёте. Из того, что использовано слово class, ещё не следует, что это программа на С++. Известно, что "настоящий программист может написать фортрановскую программу на любом языке".
Кусок "для классных кодеров" писался 2(ДВА) часа!
Ну, не я же виноват, что Вы писать не умеете, правда?
Ну ТАК ПОКАЖИТЕ мне как оно пишется "легко и ненапряжно", а главное "шустрее и абстрактнее"
Вы хотите нанять меня в качестве персонального преподавателя (репетитора)?
.. вот сильно сомневаюсь, что кто-то тут из апологетов С++ возьмется изменить хоть что-то..
Ну, почему же? $200 в час и я готов работать. Хотя, я наверное не подхожу потому, что я вовсе не апологет С++ ... у меня другие "любимые языки".
А в довесок ко всему .. оно ещё и НЕ КОМПИЛЯЕТСЯ в ИДЕ вот таким одним файлом
То, что Ваш код не компилируется - это вина языка? Или Вашего неумения на нём писать? Подумайте.
Линус Торвальд абсолютно прав, когда пишет, что С++ -- инструмент говнокодера.
Конечно, прав! Как, впрочем, и любой другой язык. Инструментом говнокодера может выступать абсолютно любой язык. Говнокод определяется не языком, а стилем программирования.
Ваш ответ, извините, обыкновенная для вас "вода" без привязки к поставленным вопросам и утверждениям. То есть - не по делу.
1. Вопрос не в том, что есть слово class или нет. вопрос в том, что жмакать кнопочки для версии С++ оказалось в 3 раза больше. Об чем и было указано: "писать больше и ЗНАЧИТЕЛЬНО" .. вы этот момент умолчали, ответив не по делу. Вопрос не в том, что не умею или умею, а просто технически БОЛЬШЕ.
2. Там не было вопроса о найме и тем более конкретно вас в каком-либо качестве. Было предложение ПОКАЗАТЬ что утверждение п.1 - неверно. Вы попытались перевести стрелки.
3. Оно не компиляется по причине того что в Arduino.h торчит #define INPUT 0 .. что замещает имя классной константы на "бардак". :) и это всё, что было утверждено. Вы же снова попытались перевести стрелки и что печально на обсуждение моей личности, вместо обсуждения дела. Вот и подумайте сами.
4. "Говнокод определяется не языком, а стилем программирования." Требует доказательств. В данном конкретном случае, стиль разработки на С++ ПРОВОЦИРУЕТ на писание говнокода. Это стиль порождающий говнокод. Аргумент "за":
в данном примере использован абстрактный интерфейс пинов + класс реализации. С т.з. языка и архитектурного планирования подход более чем оправдан: предыдущее обсуждение в соседней теме "что случилось с компилятором" показало что существует НЕСКОЛЬКО оптимальных имплементаций этого интерфейса для разных случаев.
Так вот: описание одних и тех же сущностей приходится делать .. ТРИЖДЫ .. в абстрактном классе, заголовочном описании класса реализации и в самой реализации методов. Ошибиться в одном из них "по ходу пьесы" очень даже легко (что и было проделано мной несколько раз) .. поиск описок, их исправление .. вот это и есть те самые ДВА ЧАСА плюсом к конечно же меньшей скорости разработки в силу малого опыта. Там ещё "осталось".. :)
Вот это и есть провоцирующий к говнокоду язык.
А самое главное, что получить настолько же эффективную реализацию в конечном скетче, даже для такого простого класса практически не представляется возможным. То есть мало того, что имеем язык провоцирующий к говнокоду, так ещё и его компиляция приводит к говно-системам с неизбежностью очевидного.
Вот это, как понимаю и сокрыто в словах Торвальдса.
Ваш ответ, извините, обыкновенная для вас "вода" без привязки к поставленным вопросам и утверждениям. То есть - не по делу.
Это Ваше оценочное суждения. Я считаю, что мой ответ был по делу.
1. Вопрос не в том, что есть слово class или нет.
Так и я о том же. То, что у Вас написано - не является программой на С++, хотя и использован синтаксис этого языка. Поэтому делать выводы о языке на основании Вашего кода просто некорректно.
2. Там не было вопроса о найме ... Было предложение ПОКАЗАТЬ
"показать" означает, что я должен поработать какое-то время на Вас, показывая Вам что-то. На рынке труда это называется наймом.
3. Оно не компиляется по причине того что ...
Какая разница по какой причине? Что-то другое не компилируется по причине того, что точку с запятой не поставили, и что? Язык-то то тут при каких делах?
С++ ПРОВОЦИРУЕТ на писание говнокода.
Написание говнокода провоцируется в первую очередь, неумением программировать, а во-вторую, незнанием языка и неумением на нём писать. Например, Вы не знали как устроена целочисленная арифметика и вполне благополучно наговнокодили на самом что ни на есть кошерном С. Помните? Потом ещё в своей обычной манере доказывали мне, что Вы правы.
описание одних и тех же сущностей приходится делать .. ТРИЖДЫ ..
Мне остаётся только повторить, что не я виноват в том, что Вы не знаете языка и не умеете на нём писать.
Я вижу появилось дополнение
получить настолько же эффективную реализацию в конечном скетче, даже для такого простого класса практически не представляется возможным.
Сделать, чтобы установка HIGH или LOW в этом (иди подобном этому) классе производилась одной командой процессора - как два пальца. При этом устанавливать можно и присваиванием, как я предложил ИС сделать - и всё равно будет одна команда. То, что Вы этого не умеете - это Ваша проблема, а не проблема языка.
Я помню, как вы не разобравшись, по незнанию С, указали на некую ашипку, а потом не поняли, что так написано было сознательно. Просто не для тех, кто не знает языка. :) И до сих пор не можете себе в этом банальном вопросе признаться, чьто и подтверждает вышеизложенный текст. Помню конечно.
[qoute]Сделать, чтобы установка HIGH или LOW в этом (иди подобном этому) классе производилась одной командой процессора - как два пальца. При этом устанавливать можно и присваиванием, как я предложил ИС сделать - и всё равно будет одна команда. То, что Вы этого не умеете - это Ваша проблема, а не проблема языка.[/quote]
Что я умею, а чего нет - ни разу не ваша проблема. Ваши непрерывные попытки заострять на этом внимание - говорят только о том, что Вы ПРИЗНАЕТЕ, что вам до моих знаний и умений - как до Пекина пешком. Спасибо конечно, "мелочь, но приятно". Тем не менее, я буду настаивать на переводе этого и ЛЮБЫХ ИНЫХ обсуждений в конструктивное русло, а не СРАЧА, как вам оно больше НРАВИТСЯ.
Так вот, то что тут можно компилять в одну команду .. я тоже вижу. Я также вижу что в целом(!) язык ПРОВОЦИРУЕТ на длинное компилирование. И в этом вопросе, мнение иных ветеранов программирования (и не только Торвальдса, но и Страуструпа, Вирта) - однозначно. Вы таки "пготив"? :)
а потом не поняли, что так написано было сознательно.
Сознательно? Архат, это уже ни в какие ворота не лезет! Тогда Вы признали свою ошибку и написали "Похоже "улучшил" макрос когда переносил в файл" (правда тут же новую сдлелали, но сейчас не об этом). А теперь это уже стало "сознательно" и ошибся, оказывается, я? Т.е. Вы не только безграмотный прогер, но ещё и ... как бы помягче .. брехло? Ну, ладно, живите с этим. Обсуждать что-то с человеком, который врёт в глаза я как-то уже давно отвык.
Вы на самом деле дурак или только прикидываетесь? Перечитайте что там написано:
"Это макропродстановка и в нормальном выражении он будет выглядеть так:
int time = 100*TSC_PERIOD; что после разворачивания макроса даст
int time = 100*(1000/1024); что после предвычисления компилятором константы даст 97,65625 что после преобразования компилятором к целой константе даст 97, что и требовалось. :)"
и далее: "Похоже "улучшил" макрос когда переносил в файл." сказано про добавленные СКОБКИ и только.
Так что не поняли до сих пор. И "брехло" - тут только Вы. Кстати ваше утверждение - "Сделать, чтобы установка HIGH или LOW в этом (иди подобном этому) классе производилась одной командой процессора - как два пальца."
Есть ПРЯМОЕ ВРАНЬЁ. Я же вам и давал ссылку на то КАК оно делается в С++ .. запамятовали?
Или вам напомнить вашу "эквилибристику" в классом Print? В отличии от вас, я не храню ссылки на ваши перлы, мне это незачем. А вот вам оно ОЧЕНЬ НАДО, ибо бабский склочник.
Впрочем, я уже отписал вам, что все ваши нападки на меня лично и хотелки подколоть в незнании чего-либо, я рассматриваю как признание вашей собственной несостоятельности в ваших же собственных глазах и только. Никак иначе. Так что - спасибо ещё раз. Мне - приятно.
Не, я всё понял про Вас, можете дальше не разоряться. Ухудшить моё мнение о Вас Вам уже не удастся. Расслабьтесь уже. Всё закончилось.
ЕвгенийП, уже в сотый раз пишу о том, что мне глубоко наплевать на ваше мнение обо мне конкретно. Особенно в свете вашей истории появления тут и обучении работе с микроконтроллерами и языком С на примерах МОЕГО кода И обсуждения ваших ляпов. Меня утсраивает тот факт, что код, который написан мною - вам помог освоить эту ветвь программирования.
А неблагодарных дураков, я за свою жизнь повидал много. Вы - далеко не первый.
обучении работе с микроконтроллерами и языком С на примерах МОЕГО кода
Чего? Вы здоровы? Обратитесь к врачу, на всякий случай, а то как бы эта мания величия во что-нибудь более серьъёзное не перешла.
Опять промышленное велосипедостроение? :)
Опять ЕвгенийП и Arhat109-2 на ровном месте разругались. Вам что заняться нечем? Напомню: ЕвгенийП обещал этюд "Память 2", а Arhat109-2 - дешёвое дополнение к ОЗУ для Меги. Давайте не руганью, а делами доказывать свою крутость!
Мне казалось, что я уже выложил достаточно .. что ещё надо описать, показать? Давайте на выходных сяду..
ЕвгенийП обещал этюд "Память 2"
Давно готов. И третий тоже. Не выкладывается по каким-то мистическим причинам - типа есть ощущение, что никому нафиг не надо.
Нет, так не пойдёт. Не буду я никому ничего доказывать. Давно уже никому ничего не доказываю. Если пишу что-то, то только потому, что мне это нравится.
yul-i-an,
Вы наш срач не берите в голову. Попробуйте сделать то, что я предложил в посте №20. Если вылезут непонятки, я готов помочь.
ЕвгенийП обещал этюд "Память 2"
Давно готов. И третий тоже. Не выкладывается по каким-то мистическим причинам - типа есть ощущение, что никому нафиг не надо.
Моё мнение по этому поводу такое: Чем больше качественной информации (по программированию и микроконтроллерам), тем лучше и для опытных программистов и для новичков. Лично мне эти этюды нравятся, получаю из них полезную информацию.
Кстати, может целую книгу написать (в электронном виде)?
Интересно, что конкретно для вас там оказалось полезным? Вот просто любопытно. На мой взгляд (и кое-где я его там излагал) - больше как раз вредной инфы .. а вам? :)
Спасибо на добром слове.
Кстати, может целую книгу написать (в электронном виде)?
Не думаю, что она хорошей получится. Я не умею останавливаться, если начинаю писать, то копаю вглубь и очень быстро ухожу в дебри, которые совсем не для новичков. И знаю про это, но поделать ничего не могу. Мне всё время кажется. что если я не докопал до дна, то материал типа неполный и непонятный :) Поэтому книги для профессионалов у меня получаются (есть несколько), а для новичков только вот здесь тренируюсь.
Вот, пример. Есть вроде и неплохая книга Брайана Эванса. И чего я к ней прикопался? Но вот открываю 10-ую страницу и просто глаза режет фраза: "Точка с запятой должна использоваться в конце выражения и разделять элементы программы". Нормальная фраза для начинающего, но по факту неправильная. На самом деле, это в Паскале точка с запятой является разделителем, а в С - она не разделитель, а часть выражения. Разница между этими вещами неощутима пока не полезешь в теорию компиляции и тысячи людей программируют, не понимая этой разницы, и им это ничуть не мешает. Но мне как-то не по себе от таких неточностей. Но это мои внутренние тараканы.
Вот ... видите пост №39. Сейчас опубликую, опять срач начнётся, а я уже устал от дремучего невежества этого господина и ему подобных.
Вы мне нравитесь. Развели сами срач .. и сами же оппонента в нем обвинили. Я кстати, вас неоднократно призвал прекратить троллизм .. так нет жеж .. ну и кто тут "невежда", впрочем как и "брехло"? :)
В какую сторону копать?
Да, прекратите уж, надоело. КТо брехло и невежда я уже говорил с тех пор ничего не поменялось. По второму кругу что-ли?
В какую сторону копать?
Это Вы про мой двадцатый пост?
Если про него, то почитайте хоть вот здесь и попробуйте сделать. Все три задачи примерно одинаково делаются. Будут непонятки, обращайтесь.
Сейчас опубликую, опять срач начнётся, а я уже устал от дремучего невежества этого господина и ему подобных.
Так публикуй для тех кому это интересно, а злопыхатели всегда найдутся (не стоит на них своё время растрачивать).
Спасибо на добром слове.
Кстати, может целую книгу написать (в электронном виде)?
Не думаю, что она хорошей получится. Я не умею останавливаться, если начинаю писать, то копаю вглубь и очень быстро ухожу в дебри, которые совсем не для новичков. И знаю про это, но поделать ничего не могу. Мне всё время кажется. что если я не докопал до дна, то материал типа неполный и непонятный :) Поэтому книги для профессионалов у меня получаются (есть несколько), а для новичков только вот здесь тренируюсь.
Так раздели книгу на разделы для новичков и профессионалов. Каждый прочитает свою часть и всем будет хорошо.
ЕвгенийП, я так понимаю необходимо использовать перегрузку оператора "=".
Тут помоему более доходчиво описано. Скоро реализую.
Архат, вставлю свои пять копеек: тот код, который ты привёл как код С++ - таковым не является, т.к. безграмотный совершенно. Спихивать на язык и компилятор своё неумение с ним обращаться - некрасиво. Обсирать инструмент, не умея им пользоваться - некрасиво вдвойне.
Я прекрасно понимаю и осознаю, что в каждом языке есть плюсы и минусы, более того, есть задачи определённого свойства, где использовать всю мощь С++ - это как из пушки по воробьям. Есть и наоборот, такие, где писать код на С - значит сходу загнать себя в гроб, скажем образно.
Но написать безграмотный код и аппелировать при этом к тому, что "раз я ДВА часа писал простенький С++ код и так и не смог написать его грамотно и правильно - значит С++ избыточен, ущербен и вообще гавно" - это как-то неконструктивно, как по мне.
Это ты ещё, наверное, не знаешь всей красоты шаблонов в С++ - помнится, читал я на изиэлектроникс статейку, где шаблонный С++-код вполне себе разворачивался ооченно эффективно. Да, первоначальное вхождение в вопрос в виде написания кода там было посложнее, чем простенький класс (посложнее - это мягко сказано), но: это, пожалуй, единственное самое грамотное с архитектурной точки зрения решение для имплементации истинной кроссплатформенности средствами языка, а не средствами препроцессора.
В общем, каждому инструменту - своё применение. Скажем, я сознательно пишу на С++ под дуину, ибо - век, как никак, на дворе двадцать первый, и уже давно доказано, что оверхэд, при грамотном проектировании, при использовании С++ - минимален. Во-вторых - я привык к архитектурный решениям, пусть и доморощенно кривоватым, а не сваливать весь код в кучу малу. В третьих - вся обвязка Wiring - это, по сути, набор С++-классов, хочется тебе этого или нет ;)
Но, если надо - могу писать и на чистом С в стиле процедурного программирования, не вопрос. Могу и на LUA, и на других языках. И если у меня что-то не получается - виноват не язык, это точно.
З.Ы. Про LUA чего-то вспомнилось - сначала мне он казался каким-то не таким, но потом, когда вкурил все прелести метатаблиц - оказалось, что эта пицца - самая вкусная пицца на свете. А мог бы и @бнуть не разобравшись ведь, как говорится ;)
"тот код, который ты привёл как код С++ - таковым не является, т.к. безграмотный совершенно. Спихивать на язык и компилятор своё неумение с ним обращаться - некрасиво. Обсирать инструмент, не умея им пользоваться - некрасиво вдвойне."
DIYMan, перечитайте мой пост. Там ТАК и написано: "и вот не могу понять чем же С++ выгоднее и лучше? .. Ладно, это одна из первых моих поделок для С++ после 17-и летнего перерыва .. мож и намудрил чего. Ну ТАК ПОКАЖИТЕ мне как оно пишется "легко и ненапряжно", а главное "шустрее и абстрактнее" .. что кто-то тут из апологетов С++ возьмется изменить хоть что-то .. А в довесок ко всему .. оно ещё и НЕ КОМПИЛЯЕТСЯ в ИДЕ вот таким одним файлом .. ни в какой версии. (1.0 не имею и давно уже). Жесть. Линус Торвальд абсолютно прав, когда пишет, что С++ -- инструмент говнокодера."
То есть, я полностью согласен с выводом, что данная реализация - плоха. Можете ответить, мне (и думаю ТС-у тоже будет полезно), почему НИКТО, и вы в т.ч. так и НЕ ПОКАЗАЛ НАМ ОБОИМ как должен выглядеть такой класс? Подход ТС - точно тотже самый .. то есть НЕУМЕЛЫЙ. Описание и реализация конечного класса ногодрыга - ОДИНАКОВА.
Почему, вместо разъяснения мы все вынуждены читать чьи-то помои? Я ведь ТРИЖДЫ просил прекратить этот процесс!!! По доброиу просил и предлагал...
2. Да, вы совершенно правы. Код, который эффективно реализует ногодрыг на С++ - этот тот самый пример с "изиэлектроника" .. в котором применен вовсе не простой класс (как тут ЕвгенийП соврал "как два пальца") .. и даже НЕ ТЕМПЛЕЙТ классов, а применен СИМБИОЗ препроцессора и темплейтов, где препроцессор использован как генератор темплейтов... что согласитесь, далеко не уровень ТС-а и не представленного им примера.
3. "В общем, каждому инструменту - своё применение. Скажем, я сознательно пишу на С++ под дуину, ибо - век, как никак, на дворе двадцать первый, и уже давно доказано, что оверхэд, при грамотном проектировании, при использовании С++ - минимален. Во-вторых - я привык к архитектурный решениям, пусть и доморощенно кривоватым, а не сваливать весь код в кучу малу. В третьих - вся обвязка Wiring - это, по сути, набор С++-классов, хочется тебе этого или нет ;)"
Конечно так: "каждомоу овощу свое место на своей кухне". Но только вот в программирования микроконтроллеров - овощу "С++" - места НЕТ. Есть? Покажите!
Ваше право выбирать языки и инструменты на свой скус и из собственных предпочтений. Вы же это никому не навязываете? Вот и я считаю, что этого НЕ СТОИТ делать. А только учить хорошему. Автор сам выберет что и как ему лучше. Каждый.
И третье: Wiring -- исключительно УЧЕБНЫЙ проект (об чем у авторов на сайте тоже сказано). Использовать учебный велосипед в промыщленном (да и домашнем практическом) применении - НЕЛЬЗЯ. Поучился, освоил - пожалте в Атмел студию, порты, битики, байтики .. да хоть теми же темплейтами из того же примера с изиэлектроника.. но никак не c Wiring.
Это все равно, что вы придете в парикмахерскую стричься и вас начнут стричь игрушечным, пластмассовым инструментом. Все, кто отказывается учиться далее и пытается пользовать Wiring для разработок - выглядят именно такими "парикмахерами".
Давайте сравним. Вот класс ТС-а:
А вот моя "безграмотная реализация":
Что называется "найдите 2 отличия". :)