lcd1602

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

Метки:
  1. koteika

    koteika Гик

    Контрастность же надо через переменный резистр подключать.. Крутишь его и настраиваешь контраст.
     
  2. koteika

    koteika Гик

    Вот картинка
     

    Вложения:

  3. Так то да, но он не обязателен. Для максимальной контрастности можно подключить чисто к минусу. Повторяю— он работал
     
  4. ostrov

    ostrov Гуру

    Питание изменилось вот и контрастность ушла. Все правильно написали, ее надо регулировать резистором.
     
    arkadyf нравится это.
  5. Если бы! Подключал я через переменный резистор, все также, и крутил я по всякому. Повторяю проблема в экране! Вопрос — Может у кого была такая проблема, может ее кто смог решить?
     
  6. Vvlad1973

    Vvlad1973 Нуб

    Напряжение замерьте, вероятно сильно отличается от изначального
     
  7. Ну если человек так уверен, что проблема в экране, зачем переубеждать :)
     
  8. DetSimen

    DetSimen Guest

    Пропробовать подключить все по новой, внимательно, не предлагать?
    Ну, значить у тебя на морозе все жидкие кристалы в ём замерзли. Необратимо.
     
  9. ostrov

    ostrov Гуру

    Жидкие стали твердыми наконец то. ))
     
  10. santygo

    santygo Нуб

    Не работает. Соединение по I2C. Раньше писал статью - после промывки спиртом заработало. Сейчас даже I2C Scanner не видит. До того был 0x3F.
     
  11. vasdor

    vasdor Нерд

    Может, сломался?
     
  12. arssev1

    arssev1 Гик

    Очень неграмотно задан вопрос, непонятно зачем вообще было мыть спиртом. Какая статья? Как мыли спиртом (погружали или просто протёрли), каким спиртом, пили ли вы его, прежде чем это написать? И непонятно ещё по поводу адреса на I2C шине - вы ждали его смены после промывки спиртом?
     
    Последнее редактирование: 30 янв 2018
    vasdor нравится это.
  13. ArtemKomsa

    ArtemKomsa Нуб

    Код (C++):
    #include "DHT_NEW.h"
    #include <LiquidCrystal.h>
    LiquidCrystal _lcd1(2, 3, 4, 5, 6, 7);
    int _dispTempLength1=0;
    boolean _isNeedClearDisp1;

    DHT _dht1;

    int _PWDC = 0;
    String _gtv1;
    String _gtv2;
    int _disp1oldLength = 0;
    unsigned long _dht1LRT = 0UL;
    unsigned long _dht1Tti = 0UL;
    void setup()
    {
    TCCR2A = 0x00;
    TCCR2B =  0x07;
    TIMSK2=0x01;
    TCNT2=100;
    analogReference(EXTERNAL);
    _lcd1.begin(16, 2);
    _dht1.setup(8);
    _dht1LRT = millis();
    _dht1Tti = millis();
    }
    void loop()
    {if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
    _PWDC = 0;





    //Плата:1
    if(_isTimer(_dht1Tti, 2000)) {
    if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
    _dht1.readSensor();
    _dht1LRT = millis();
    _dht1Tti = millis();
    }
    }
    _gtv2 = ((String("Humidity=")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String("%")));
    _gtv1 = ((String("Temp=")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String("C")));
    if (1) {
    _dispTempLength1 = ((((_gtv1) + (_gtv2)))).length();
    if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
    _disp1oldLength = _dispTempLength1;
    _lcd1.setCursor(int((16 - _dispTempLength1)/2), 1);
    _lcd1.print((((_gtv1) + (_gtv2))));
    } else {
    if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
    }




    }
    String  _floatToStringWitRaz(float value, int raz)
    {
      return String(value,raz);
    }
    bool _isTimer(unsigned long startTime, unsigned long period )
      {
      unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
      }

    ISR(TIMER2_OVF_vect)
    { TCNT2=100;
    if(_PWDC >= 1000){asm volatile ("jmp 0x0000");}else{_PWDC = _PWDC+1;};
    }
    так вот как и писал, нжуно подправить, чтобы температура была на одной строке, а влажность на другой(сам ещё новичок и ничего не знаю), так вот вроде нашёл место, которое отвечает за положение симовлов на экране
    и еще как убрать знаки после точки?(например температура 28.00, как убрать точку и 2 нуля?)
    Код (C++):
    //Плата:1
    if(_isTimer(_dht1Tti, 2000)) {
    if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
    _dht1.readSensor();
    _dht1LRT = millis();
    _dht1Tti = millis();
    }
    }
    _gtv2 = ((String("Humidity=")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String("%")));
    _gtv1 = ((String("Temp=")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String("C")));
    if (1) {
    _dispTempLength1 = ((((_gtv1) + (_gtv2)))).length();
    if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
    _disp1oldLength = _dispTempLength1;
    _lcd1.setCursor(int((16 - _dispTempLength1)/2), 1);
    _lcd1.print((((_gtv1) + (_gtv2))));
    } else {
    if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
    }
    IMG_20180215_182705.jpg
     
  14. DetSimen

    DetSimen Guest

    госспади, где ты такой код украл?

    Код (C++):
    _lcd1.setCursor(0,0);
    _lcd1.print("Temp="); _lcd1.print(int(_dht1.temperature)); _lcd1.print('C');
    _lcd1.setCursor(0,1);
    _lcd1.print("Hum ="); _lcd1.print(int(_dht1.humidity)); _lcd1.print('%');
     
     
  15. Airbus

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

    Там же есть примеры в любой Ардуинье-смотри и пользуйся.Как то так
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(8, 9, 4, 5, 6, 7 );

    #include "DHT.h"
    #define DHTPIN 2     // пин датчика
    //раскоментить нужный датчик
    #define DHTTYPE DHT11   // DHT 11
    //#define DHTTYPE DHT22   // DHT 22  (AM2302)
    //#define DHTTYPE DHT21   // DHT 21 (AM2301)

    DHT dht(DHTPIN, DHTTYPE);
    void setup() {
       // set up the LCD's number of columns and rows:
      lcd.begin(16, 2);
      Serial.begin(9600);
      Serial.println("DHTxx test!");
      dht.begin();
                 }
    void loop()
    {
      // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      // check if returns are valid, if they are NaN (not a number) then something went wrong!
      if (isnan(t) || isnan(h)) {
        Serial.println("Failed to read from DHT");
                                    }
      else {
        lcd.setCursor(0, 0);             //первый символ первая строка считаем с 0 а не с 1!!!!!
        lcd.print("Hum:          %");
        lcd.setCursor(11, 0);          //12 символ первая строка считаем с 0 а не с 1!!!!!
        lcd.print(h);
        lcd.setCursor(0, 1);            //первый символ вторая строка считаем с 0 а не с 1!!!!!
        lcd.print("temp:         C");
        lcd.setCursor(11, 1);          //12 символ вторая строка считаем с 0 а не с 1!!!!!
        lcd.print(t);
        delay(200);
      }
    }
     
    Последнее редактирование: 15 фев 2018
  16. glaviznin

    glaviznin Нерд

    Всем привет. Я вот полный новичок.
    И у меня не получается даже хелло ворлд показать.
    Вообще не понятно работает или нет экран.
    Светится и всё.
    Как можно проверить?
     
  17. DIYMan

    DIYMan Guest


    Какой экран? Как подключен? Какая библиотека? Где код скетча? Секретно всё.
     
  18. glaviznin

    glaviznin Нерд

    Все как в этой теме.
    У меня вопрос, как проверить работает экран впринципи или нет потому как конвертор IIC/I2C припаен под углом(китайцы) .
    На ардуино не грешу, потому как на двух пробовал уно и нано.
     
  19. DIYMan

    DIYMan Guest

    Мой ответ номер 4 видели? Смотрели, как в вашей библиотеке с этим дело обстоит?
     
  20. glaviznin

    glaviznin Нерд

    Я взял библиотеку из поста #8, в ней write возвращает единицу.
    Но я обратил внимание что конструктор не инициализирует параметр charsize.
    пробовал по разному(там две константы), пробовал обе. Пробовал сразу указывать при инициализации.
    2018-02-24 08_41_15-LiquidCrystal_I2C.cpp - Microsoft Visual Studio.png
    Даже библиотеку переименовал. подключил новую(думал вдруг мои изменения не вступают в силу)
    И есть мнение что дисплей не работает, потому как даже нельзя управлять подсветкой.
    Пробовал и при инициализации в конструкторе _backlightval = LCD_NOBACKLIGHT;
    И в скетче выключал.
    Подсветка горит.

    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C_my.h>

    // Set the LCD address to 0x27 for a 16 chars and 2 line display
    LiquidCrystal_I2C lcd(0x27, 16, 2,0);

    void setup()
    {
      // initialize the LCD
      lcd.begin();

      // Turn on the blacklight and print a message.
      lcd.noBacklight();
      lcd.print("Hello, world!");
    }

    void loop()
    {
      // Do nothing here...
    }

    Подключено у меня так.
    Вроде бы все правильно.
    Синий A4-SDL
    Белый А5-SCL

    2018-02-24 09_11_15-20180224_090027.jpg - Средство просмотра фотографий Windows.png