WiFi Slot и Текстовый дисплей 16*2(тройка) по шине I2C не дружат.

Тема в разделе "ESP8266, ESP32", создана пользователем otis, 6 июн 2019.

  1. otis

    otis Гик

    Добрый день. В наличии WIFI slot и текстовый дисплей. Взял пример из WIKI Амперка загружаю в слот подключаю к клемам что указал на рисунке. Запускаю программу и нечего на экране нет.
    Обесточиваем платку. Убираю текстовый дисплей. Ставлю на это же место Светодиодную матрицу 8*8 Тройка . Загружаю скетч из WIKI для светодиодной матрицы и все работает.
    Вывод для меня как для начинающего дисплей дохлый. Можно как то без платы опросить дисплей. В наличии есть USB-UART.
     

    Вложения:

  2. ИгорьК

    ИгорьК Гуру

    Даже "продолжающие" не спешат с такими выводами.
     
    Daniil нравится это.
  3. parovoZZ

    parovoZZ Гуру

    У любого устройства с шиной I2C есть адрес. Устройство не будет отвечать на запросы с чужим адресом.
     
  4. ИгорьК

    ИгорьК Гуру

    Текстовый дисплей работает с I2C, матрица 8х8 работает с SPI.
    Никакой связи и логики между вашей проверкой нет.
    Проверка подтверждает лишь то, что wifi слот - рабочий.
    В остальном, может быть туча причин - не та библиотека, не тот адрес, не правильное соединение, etc.
     
  5. otis

    otis Гик

    " Мы добавили драйвер управления матрицей. Теперь модуль управляется по скоростному интерфейсу I²C и занимает всего два пина микроконтроллера". Это из WIKI АМПЕРКИ. Где прочитал о там и говорю.
     
  6. ИгорьК

    ИгорьК Гуру

    Похоже, исходите из очень неправильного предположения, что, написав на форуме лишь в общих чертах о своей проблеме, вы получите стадо желающих в ней ковыряться.

    То есть, кто-то должен лопатить все эти игрушки и засыпать вас вопросами.

    Нет. Рисуйте схемы, рассказывайте подробно что происходит, что вы делали.

    Особенно проблеммны модули от амперки, как это ни странно. Никто из продвинутых юзверей, а тем более - профи с ними дела не имеет.

    Как и не имеет хрустального шара.

    Я и не представлял, что 8х8 имеет i2c.

    Тогда могу подтвердить лишь то, что сказал @parovoZZ .
     
    Daniil нравится это.
  7. otis

    otis Гик

    Код (C++):
    // библиотека для работы с дисплеем
    #include <TroykaTextLCD.h>
    // создаем объект для работы с дисплеем
    TroykaTextLCD lcd;
    void setup() {
      // устанавливаем количество столбцов и строк экрана
      lcd.begin(16, 2);
      // устанавливаем контрастность в диапазоне от 0 до 63
      lcd.setContrast(27);
      // устанавливаем яркость в диапазоне от 0 до 255
      lcd.setBrightness(255);
      // устанавливаем курсор в колонку 0, строку 0
      lcd.setCursor(0, 0);
      // печатаем первую строку
      lcd.print("Hello, world!");
      // устанавливаем курсор в колонку 0, строку 1
      // на самом деле это вторая строка, т.к. нумерация начинается с нуля
      lcd.setCursor(0, 1);
      // печатаем вторую строку
      lcd.print("Do It Yourself");
    }
    void loop() {
    }
    Адрес модуля: 0x3E но в примере

    я вообще не нашел где и кто спрашивает адрес экрана.Это может не работать если я это делаю на слот а пример в вики для UNO и Тройка Шелд
     
    Последнее редактирование: 6 июн 2019
  8. ИгорьК

    ИгорьК Гуру

  9. otis

    otis Гик

    ИгорьК добрый день тезка. Про матрицу 8х8. Я просто повторил проект из вики. Опишу подробно что делал с матрицей.
    Взял вот этот скетч.
    Код (C++):
    // библиотека для работы I²C
    #include "Wire.h"
    // библиотека для работы со светодиодной матрицей
    #include "TroykaLedMatrix.h"

    // создаём объект matrix для работы с матрицей
    TroykaLedMatrix matrix;

    void setup()
    {
    // начало работы с матрицей
    matrix.begin();
    // очищаем матрицу
    matrix.clear();
    }

    void loop()
    {
    // заполняем матрицу случайным пикселем
    matrix.drawPixel(random(8),random(8));
    // очищаем на матрице случайный пиксель
    matrix.clearPixel(random(8),random(8));
    // ждём 50 мс
    delay(50);
    }
    Записал в WIFI слот. Потом вставил матрицу в модуль туда где показал на рисунке. Включил питание Все работает.
    Затем отключил питание. Убрал 8х8 матрицу. Подключил к ПК и залил скетч тот что показал товарищу выше.
    Прошил. отключил питание. Поставил дисплей. Подключаю питание . Есть подсветка экрана. а вот больше нечего.
     
  10. otis

    otis Гик

    спасибо. отредактирую и исправлю
     
  11. ИгорьК

    ИгорьК Гуру

    Вот это разговор!
    Смотри что надо сделать. Есть библиотека Wire.h: https://www.arduino.cc/en/Reference/Wire - она применяется в вашем скетче.

    В этой библиотеке есть функция begin(...) - https://www.arduino.cc/en/Reference/WireBegin
    Именно при ее вызове и указывается адрес. Он не может быть не указан.

    А где его указывают, если его глазом не видно? Конечно в амперковской библиотеке работы с дисплеем.
    Находите ее, открываете, и ищете begin(...) - смотрите что там.
     
  12. ИгорьК

    ИгорьК Гуру

    Кстати, у вас же модуль на ESP-8266 ESP-12.
    А Амперка сделала библиотеки лишь для Ардуино и Espruino.
    Ардуиновские библиотеки для модуля ESP-8266 подходят не всегда. Не исключаю, что дело может быть в этом.
     
  13. otis

    otis Гик

    ИгорьК я вас правильно понимаю что открываю библиотеку "TroykaTextLCD.h" для модуля и смотрю там begin
     
  14. ИгорьК

    ИгорьК Гуру

    Правильно (если эта библиотека для этого модуля)
     
  15. otis

    otis Гик

    Печально. Самому мне с библиотекой не разобраться. Но по пробуем
     
  16. ИгорьК

    ИгорьК Гуру

  17. ИгорьК

    ИгорьК Гуру

    Вы что там копируете и откуда?
     
  18. ИгорьК

    ИгорьК Гуру

    upload_2019-6-6_15-46-17.png


    Здесь и адрес просматривается, кстати.
     
  19. otis

    otis Гик

    Вот эта страница http://wiki.amperka.ru/products:troyka-display-lcd-text-16x2 и коды с этой стрнице
    Код (C++):
    // библиотека для работы с дисплеем
    #include <TroykaTextLCD.h>
    // создаем объект для работы с дисплеем
    TroykaTextLCD lcd;
    // создаём массивы иконок
    byte heart[8] = {
      0b00000,
      0b01010,
      0b11111,
      0b11111,
      0b11111,
      0b01110,
      0b00100,
      0b00000
    };
    byte smiley[8] = {
      0b00000,
      0b00000,
      0b01010,
      0b00000,
      0b00000,
      0b10001,
      0b01110,
      0b00000
    };
    byte frownie[8] = {
      0b00000,
      0b00000,
      0b01010,
      0b00000,
      0b00000,
      0b00000,
      0b01110,
      0b10001
    };
    byte armsDown[8] = {
      0b00100,
      0b01010,
      0b00100,
      0b00100,
      0b01110,
      0b10101,
      0b00100,
      0b01010
    };
    byte armsUp[8] = {
      0b00100,
      0b01010,
      0b00100,
      0b10101,
      0b01110,
      0b00100,
      0b00100,
      0b01010
    };
    void setup() {
      // устанавливаем количество столбцов и строк экрана
      lcd.begin(16, 2);
      // устанавливаем контрастность в диапазоне от 0 до 63
      lcd.setContrast(27);
      // устанавливаем яркость в диапазоне от 0 до 255
      lcd.setBrightness(255);
      // создаём новые символы в ячейках памяти
      lcd.createChar(0, heart);
      lcd.createChar(1, smiley);
      lcd.createChar(2, frownie);
      lcd.createChar(3, armsDown);
      lcd.createChar(4, armsUp);
      // устанавливаем курсор в колонку 0, строку 0
      lcd.setCursor(0, 0);
      // печатаем первую строку
      lcd.print("I ");
      // печатаем символ из нулевой ячейки
      lcd.write(0);
      lcd.print(" Arduino! ");
      // печатаем символ из первой ячейки
      lcd.write(1);
      // устанавливаем курсор на вторую строку и четвёртый символ
      lcd.setCursor(4, 1);
    }
    void loop() {
      // устанавливаем курсор на вторую строку и четвёртый символ
      lcd.setCursor(4, 1);
      // выводим символ из третьей ячейки
      lcd.write(3);
      // ждём пол секунды
      delay(500);
      // устанавливаем курсор на вторую строку и четвёртый символ
      lcd.setCursor(4, 1);
      // выводим символ из четвёртой ячейки
      lcd.write(4);
      // ждём пол секунды
      delay(500);
    }
    Главное то что как кой бы не хотел загрузить толку ноль
     
  20. ИгорьК

    ИгорьК Гуру

    О как, специально под этот модуль и под этот дисплей.
    И с адресом там все в порядке:

    upload_2019-6-6_16-7-3.png

    И вставить его по-другому сложно.

    Но:

    upload_2019-6-6_16-8-57.png

    А у вас - esp-8266, не так ли?
    Не все что работает с ардуино - работает с esp-8266, к сожалению.
     

    Вложения: