- PVSM.RU - https://www.pvsm.ru -
Как известно, люди делятся на две категории: на тех, кто переключает раскладку с помощью Ctrl+Shift и тех, кто использует Alt+Shift. А еще есть счастливчики, кому это не нужно – те, у кого только одна раскладка (как правило, английская). Остальные завидуют им и мучаются с двумя, а то и с тремя раскладками: английский, русский, украинский (белорусский, казахский и т.д.).
Проблема в том, что, переключая язык, приходится постоянно смотреть на эту маленькую иконку языка. Есть и другие варианты:
А давайте сделаем на основе Arduino кубик с LED подсветкой, который будет стоять на столе и менять свой цвет в зависимости от раскладки. Каждый язык – разный цвет. Например, английский – зеленый, русский – красный, украинский – синий.
Сразу говорю, это не сложно сделать даже не электронщикам.
Нужно:
В качестве “кубика” можно использовать что угодно. Я купил часы-будильник с Aliexpress.com в виде кубика. Вот так выглядит сам куб:
Понравились размеры, цена и дополнительное использование в виде датчика температуры (сами часы в кубике не точные, потому бесполезные). На том же Aliexpress.com можно найти и другие варианты:
Учитывая сегодняшние возможности, можно и на 3D принтере что-то напечатать. Да и просто использовать рамку с фото.
Тут все просто, читаем в цикле COM-порт. При чтении значения 1 – включаем зеленый светодиод, остальные гасим. При получении 2 — включаем красный светодиод, остальные гасим. При получении 3 — включаем синий светодиод, остальные гасим.
int inByte = 0;
int LED_R = 5;//красный пин
int LED_G = 6;//зеленый пин
int LED_B = 9;//синий пин
int RV = 255; // яркость
int GV = 255;// яркость
int BV = 255;// яркость
void setup() {
Serial.begin(9600);
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
delay(100);
inByte = Serial.read();
if (inByte == '2') { // RU
analogWrite(LED_R, RV);
analogWrite(LED_G, 0);
analogWrite(LED_B, 0);
} else if (inByte == '1') { // EN
analogWrite(LED_R, 0);
analogWrite(LED_G, GV);
analogWrite(LED_B, 0);
} else if (inByte == '3') { //UA
analogWrite(LED_R, 0);
analogWrite(LED_G, 0);
analogWrite(LED_B, BV);
}
}
}
Еще проще. Общий пин соединяем с землей (GND). Остальные через резистор 220 Ом с соответствующими пинами, как показано на рисунке.
Устанавливаем в куб, предварительно вырезав отверстие под разъем.
Тут немного сложней. При изменении языка нужно посылать на COM-порт соответствующее значение (1 или 2 или 3).
Для не программистов ниже есть ссылка на программу под Windows, которая это делает. Единственное, в программе нужно указать COM-порт, к которому подключена Arduino. Это не сложно узнать в диспетчере устройств. Программа после запуска сворачивается в трей, но ее нужно добавить в автозапуск при старте Windows.
Программа написана на Delphi, на данный момент не имеет:
Интересно, что в Windows есть некоторая задержка после нажатия комбинации переключения языка. При этом кубик срабатывает быстрее, чем индикатор, что очень удобно. Больше года использую данную систему и уже не могу представить, как без этого работать.
→ Скачать программу [1]
Если пост понравится, доработаю программу, добавив описанный выше недостающий функционал.
Автор: sapient
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/271473
Ссылки в тексте:
[1] Скачать программу: https://drive.google.com/file/d/1L0NcP2W7_Px7L-pKybxPyrKRZh3ka50T/view?usp=sharing
[2] Источник: https://geektimes.ru/post/296763/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.