Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85

Здравствуйте друзья!

Сегодня у меня геймерская тема.

И я раcскажу об этом устройстве, как оно работает и как его сделать своими руками.

Я обычный 48 процентный рак:) в игре World of Tanks, который поднял свою статистику на 3 процента благодаря этому простому устройству.

Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85

В процессе игры в World of Tanks я заметил такое явление. Если перед боем написать в игровом чате что-то типа “Привет воины! Не спешите сливаться и победа наша!” то игроки играют более обдумано, в результате чего шанс на победу увеличивается. Раньше я просто печатал текст сам, но вскоре мне это надоело, да и иногда я просто забывал это сделать. Поэтому я решил сделать это устройство.

Главной особенностью которого является то, что при каждом нажатии кнопки печатается разный текст, но с одним и тем же смыслом! Благодаря чему, он не воспринимается как спам!

Работает это так:

В программе есть два массива.В первом хранятся варианты приветствия, а во втором обращения. И при нажатии кнопки программа сначала эмитирует нажатие кнопки ENTER, что требуется для открытия окна игрового чата в World of Tanks. Затем выводится содержимое одной из ячеек массива с приветствиями, и содержимое одной из ячеек массива с обращениями. При этом каждая из ячеек массива выбирается рандомно, путем получения случайного числа. И для отправки сообщения программа снова эмитирует нажатие кнопки ENTER.

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

тестирование кнопки в текстовом редакторе Блокнот

Так как в первом массиве имеется 7 ячеек, а во тором 6 ячеек, то в этом случае мы имеем 42 комбинации разных строк. И как результат, вероятность того что следующая строка повторится 1х42. Думаю для такой задачи этого вполне достаточно.

А теперь приступим к сборке устройства.

Для этого понадобится:

Плата Digispark на базе микроконтроллера ATtiny 85,

Кнопка и двух жильный провод (удобной для вас длинны и сечения),

3 куска древесины или ДВП или МДФа (не обязательно!).

набор деталей для сборки

Ниже представлен скетч, залейте его на плату.

Если вы не знаете как залить скетч в Digispark то смотрите по этой ссылке www.kolotushkin.com/Как прошить плату Digispark на базе микроконтроллера ATtiny 85

или по этой www.youtube.com/Как прошить плату Digispark на базе микроконтроллера ATtiny 85


//Начало скетча


#include "DigiKeyboard.h"
const int buttonPin = 1; // переменная для кнопки, назначаем ее на контакт с айди 1
int buttonState = 0; // переменная в которой хранится состояние кнопки, 0 (выключено)

char* privetstvie[] = {"Plfhjdf hfrb! ", "Plfhjdf yfub,fnjhs! ", "Plfhjdf xbnths! ",
                      //Здарова раки! Здарова нагибаторы! Здарова читеры!
                       "Ghbdtn xbnths! ", "Ghbdtn yfub,fnjhs! ", "Ghbdtn djbys! ", "Plfhjdf djbys! "};
                      //Привет читеры! Привет нагибаторы! Привет воины! Здарова воины!

char* prosba[] = {"Yt cgtibnt ckbdfnmcz? lfdfqnt dsbuhftv!", "yt cgtibnt ckbdfnmcz? lfdfqnt dsbuhftv!",
                 //Не спешите сливаться, давайте выиграем! не спешите сливаться, давайте выиграем!
                  "yt cgtibnt ckbdfnmcz? b gj,tlf pf yfvb!", "Yt cgtibnt ckbdfnmcz? b gj,tlf pf yfvb!",
                 //не спешите сливаться, и победа за нами! Не спешите сливаться, и победа за нами!
                  "Yt cgtibnt ckbdfnmcz? b gj,tlf yfif!", "yt cgtibnt ckbdfnmcz? b gj,tlf yfif!"};
                 //Не спешите сливаться, и победа наша! не спешите сливаться, и победа наша!

void setup() {
  pinMode(buttonPin, INPUT); // определяем переменную buttonPin как вход
  DigiKeyboard.delay(1000); // задержка 1 секунда
  DigiKeyboard.sendKeyStroke(0x83);
  DigiKeyboard.sendKeyStroke(0x83);
}

void loop() {
  buttonState = digitalRead(buttonPin); //проверка состояния кнопки
  if (buttonState == HIGH) {
    // если кнопка нажата то выполнить код который содержится в этих фигурных скобках
    int i = random(7);
    DigiKeyboard.println("");
    // создаем переменную i, и получаем для нее случайное число от 0 до 7
    DigiKeyboard.print(privetstvie[i]); // вывести содержимое одной из 7 ячеек массива privetstvie
    i = random(6);// получаем случайное число от 0 до 6
    DigiKeyboard.println(prosba[i]); // вывести содержимое одной из 6 ячеек массива prosba
    delay(1000); // задержка 1 секунда
  }
}


//Конец скетча


Затем припаяйте два конца провода к кнопке, а обратные их концы к контакту Р1 и 5V.

Контакт Р1 выбран не случайно! К нему подпаян встроенный на плате светодиод, и при нажатии на кнопку он будет загораться без внедрения какого либо дополнительного кода в программу. Это послужит индикатором, на тот случай если кнопка начнет заедать, или если вы не до конца вставите плату в USB разъем.

готовое устройство на базе Digispark ATtiny 85

В принципе на этом можно было и закончить, но я покажу еще, как сделать кнопку более удобной для использования.

Для этого просверлите отверстие в двух деталях такого диаметра, чтобы кнопка свободно помещалась внутри отверстия.

просверлить отверстия в деталях

В одной детали сделайте пропил, чтобы в него можно было поместить провод. И при необходимости расширьте отверстие ножом или стамеской или круглым напильником, чтобы во внутрь поместилась кнопка.

сделать пропил

Склейте эти две детали и вклейте во внутрь кнопку.

вклеить кнопку

Когда клей подсохнет приклейте последнюю деталь, и при желании зашлифуйте углы.

Теперь устройство готово к использованию, осталось подключить его к компьютеру и протестировать в любом текстовом редакторе или сразу же в игре World of Tanks.

Не забудьте включить русскую раскладку клавиатуры!

Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85

Видео версия проекта "Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85"


Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85