lcd1602

Тема в разделе "Arduino & Shields", создана пользователем EchoES, 23 авг 2017.

Метки:
  1. Obaru

    Obaru Нуб

    Посмотрел. Ничего подобного не нашел. Вот все что было внутри:
    Код (C++):
    #ifndef FDB_LIQUID_CRYSTAL_I2C_H
    #define FDB_LIQUID_CRYSTAL_I2C_H

    #include <inttypes.h>
    #include <Print.h>

    // commands
    #define LCD_CLEARDISPLAY 0x01
    #define LCD_RETURNHOME 0x02
    #define LCD_ENTRYMODESET 0x04
    #define LCD_DISPLAYCONTROL 0x08
    #define LCD_CURSORSHIFT 0x10
    #define LCD_FUNCTIONSET 0x20
    #define LCD_SETCGRAMADDR 0x40
    #define LCD_SETDDRAMADDR 0x80

    // flags for display entry mode
    #define LCD_ENTRYRIGHT 0x00
    #define LCD_ENTRYLEFT 0x02
    #define LCD_ENTRYSHIFTINCREMENT 0x01
    #define LCD_ENTRYSHIFTDECREMENT 0x00

    // flags for display on/off control
    #define LCD_DISPLAYON 0x04
    #define LCD_DISPLAYOFF 0x00
    #define LCD_CURSORON 0x02
    #define LCD_CURSOROFF 0x00
    #define LCD_BLINKON 0x01
    #define LCD_BLINKOFF 0x00

    // flags for display/cursor shift
    #define LCD_DISPLAYMOVE 0x08
    #define LCD_CURSORMOVE 0x00
    #define LCD_MOVERIGHT 0x04
    #define LCD_MOVELEFT 0x00

    // flags for function set
    #define LCD_8BITMODE 0x10
    #define LCD_4BITMODE 0x00
    #define LCD_2LINE 0x08
    #define LCD_1LINE 0x00
    #define LCD_5x10DOTS 0x04
    #define LCD_5x8DOTS 0x00

    // flags for backlight control
    #define LCD_BACKLIGHT 0x08
    #define LCD_NOBACKLIGHT 0x00

    #define En B00000100  // Enable bit
    #define Rw B00000010  // Read/Write bit
    #define Rs B00000001  // Register select bit

    /**
    * This is the driver for the Liquid Crystal LCD displays that use the I2C bus.
    *
    * After creating an instance of this class, first call begin() before anything else.
    * The backlight is on by default, since that is the most likely operating mode in
    * most cases.
    */

    class LiquidCrystal_I2C : public Print {
    public:
        /**
         * Constructor
         *
         * @param lcd_addr    I2C slave address of the LCD display. Most likely printed on the
         *                    LCD circuit board, or look in the supplied LCD documentation.
         * @param lcd_cols    Number of columns your LCD display has.
         * @param lcd_rows    Number of rows your LCD display has.
         * @param charsize    The size in dots that the display has, use LCD_5x10DOTS or LCD_5x8DOTS.
         */

        LiquidCrystal_I2C(uint8_t lcd_addr, uint8_t lcd_cols, uint8_t lcd_rows, uint8_t charsize = LCD_5x8DOTS);

        /**
         * Set the LCD display in the correct begin state, must be called before anything else is done.
         */

        void begin();

         /**
          * Remove all the characters currently shown. Next print/write operation will start
          * from the first position on LCD display.
          */

        void clear();

        /**
         * Next print/write operation will will start from the first position on the LCD display.
         */

        void home();

         /**
          * Do not show any characters on the LCD display. Backlight state will remain unchanged.
          * Also all characters written on the display will return, when the display in enabled again.
          */

        void noDisplay();

        /**
         * Show the characters on the LCD display, this is the normal behaviour. This method should
         * only be used after noDisplay() has been used.
         */

        void display();

        /**
         * Do not blink the cursor indicator.
         */

        void noBlink();

        /**
         * Start blinking the cursor indicator.
         */

        void blink();

        /**
         * Do not show a cursor indicator.
         */

        void noCursor();

        /**
          * Show a cursor indicator, cursor can blink on not blink. Use the
         * methods blink() and noBlink() for changing cursor blink.
         */

        void cursor();

        void scrollDisplayLeft();
        void scrollDisplayRight();
        void printLeft();
        void printRight();
        void leftToRight();
        void rightToLeft();
        void shiftIncrement();
        void shiftDecrement();
        void noBacklight();
        void backlight();
        bool getBacklight();
        void autoscroll();
        void noAutoscroll();
        void createChar(uint8_t, uint8_t[]);
        void setCursor(uint8_t, uint8_t);
        virtual size_t write(uint8_t);
        void command(uint8_t);

        inline void blink_on() { blink(); }
        inline void blink_off() { noBlink(); }
        inline void cursor_on() { cursor(); }
        inline void cursor_off() { noCursor(); }

    // Compatibility API function aliases
        void setBacklight(uint8_t new_val);                // alias for backlight() and nobacklight()
        void load_custom_character(uint8_t char_num, uint8_t *rows);    // alias for createChar()
        void printstr(const char[]);

    private:
        void send(uint8_t, uint8_t);
        void write4bits(uint8_t);
        void expanderWrite(uint8_t);
        void pulseEnable(uint8_t);
        uint8_t _addr;
        uint8_t _displayfunction;
        uint8_t _displaycontrol;
        uint8_t _displaymode;
        uint8_t _cols;
        uint8_t _rows;
        uint8_t _charsize;
        uint8_t _backlightval;
    };

    #endif // FDB_LIQUID_CRYSTAL_I2C_H
     
  2. DIYMan

    DIYMan Guest

  3. Obaru

    Obaru Нуб

  4. vvr

    vvr Инженерище

    на разные версии IDE пришлось поставить разные библиотеки.

    P.S.: До этого баловался с ним, и все работало.

    версию поменяли ?
     
  5. Obaru

    Obaru Нуб

    Нет, не менял.
     
  6. ZAZ-965

    ZAZ-965 Гуру

    А вот так?
    Код (C++):
    #include <LiquidCrystal_I2C.h>
    #include <Wire.h>

    LiquidCrystal_I2C lcd(0x27,16,2);

    void setup()
    {
    lcd.init(); // lcd.begin(16, 2);
    lcd.backlight();
    lcd.print("ha ha ha");
    }

    void loop() {
      }
     
    arkadyf и Obaru нравится это.
  7. Obaru

    Obaru Нуб

    Большое вам спасибо! Все заработало!
     
  8. ZAZ-965

    ZAZ-965 Гуру

    Можете попробовать еще один эксперимент
    Код (C++):
    #include <LiquidCrystal_I2C.h>
    #include <Wire.h>

    LiquidCrystal_I2C lcd(0x27,16,2);

    void setup()
    {
    Wire.begin(); //по моему автор библиотеки увлекся ООП
    lcd.begin(16, 2);
    lcd.backlight();
    lcd.print("ha ha ha");
    }

    void loop() {
      }
     
    Максим B, arkadyf и Obaru нравится это.
  9. Obaru

    Obaru Нуб

    Это тоже работает.
     
  10. DIYMan

    DIYMan Guest

    Короче, библиотека, как обычно - с чудесами :) Рад, что разобрались ;)
     
    Obaru нравится это.
  11. DIYMan

    DIYMan Guest

    Цитата из заголовочного файла той библиотеки, ссылку на которую я привёл:
    Код (C++):
        /**
         * Set the LCD display in the correct begin state, must be called before anything else is done.
         */

        void begin();
    В секции public класса.
     
  12. santygo

    santygo Нуб

    Криво работает дисплей lcd1602a. Залил скетч для dht11 - выводит хрен пойми что. Пробывал и последний Arduino Ide,и 1.5.5-r2,и 1.0.5. Видео с проблемой youtu.be/Qqpw_1N_4p0
     
  13. Airbus

    Airbus Радиохулиган Модератор

  14. santygo

    santygo Нуб

    У меня i2c соединение,а там напрямую
     
  15. santygo

    santygo Нуб

    А я паял контакты с паяльной кислотой,проходился напильником. Из за этого могут быть эти каракули?
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Ищите звоните тестером.Проверьте правильность прдключения scl sda отмойте флюс проверьте библиотеку попробуйте другую.Напильником то зачем?Могли дорожку повредить посмотрите внимательно
     
  17. Airbus

    Airbus Радиохулиган Модератор

    Попробуйте вывести просто текст по i2c работает?Тогда ищем косяк в dht
     
  18. santygo

    santygo Нуб

    Спиртом оттер все контакты,заработало. Спасибо за помощь.
     

    Вложения:

  19. Airbus

    Airbus Радиохулиган Модератор

    Ставьте лайки and Look sharp!
     
    santygo нравится это.
  20. Проблема с контрастностью. Написал программу для экрана, все работало , контрастность была замечательной. После принес на макетной плате с Ардуино экран к другу. При подключении у друга еле видно буквы, проверили контакты — все норм. Проблема в экране. Контакт контрастности подключаю напрямую к GND. Может быть проблема что нес через мороз.. Помогите, пожалуйста (((