Ничего не найдено :(
    В гостях у Самоделкина! » Темы » Советы » Arduino управляет дисплеем от автомагнитолы (драйвер LC75829)

    Arduino управляет дисплеем от автомагнитолы (драйвер LC75829)



    Автор Arduino Project Hub под ником pdio рассказывает, как управлять дисплеем от автомагнитолы при условии, что на одной плате с ним установлен драйвер LC75829. Лицензия - GPL версии 3 или больше по вашему выбору.

    Чтобы разобраться, какие куда подавать сигналы, мастер скачивает даташит на микросхему с сайта производителя. Хотя в его случае обозначение на чипе не содержит суффикса PE или PW, даташит подошёл. Затем находит цоколёвку 20-выводного разъёма на плате, и определяет, к каким его ножкам подключены входы микросхемы: DI, CE, CL, VDD и GND. На этот же разъём же выведены линии с "джека" для подключения внешних источников, USB-разъёма, фотоприёмника, но они мастера пока не интересуют. Ему нужны только выводы чипа, управляющего дисплеем.

    Способ подключения дисплея в зависимости от типа Arduino мастер указывает в следующем фрагменте второго, отлаженного скетча:

    // UNO
    // pin8 PB0
    // pin9 PB1
    // pin10 PB2
    
    // MEGA
    // pin8 PH5
    // pin9 PH6
    // pin10 PB4


    Ну а первый, неоптимальный, но реально заработавший скетч выглядит так:

    byte data[321] = {1,0,0,0,0,0,1,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1, 0,0,0,0, 0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,     1,0,0,0,0,0,1,0, 1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,     1,0,0,0,0,0,1,0, 1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1, 0,0,0,0,0,0,0,0, 0,0,0, 0,0,0, 0,0, 0,0,0, 0,0,0, 1,0,          1,0,0,0,0,0,1,0, 1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1, 0,0,0, 0,0,0, 0,0, 0,0,0, 0,0,0, 1,1};
    void PrintData(){
     tick = 1;
     comehere:
     if(data[tick-1] == 0){
       PORTB = PORTB & B11111011; // DATA DOWN
       PORTB = PORTB | B00000001; // CLK UP
     }
     else{
       PORTB = PORTB | B00000100; // DATA UP
       PORTB = PORTB | B00000001; // CLK UP
     }
     delayMicroseconds(1);
     if(tick == 8 || tick == 88 || tick == 168 || tick == 248){
       PORTB = PORTB | B00000010; // CE UP
       delayMicroseconds(1);
     }
     if(tick == 80 || tick == 160 || tick == 240){
       PORTB = PORTB & B11111101; // CE DOWN
       delayMicroseconds(1);
     }
     PORTB = PORTB & B11111110; // CLK DOWN
     if(tick < 320){
       tick++;
       goto comehere;
     }
     PORTB = PORTB & B11111101; // CE DOWN
     delay(10);
    }


    Выводы Arduino, к которым подключается драйвер дисплея, при этом определены так (для Uno):

    // pin8 PB0
    // pin9 PB1
    // pin10 PB2
    #define CLK 8
    #define CE 9
    #define DATA 10


    Второй вариант скетча выложен сюда. В нём есть и шрифт, и возможность выводить этим шрифтом текст. Но следует учитывать, что даже если на имеющейся у вас плате с дисплеем от автомагнитолы установлен такой же драйвер, у дисплея сегменты могут быть расположены совсем по-другому. А значит, придётся сначала определить экспериментально, как именно они расположены, и поправить скетч. А затем - реализовать в нём те дополнительные функции, которые нужны вам. Такой дисплей вместе с драйвером может стать частью разнообразных самоделок на Arduino, Raspberry Pi и иных платформах: часов, метеостанций, термостатов, игр, кодовых замков, и др.

    Источник (Source)

    Часы, настраиваемые энкодером

    Оповещение о стуке в дверь - на экране компьютера

    Добавить комментарий

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

    Последние комментарии

    Все комментарии