Морзе кодировщик

JiMaC

✩✩✩✩✩✩✩
5 Янв 2020
1
2
Всем доброго времени суток. Я только недавно начал работать на ардуино и решил сделать, на мой взгляд, интересный проект.
Я решил создать передатчик данных с помощью светодиода и азбуки Морзе.

Разделил проект на две части.
Осторожно, зашкаливающее количество говнокода!
Проект лежит на git хабе, доступно по ссылке: https://github.com/Direaper/arduino/blob/master/morze/morze.ino

Видео работы:


Первая часть:
  1. Пользователь вводит текст в com порт
  2. Ардуино парсирует слова по буквам
  3. Переводит код морзе
  4. Отправляет буквы обратно в com порт
  5. Мигает светодиодом слова по буквам согласно коду Морзе
Вторая часть:
  1. Подключить к ардуино датчик освещенности (как пример).
  2. "Ловить" датчиком сигналы от светодиода
  3. Переводить их из кода Морзе и составить полностью слово.
  4. Передать данные по Морзе на разные платформы ардуино
  5. Заменить светодиоды на что-то более удобно и практичное и попробовать передать сигнал на большем расстоянии.
На данном этапе полностью готова первая часть проекта. Ардуино парсит слова, переводит в Морзе и мигает светодиодом.

Для удобства и вынесения управления светодиодом и парсинга был создан класс Morze.
Он имеет пять методов:
  1. dash - Описывает поведение "тире".
  2. point - Описывает поведение "точки"
  3. parsing - Парсирует слова на буквы и выводит в консоль
  4. delayfunc - отдельно реализовал функцию задержки, чтобы потом было удобно ей управлять (пока сделал обычный delay).
  5. alphabethMorze - "Словарь" Морзе. Проверяет введенный в com порт символ по словарю и обращается к функции по индивидуальным правилам
* Я специально оставил переменную BrightLed чтобы в будущем иметь возможность управлять интенсивностью света светодиода.

Код очень сырой, но рабочий. По сути, осталось только довести его до ума и реализовать вторую часть, чем я постараюсь заняться в ближайшее время.

Что хочу реализовать в коде:
  • Хочу внятно добавить кириллицу и нижний регистр. Пока не понимаю как это сделать правильным образом.
  • Чувствую, что со словарь можно вынести на более высокий уровень абстракции и не заморачиваться с кодированием каждого отдельного символа... Получается что символы индивидуальны и программировать их надо отдельно, но не понимаю как. В упор не вижу как это сделать.
  • Нужен совет по второй части проекта. Чем лучше считать данные со светодиода и передать их обратно на ардуино? Подойдет ли датчик освещенности или нужно сделать что-то другое?
  • Прошу дать общие рекомендации по коду, что можно улучшить?
 

Вложения

Изменено:
  • Лойс +1
Реакции: konoev и ParamonD

ParamonD

✩✩✩✩✩✩✩
12 Янв 2020
1
0
Всем доброго времени суток. Я только недавно начал работать на ардуино и решил сделать, на мой взгляд, интересный проект.
Я решил создать передатчик данных с помощью светодиода и азбуки Морзе.

Разделил проект на две части.
Осторожно, зашкаливающее количество говнокода!
Проект лежит на git хабе, доступно по ссылке: https://github.com/Direaper/arduino/blob/master/morze/morze.ino

Видео работы:


Первая часть:
  1. Пользователь вводит текст в com порт
  2. Ардуино парсирует слова по буквам
  3. Переводит код морзе
  4. Отправляет буквы обратно в com порт
  5. Мигает светодиодом слова по буквам согласно коду Морзе
Вторая часть:
  1. Подключить к ардуино датчик освещенности (как пример).
  2. "Ловить" датчиком сигналы от светодиода
  3. Переводить их из кода Морзе и составить полностью слово.
  4. Передать данные по Морзе на разные платформы ардуино
  5. Заменить светодиоды на что-то более удобно и практичное и попробовать передать сигнал на большем расстоянии.
На данном этапе полностью готова первая часть проекта. Ардуино парсит слова, переводит в Морзе и мигает светодиодом.

Для удобства и вынесения управления светодиодом и парсинга был создан класс Morze.
Он имеет пять методов:
  1. dash - Описывает поведение "тире".
  2. point - Описывает поведение "точки"
  3. parsing - Парсирует слова на буквы и выводит в консоль
  4. delayfunc - отдельно реализовал функцию задержки, чтобы потом было удобно ей управлять (пока сделал обычный delay).
  5. alphabethMorze - "Словарь" Морзе. Проверяет введенный в com порт символ по словарю и обращается к функции по индивидуальным правилам
* Я специально оставил переменную BrightLed чтобы в будущем иметь возможность управлять интенсивностью света светодиода.

Код очень сырой, но рабочий. По сути, осталось только довести его до ума и реализовать вторую часть, чем я постараюсь заняться в ближайшее время.

Что хочу реализовать в коде:
  • Хочу внятно добавить кириллицу и нижний регистр. Пока не понимаю как это сделать правильным образом.
  • Чувствую, что со словарь можно вынести на более высокий уровень абстракции и не заморачиваться с кодированием каждого отдельного символа... Получается что символы индивидуальны и программировать их надо отдельно, но не понимаю как. В упор не вижу как это сделать.
  • Нужен совет по второй части проекта. Чем лучше считать данные со светодиода и передать их обратно на ардуино? Подойдет ли датчик освещенности или нужно сделать что-то другое?
  • Прошу дать общие рекомендации по коду, что можно улучшить?
Крутой проект !