diff --git a/LightDataTransfer.sln b/LightDataTransfer.sln
new file mode 100644
index 0000000..40c2ad7
--- /dev/null
+++ b/LightDataTransfer.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LightDataTransfer", "LightDataTransfer\LightDataTransfer.csproj", "{26F6569B-0003-489E-AEA1-3F7112188B44}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {26F6569B-0003-489E-AEA1-3F7112188B44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {26F6569B-0003-489E-AEA1-3F7112188B44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {26F6569B-0003-489E-AEA1-3F7112188B44}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {26F6569B-0003-489E-AEA1-3F7112188B44}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/LightDataTransfer/LightDataTransfer.csproj b/LightDataTransfer/LightDataTransfer.csproj
new file mode 100644
index 0000000..d0eac1a
--- /dev/null
+++ b/LightDataTransfer/LightDataTransfer.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ net7.0
+ enable
+ ARM64
+ enable
+ Linux
+
+
+
+
+
+
+
+
+
diff --git a/LightDataTransfer/Program.cs b/LightDataTransfer/Program.cs
new file mode 100644
index 0000000..a45c85f
--- /dev/null
+++ b/LightDataTransfer/Program.cs
@@ -0,0 +1,70 @@
+using System.Device.Gpio;
+using System.Device.Gpio.Drivers;
+using MorseSharp;
+using MorseSharp.Converter;
+
+TextMorseConverter converter = new TextMorseConverter(Language.English);
+const int redPin = 17;
+const int greenPin = 27;
+const int bluePin = 22;
+
+// Здесь мы используем SysFsDriver, потому что он быстрее всех остальных
+// https://github.com/dotnet/iot/issues/1490
+using GpioController gpio = new GpioController(PinNumberingScheme.Logical, new SysFsDriver());
+
+gpio.OpenPin(redPin, PinMode.Output);
+gpio.OpenPin(greenPin, PinMode.Output);
+gpio.OpenPin(bluePin, PinMode.Output);
+gpio.Write(redPin, PinValue.High);
+gpio.Write(greenPin, PinValue.High);
+gpio.Write(bluePin, PinValue.High);
+
+var morse = await converter.ConvertTextToMorse("Hello world");
+Console.WriteLine("Morse: " + morse);
+while (true)
+{
+ Console.Write("Enter speed multiplier: ");
+ int speedMultiplier = Convert.ToInt32(Console.ReadLine());
+ Console.Write("Morse: ");
+ for (int i = 0; i < morse.Length; i++)
+ {
+ Console.Write(morse[i]);
+ switch (morse[i])
+ {
+ case '.':
+ gpio.Write(redPin, PinValue.Low);
+ Thread.Sleep(1 * speedMultiplier);
+ if (morse[i + 1] is not ' ' and not '/')
+ {
+ gpio.Write(redPin, PinValue.High);
+ Thread.Sleep(1 * speedMultiplier);
+ }
+ break;
+ case '_':
+ gpio.Write(redPin, PinValue.Low);
+ Thread.Sleep(3 * speedMultiplier);
+ if (morse[i + 1] is not ' ' and not '/')
+ {
+ gpio.Write(redPin, PinValue.High);
+ Thread.Sleep(1 * speedMultiplier);
+ }
+ break;
+ case '/':
+ gpio.Write(redPin, PinValue.High);
+ Thread.Sleep(1 * speedMultiplier);
+ break;
+ case ' ':
+ gpio.Write(redPin, PinValue.High);
+ Thread.Sleep(3 * speedMultiplier);
+ break;
+ default:
+ Console.WriteLine("Unknown morse code: " + morse[i]);
+ break;
+ }
+ }
+ Console.WriteLine();
+}
+
+gpio.ClosePin(redPin);
+gpio.ClosePin(greenPin);
+gpio.ClosePin(bluePin);
\ No newline at end of file
diff --git a/README.md b/README.md
index aaa79d6..67ec191 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,34 @@
# MorseToLed
+Проект который я делал для конкурса от НКБ ВС, нужно было передать информацию через свет с помощью linux устройства (передатчик) и android смартфона (получатель).
+
+Здесь представлена часть проекта для Raspberry Pi, которая передаёт информацию с помощью морзе. Далее планировалось перенести код в библиотеку и написать в ней небольшой преобразователь текста в морзе, а так же обеспечить возможность подключить внешний преобразователь текста в морзе в стиле Dependency Injection.
+
+## Но
+
+На этапе разработки приложения под android, я хотел попробовать Avalonia framework, но он оказался ещё слишком сырым для android, поэтому я перешёл на maui, но и там всё было не так просто. Так же 2-х летнее расставание с Android studio не позволило бы мне написать приложение в оставшееся время.
+
+# Результат
+
+* Этот репозиторий
+* Добавление поддержки русского языка в библиотеку [MorseSharp](https://github.com/p6laris/MorseSharp)
+
+Для откладки этого проекта я нашёл готовое приложение на android [MorseBuddy](https://github.com/anantaraha/morsebuddy) и с его помощью добился скорости стабильного чтения в 65 у.е.
+
+Так же вдохновлялся этим проектом, из которого подчеркнул идею считывания на основе яркости пикселя ([ссылка](https://www.codeproject.com/Articles/46174/Computer-Vision-Decoding-a-Morse-Code-Flashing-LED))
+
+
+
+### Скорость
+
+В коде 1 у.е.равна 1 мс
+
+`В скобочках результат при 65 у.е.`
+* `.` - 1 у.е. (65 мс)
+* `-` - 3 у.е. (195 мс)
+* `меж слов` - 1 у.е. (65 м + два пробела = 195 мс)
+* `пробел` - 1 у.е. (65 м)
+
+# Библиотеки
+
+* [MorseSharp](https://github.com/p6laris/MorseSharp)
\ No newline at end of file
diff --git a/img/demo.jpg b/img/demo.jpg
new file mode 100644
index 0000000..bdd93db
Binary files /dev/null and b/img/demo.jpg differ