"... Эдик поднял паяльник, точно жезл, и сказал, уже что-то соображая: - Звездолёт? Тебе какого класса? - Ну... мне самый большой. - Тащи материал! Если что-нибудь осталось из твоих игрушек. - Старый паровоз подойдёт? Кукушка. - Подойдет! ... " Это фрагмент из книги Г. Садовникова "Продавец приключений". В детстве этот рассказ произвел на меня такое же впечатление, как и "Понедельник начинается в субботу" Стругацких в студенческий период. Все так научно и не совсем научно, и очень позитивно! Чтобы это как-то отметить, решил сделать звездолет "Искатель" из этого рассказа. Конечно, все достоинства необычной ракеты воссоздать в модели было нереально, но не было сомнений в том, что ракета должна быть веселой ))). Были опасения, что небольшое соотношение калибра и длины модели плохо скажется на устойчивости полета, но опасения не подтвердились впоследствии. Ракета пошла в небо свечой. Для "оживления" ракеты было решено сделать машущие крылышки, которыми в рассказе звездолет тормозил при приземлении. Плюс, от себя, был добавлен плеер, который без дела пылился уже пару лет на полке. В результате было сформировано ТЗ проекта по которому: 1) при включении ракета должна сделать: а) голосовое приветствие шкипера; б) помахать крылышками; в) проговаривать высоту предыдущего полета; г) пожелать хорошего полета; 2) до момента старта: а) ракета корректирует дрейф нулевой высоты; б) каждую минуту голосовое напоминание о том, что ракета включена и активна; 3) в момент начала движения - переключение на более быстрый алгоритм определения высоты; 4) при достижения апогея: a) срабатывает запал сигнального дымового трассера; б) включается бравая музыка; в) ракета около минуты под парашютом помахивает крыльями. Иэ вышеперечисленного не был сделан только трассер, то есть алгоритм запала реализован - подключить можно, но ракета получилась и без того тяжелой, что от шашки пришлось отказаться. Было решено задействовать два контроллера. Контроллер-A следил за стартом, определял апогей, включал запал трассера, управлял плеером и подавал сигналы контроллеру-Б, который управлял сервами крыльев. Благодаря большим майским входным, проект получился мегабыстым. Сделал за две недели, это абсолютный рекорд. Из совершенно новенького в этом проектике для меня был плеер. Не особо углубляясь в тонкости его работы, использовал первую попавшуюся библиотеку - DFRobotDFPlayerMini. Текстики сгенерировал на сайте https://apihost.ru/voice Метод произношения чисел не сложный, на его вход нужно подать число от 0 до 999. Далее метод определяет цифру каждого разряда, возвращает ей разряд, и по очереди из флеш-карты вызываются соответствующие файлы. Код (C++): /* м.произнести номер -------------------------------------------------------------------*/ void speakNum(int value ) { String strVal; int v_100 = 0; int v_10 = 0; int v_1 = 0; int v_10_1 = 0; int lVal; // определим количество разрядов и поместить цифры в соотв. разряд strVal = (String)value; int len = strVal.length(); for (int i = len - 1; i >= 0; i-- ) switch ( i ) { case 2: v_100 = round(value / 100); break; //сотни метров case 1: v_10 = round((value - v_100 * 100) / 10); break; //десятки метров case 0: v_1 = round(((value - v_100 * 100) - v_10 * 10 ) ); break; //единицы метров if (i == 2) v_100 = round(value / 100); //сотни метров else if (i == 1) v_10 = round((value - v_100 * 100) / 10); //десятки метров else if (i == 0) v_1 = round(((value - v_100 * 100) - v_10 * 10 ) ); //единицы метров } //Здесь нужно пропикать значение высоты if ( v_100 == 0 && v_10 == 0 && v_1 == 0 ) { myDFPlayer.playLargeFolder(2, 998); delay (1500); return; } v_100 = v_100 * 100; v_10 = v_10 * 10; if (v_100 != 0) { myDFPlayer.playLargeFolder(2, v_100); delay (1500); } if (v_10 == 10 ) { v_10_1 = v_10 + v_1; myDFPlayer.playLargeFolder(2, v_10_1); delay (1500); return; } else if (v_10 != 0) { myDFPlayer.playLargeFolder(2, v_10); delay (1500); } if (v_1 != 0) { myDFPlayer.playLargeFolder(2, v_1); delay (1500); } else { myDFPlayer.playLargeFolder(2, 999); delay (2500); } } В первый полет немного подвела парашютная система спасения, поэтому будут доработки. Ракета публике понравилась ))