Передатчик/приемник кода Морзе
Введение
Я сделал это для своей подруги, потому что она любит азбуку Морзе (без шуток) на прошлой неделе летних каникул, и я чуть не сошел с ума, потому что было так много проблем, которых я просто не ожидал, и это меня немного сбило с толку, но все в порядке, я в порядке. В то время нам было весело.
Что это делает
Это произведение искусства имеет два режима и один между ними:
Создание сообщения
Режимы переключаются переключателем
Вы пишете сообщение с помощью цифрового сенсорного датчика на неопиксельной матрице 4x4.
Вы делаете точку за короткое время/без паузы между касанием датчика и тире, делая паузу продолжительностью более 1 секунды. По сути, вы не делаете разницы (точка x тире), прикасаясь к датчику в течение определенного времени, а просто быстро касаетесь его, а затем ждете.
Вы создаете зазор, поворачивая потенциометр в другую сторону на секунду, а затем поворачивая его обратно.
Вы удаляете сообщение, повернув потенциометр в другую сторону, а затем прикоснувшись к цифровому датчику (если вы не прикоснетесь к нему, образуется зазор)
Сообщение может быть более одной страницы (4*4+)
Отправка сообщений
Сообщение будет отправлено после перемещения переключателя в другую сторону (от создания к получению), а за��ем будет сброшено.
Получение сообщений
Перевернутый гриб появится, когда устройство получит сообщение (не знаю, почему именно мой гриб)
если сообщение длиннее одной страницы, то каждая страница, кроме последней, будет воспроизводиться в течение нескольких секунд.
Экран сбрасывается после получения следующего сообщения
Аппаратное обеспечение
Нужна пайка (макетная плата не подошла). Пожалуйста, приложите к этому много усилий, потому что у меня были проблемы с этим, и мне пришлось все перепаивать.
Радиомодуль 2x 433 МГц В основном покупаю эту модель два раза SI4438
матрица 4х4, неопиксель
2x переключатель
потенциометр
сенсорный датчи��
ардуино нано
держатель для 3 батареек АА (но я рекомендую использовать этот вариант, поскольку ток намного выше)/батарея 9 В
3 батарейки типа АА/батарея 9 В
Программное обеспечение
Я использовал 2.idk Arduino ide. Также не спрашивайте меня, почему массив назван матерью (проблемы с мамой) или другими переменными.
#include
#ifdef __AVR__
#include
#endif
#include
SoftwareSerial morseSerial(2,8);
интервал текущего состояния;
ИНТ LastState;
ИНТ CurrentStateB;
ИНТ LastStateB;
беззнаковое длинное время;
внутренний таймер;
внутренняя проверка;
интервал времени простоя;
int downCheck;
int земля =3;
интервал vcc = 4;
INT GNDB = 5;
интервал vccb = 6;
int gnds = 12;
интервал vccs = 11;
интервал вращения = A2;
интервал гндр = 13;
интервал vccr =A1;
INT GNDIN=A3;
интервал SW = 0;
режим int;
интервал последнего режима;
инт месиво;
целое значениеIndex=0;
int rowIndex=0;
ИНТ глупыйИндекс = 3;
Строка окончательные данные;
Строковый символ;
Строковое сообщение;
#определить тачпин 7
#определить кнопку A0
#define матрицаpin 10
#определить номер 16
Пиксели Adafruit_NeoPixel (число, матрица, NEO_GRB + NEO_KHZ800);
int мать[4][4][3]={
{{0,0,0},{0,0,0},{0,0,0},{0,0,0}},
{{0,0,0},{0,0,0},{0,0,0},{0,0,0}},
{{0,0,0},{0,0,0},{0,0,0},{0,0,0}},
{{0,0,0},{0,0,0},{0,0,0},{0,0,0}}
};
int получение[4][4][3]={
{{0,0,0},{50,50,50},{50,50,50},{0,0,0}},
{{0,0,0},{50,50,50},{50,50,50},{0,0,0}},
{{100,0,0},{100,0,0},{100,0,0},{100,0,0}},
{{0,0,0},{100,0,0},{100,0,0},{0,0,0}}
};
недействительная настройка() {
Серийный.начало(9600);
morseSerial.begin(9600);
Serial.println('перезапуск');
#if определено(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(lock_div_1);
#endif
пикселей.begin();
pinMode (земля, ВЫХОД);
pinMode (vcc, ВЫХОД);
pinMode (gndb, ВЫХОД);
pinMode (vccb, ВЫХОД);
pinMode (vccs, ВЫХОД);
pinMode (земли, ВЫХОД);
pinMode (vccb, ВЫХОД);
pinMode (вращение, ВХОД);
pinMode (vccr, ВЫХОД);
pinMode (gndr, ВЫХОД);
pinMode (gndin, ВЫХОД);
}
недействительный цикл() {
установитьПинсы();
режим = AnalogRead (спин);
если (режим <255) {
режим = 1;
}
еще {
режим = 0;
}
Serial.println(режим);
если (режим == 0) {
подготовить();
}
иначе if(lastmode==0 и mode==1){
отправить();
}
иначе if(lastmode==1 и mode ==1){
сообщение="";
получить();
}
последний режим = режим;
}
недействительная подготовка(){
//morseSerial.end();
месиво=0;
Время = мил��ис();
currentState = digitalRead (touchpin);
currentStateB = AnalogRead (кнопка);





























