User Tag List

Показано с 1 по 10 из 91

Тема: Адаптер мыши PS/2 в стандарт мыши Марсианка

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #28

    Регистрация
    27.08.2019
    Адрес
    г. Ростов-на-Дону
    Сообщений
    1,034
    Спасибо Благодарностей отдано 
    467
    Спасибо Благодарностей получено 
    194
    Поблагодарили
    125 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот скетч для ардуино, лапки в скетче описаны:



    Скрытый текст

    /*
    BK-PS2-MARS-Mouse-host by TheGWBV, 29/08/2020, Step 2.
    Free for exUSSR users and all others ;-)
    */


    const int ResetPin = 4; // номер вывода с Reset
    int ResetState = 0; // переменная для чтения состояния Reset


    #include <ps2.h>
    #include <SoftwareSerial.h>




    // Джойстик-шар мыши Марсианки
    #define marsUP 7
    #define marsR 9
    #define marsDn 8
    #define marsL 10
    // Кнопки мыши Марсианки
    #define marsLB 2
    #define marsRB 11
    /*
    *
    Пины для UART/ТЛГ:
    RX is digital pin 1 (connect to TX of other device)
    TX is digital pin 3 (connect to RX of other device)
    */
    SoftwareSerial TLG_soft_Serial(0, 1); // RX, TX


    /*
    Used an arduino sketch to interface with a ps/2 mouse.
    Also uses serial protocol to talk back to the host
    and report what it finds.
    */


    /*
    Pin 13 is the mouse data pin, pin 15 is the clock pin
    Feel free to use whatever pins are convenient.
    */
    PS2 mouse(6, 5); // 6 - clock, 5 - data


    /*
    Initialize the mouse. Reset it, and place it into remote
    mode, so we can get the encoder data on demand.
    */
    void mouse_init()
    {
    mouse.write(0xff); // reset
    mouse.read(); // ack byte
    mouse.read(); // blank */
    mouse.read(); // blank */
    mouse.write(0xf0); // remote mode
    mouse.read(); // ack
    delayMicroseconds(100);
    }


    void setup()
    {
    /*
    Аппаратный UART подключаем к ПЭВМ... с эмулятором БК-шки, и/или прочим софтом для связи по UART
    */
    Serial.begin(9600); while (!Serial); // wait for serial port to connect. Needed for native USB port only
    /* Пины для UART/ТЛГ:
    RX is digital pin 2 (connect to TX of other device)
    TX is digital pin 4 (connect to RX of other device)
    Можно подключать к ТЛГ БК0010 или к псевдо-ТЛГ на БК0011М (для этой модели ТЛГ заводом не предусмотрен!)
    */
    TLG_soft_Serial.begin(9600); // Open software serial communications and wait for port to open


    // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH);


    // BK Marsianka output: 2 - marsLB, 3 - marsRB, 7 - marsUP, 9 - marsR, 8 - marsDn, 10 - marsL.
    // Джойстик-шар мыши Марсианки
    pinMode(marsUP, OUTPUT); digitalWrite(marsUP, HIGH); // Вверх
    pinMode(marsR, OUTPUT); digitalWrite(marsR, HIGH); // Вправо
    pinMode(marsDn, OUTPUT); digitalWrite(marsDn, HIGH); // Вниз
    pinMode(marsL, OUTPUT); digitalWrite(marsL, HIGH); // Влево


    // Кнопки мыши Марсианки
    pinMode(marsLB, OUTPUT); digitalWrite(marsLB, HIGH); // Левая кнопка
    pinMode(marsRB, OUTPUT); digitalWrite(marsRB, HIGH); // Правая кнопка


    mouse_init(); // Инициировать мышь PS/2
    }


    /*
    считываем данные с мышки и выводим в COM-порт
    */
    void loop()
    {




    char mStat;
    char mX;
    char mY;
    uint16_t reg_177714;


    /* запрашиваем данные от мышки */
    mouse.write(0xeb); // команда на чтение данных
    mouse.read(); // игнорируем ack
    mStat = mouse.read();
    mX = mouse.read();
    mY = mouse.read();




    ResetState = digitalRead(ResetPin);




    if (ResetState == LOW)
    {
    Serial.print("\t+Сброс");
    digitalWrite(marsR, HIGH);
    digitalWrite(marsL, HIGH);
    digitalWrite(marsUP, HIGH);
    digitalWrite(marsDn, HIGH);
    //digitalWrite(marsLB, HIGH);
    //digitalWrite(marsRB, HIGH);
    Serial.println();
    }


    else /* ----- */
    { /* ----- */

    // Вправо
    if ( mX > 1 )
    {
    Serial.print("\t+Вправо");
    digitalWrite(marsR, LOW);
    }
    else
    {
    Serial.print("\t-");
    digitalWrite(marsR, HIGH);
    }


    // Влево
    if ( mX < -1 )
    {
    Serial.print("\t+Влево");
    digitalWrite(marsL, LOW);
    }
    else
    {
    Serial.print("\t-");
    digitalWrite(marsL, HIGH);
    }


    // Вверх
    if ( mY > 1 )
    {
    Serial.print("\t+Вверх");
    digitalWrite(marsUP, LOW);
    }
    else
    {
    Serial.print("\t-");
    digitalWrite(marsUP, HIGH);
    }


    // Вниз
    if ( mY < -1 )
    {
    Serial.print("\t+Вниз");
    digitalWrite(marsDn, LOW);
    }
    else
    {
    Serial.print("\t-");
    digitalWrite(marsDn, HIGH);
    }


    /* выводим данные на аппаратный UART */
    Serial.println();
    Serial.print(mStat, BIN);
    Serial.print("\tX=");
    Serial.print(mX, DEC);
    Serial.print("\tY=");
    Serial.print(mY, DEC);
    Serial.println();
    //delay(10);


    // BK TLG UART run over and over: for USB-Com <-[data]-> BK-TLG-UART
    if ( TLG_soft_Serial.available() ) {
    Serial.write(TLG_soft_Serial.read());
    digitalWrite(LED_BUILTIN, HIGH);
    }
    if ( Serial.available() ) {
    TLG_soft_Serial.write(Serial.read());
    }
    } /* ----- */


    if ( mStat & 0x01 )
    {
    //Serial.print("\t+ЛевКн");
    digitalWrite(LED_BUILTIN, LOW);
    digitalWrite(marsLB, LOW);
    }
    else
    {
    digitalWrite(LED_BUILTIN, HIGH);
    digitalWrite(marsLB, HIGH);
    }
    if ( mStat & 0x02 )
    {
    //Serial.print("\t+ПравКн");
    digitalWrite(marsRB, LOW);
    }
    else
    {
    digitalWrite(marsRB, HIGH);
    }



    }
    [свернуть]


    - - - Добавлено - - -

    Может тут кто чего посоветует ?!?
    Последний раз редактировалось electroscat; 01.02.2022 в 14:01.
    Сейчас в коллекции:
    Вектор 06Ц.01(Минск, Волжский, Астрахань, Киров) x4, Вектор 06Ц.02(Кишенев), Электроника 0511 УКНЦ (СЭМЗ) X2, Электроника 0511 УКНЦ (КВАНТ), Агат 7, Агат 9, Поиск-1.03 (VGA), Поиск-1.03 (CGA сток), Электроника БК-0011(10,11M) [3IN1], Электроника БК-0010-01, Львов ПЛ-01, Корвет ПК8010, Партнер 01.01, Спектр-001, БАЙТ(БПО_СВТ), Волна 48, Ленинград 48, Веста ИК-30, Веста ИК-31, БПК Дельта-Микро, Компакт 256(новодел),
    и ... AMD K6-300, Pentium 200 mmx, 386SX-16 ...

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Адаптер PS/2 мыши для Commodore
    от tnt23 в разделе Commodore 16/64/128
    Ответов: 59
    Последнее: 08.02.2016, 20:42
  2. Эмуляция мыши на джойстика
    от Граф Куракин в разделе Поиск
    Ответов: 4
    Последнее: 19.10.2013, 14:07
  3. Помогите опознать стандарт COM-мыши.
    от Alex2 в разделе Устройства ввода
    Ответов: 7
    Последнее: 10.07.2010, 22:47
  4. кнопки мыши в BGE 3.05
    от SaaB в разделе Графика
    Ответов: 8
    Последнее: 04.03.2006, 16:53
  5. Подключение кемпстон мыши
    от Aprisobal в разделе Устройства ввода
    Ответов: 14
    Последнее: 10.02.2005, 15:04

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •