ж/к дисплей WH1601
- Войдите на сайт для отправки комментариев
Втр, 12/12/2017 - 19:32
Доброго времени суток!
Попал мне в руки дисплей WH1601. Однострочный, но мнящий себя двухстрочным. Конечно же это было выяснено вначале опытным путем, а потом найдено в интернете и даташите. Скачать библиотеку было бы слишком просто, поэтому я решил... барабанная дробь.... написать класс. Раньше я этого не делал. Стоит ли говорить, что не взлетело. прошу помощи. Компилляцию проходит без проблем, но экран ничего не отображает.
#include <LiquidCrystal.h> //отображение данных на дисплее LiquidCrystal lcd(9, 8, 7, 6, 5, 4); //пины к которым подключен дисплей char Text[16]; class screen { private: public: void Print(char Text[]){ /*разбиваю строку на символы, если их боььше 16, то выводу ERROR, если меньше или равно, разбиваю на две строки и вывожу на экран*/ lcd.print(Text); } protected: }; void setup() { lcd.begin(8, 2); screen Screen; Text[16] = "1235123"; Screen.Print(Text); /* lcd.print("TEST TE"); lcd.setCursor(0, 1); lcd.print("ST TEST"); */ } void loop() { }
О наследовании классов почитайте. В вашем случаю правильнее ваш класс наследовать от LiquidCrystal. Тогда не надо будет отдельно lcd определять.
В строке 22 написан откровенный бред. Вы присваиваете ОДНОМУ символу целую строку, еще и по неверному адрусу в памяти.
Стоит ли с таким уровнем браться за свои классы? К тому же в чем смысл вашего класса, который лишь выхывает метод Print класса lcd ?
.
Lictor, за использование глобальных объектов в классах студентов бьют по рукам.
Не, там глобального объекта нет. В классе у него уже свой массив определен в функции. Правильнее его тока через константную ссылку передавать.
Lictor, за использование глобальных объектов в классах студентов бьют по рукам.
Евгений, а где у него глобальный обьект в его классе? Массив Text - локальный массив метода, он лишь случайно имеет то же имя, как глобальный.
Да. За такие оценки студенты бют преподов, причем не по рукам а в подворотне.
Евгений, а где у него глобальный обьект в его классе?
В строке 14 используется глобальный объект lcd.
вот что я пытался сделать, может кому-нибудь пригодится...
Зря Вы не послушали советов в посте #1 и (собственно о том же) в посте #3. Вы бы получили поленый навык, а так Вы просто привыкаете к очень плохой практике.
вот что я пытался сделать, может кому-нибудь пригодится...
Всё очень плохо. Передача String по значению в функцию, кучу ненужного кода с substring - зачем?
вот что я пытался сделать, может кому-нибудь пригодится...
никому "это" не пригодится. Что за тяга - только научившись отличать процедуру от метода, уже писать "библиотеки" и предлагать свои "ХУДОжества" другим?
поэтому я решил... барабанная дробь.... написать класс
Зачем нужен класс, когда и без него всё нормально выводится?
Зачем нужен класс, когда и без него всё нормально выводится?
НУ, как Вы не понимаете?!? С классом же классно!
Новый уровень абстракции способен решить любую проблему, за исключением случая избыточной абстракции.
Зачем нужен класс, когда и без него всё нормально выводится?
НУ, как Вы не понимаете?!? С классом же классно!
Помимо того, что это и правда классно, надо же с чего-то начинать. Если я правильно понял, основная претензия искушенной публики к написанному классу это то, что он использует объект из другого класса вместо того, что бы унаследовать его?
Я тут пробую разобраться с наследованием 1 2 3
Но пока получается не очень.
Я что-то совсем запутался, подскажите, что делать дальше?
Вы что-нибудь прочиталт про наследование? Похоже, нет, и пытаетесь методом тыка, так?
У Вас принципиально неверный подход. Вот смотрите, я на базе Вашего кода, приведу несколько строк, показывающих идею
Т.е. класс - это новый тип данных. Коль скоро он пронаследован, то этот тип умеет ВСЁ, что умел родитедль + своё. И переменную надо объявлять этого нового типа.
Я не разбирался что и как Вы там печатаете, просто поправил на использование класса, а не глобального lcd.