Здравствуйте друзья!
Сегодня у меня геймерская тема.
И я раcскажу об этом устройстве, как оно работает и как его сделать своими руками.
Я обычный 48 процентный рак:) в игре World of Tanks, который поднял свою статистику на 3 процента благодаря этому простому устройству.
В процессе игры в 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 разъем.
В принципе на этом можно было и закончить, но я покажу еще, как сделать кнопку более удобной для использования.
Для этого просверлите отверстие в двух деталях такого диаметра, чтобы кнопка свободно помещалась внутри отверстия.
В одной детали сделайте пропил, чтобы в него можно было поместить провод. И при необходимости расширьте отверстие ножом или стамеской или круглым напильником, чтобы во внутрь поместилась кнопка.
Склейте эти две детали и вклейте во внутрь кнопку.
Когда клей подсохнет приклейте последнюю деталь, и при желании зашлифуйте углы.
Теперь устройство готово к использованию, осталось подключить его к компьютеру и протестировать в любом текстовом редакторе или сразу же в игре World of Tanks.
Не забудьте включить русскую раскладку клавиатуры!
Видео версия проекта "Кнопка Лентяйка для World of Tanks на базе Digispark ATtiny 85"