Добавлено: Вт Июн 02, 2015 5:18 pm
Заголовок сообщения: Что там, в небесах! Белый лебедь? Белый слон??.. Ту-160 1/72
Во-первых: окраска будет очень нестандартная. Раскрывать прежде времени не буду, сюрприз будет. Хотя намёки можно найти на моём аватаре.
Во-вторых, работать с моделью одно удовольствие(планирую захомячить ещё один набор к концу года), т.к. огромные внутренние объёмы легко фаршируются разными, в том числе весьма громоздкими, внутренностями.
В-третьих, работа идёт уже год. Однако мотивация очень сильна , так что если не случится ничего катастрофичного, рассчитываю завершить за полгода-год.
В-четвёртых, значитальная часть доработок незавершена, поскольку перепрыгиваю от (теоретически) решённых проблем к тем местам, где требуется творческий подход.
Батарейный отсек. 3хLR44. Наверное надо было установить его горизонтально.
Думаете самое трудное удержать бомболюки закрытыми? Открываются вот таким поршнем.
Из-за шпатлёвки не видно, но алюминиевая трубка справа ведёт к заднему бомбоотсеку. Левая соответственно к переднему.
Потянешь за верёвочку, он и откроется.
В данный момент архиважно завершить механизм поворота стабилизаторов, т.к. после него пойдёт руль, поворот которого будет убирать фиксацию угла стреловидности крыльев.
Хотя физически данная работа будет имитировать Ту-160 насколько это возможно с движущимися деталями, из-за окраски перенесите тему в раздел "Фантастика".
Крайне необходимая деталь для всего проекта.
Кончик - от стержня шариковой ручки.
Необходимая, но всё же опциональная. Просто потому что могу. Всего лишь сменная пластина.
Сказал А, говори и Б. Механизм выталкивания пластины.
В фарах (Эльфа) - светодиоды от подсветки экрана телефона.
Закончил со внутренностями киля. Склеил и приклеил его.
Переделал выхлопные отверстия (чего-то там) над двигателями.
Торчащая трубка не только дотошность, она передаёт нажатие на скрытый внутри выключатель подсветки. Хотя у меня подозрение что она уходит в стенку, а не идёт внутри канала.
Попробовал спаять электронную схему мигания на надёрганных из БП ПК транзисторах. Удачно! Так что как минимум с навигационными огнями вопрос (теоретически) решён.
Также спаял схему строба. Получил фэйл. Вспыхивает, но неравномерно.
Крылья на максимальной стреловидности вгоняют в депрессию, т.к. закрылки утыкаются в бока двигателям, а по идее должны заходить над ними. В этом режиме закрылки отклоняются вверх что ли?
Закрылки полностью не отклоняются, но "треугольнички" вверх отклоняются.
Вот здесь видно:
Для управления всей электро-/свето-техникой попробуйте использовать Arduino Mini Pro - места займет не больше чем схема нескольких мультивибраторов, а возможностей появится - просто неограниченное количество. Вплоть до последовательного включения/выключений огней по программе с заданными задержками.
Да я вообще чайник в электронике и программировании. Разве что паять умею. Хотя с ардуино попробую. Как говорится, зло не невежество, а нежелание учиться.
У меня идефикс на разделение, дублирование, запас прочности. Поэтому внутренняя подсветка, фар, нав. огней и стробов будут раздельными + нав. огни НЧК постоянные/мигающие(на случай если схема сдохнет, сдохнут стробы - не так страшно). Планирую ещё переменные резисторы вставить для регуляции.
WhiteKnight, ну если надо резервирование, то две ардуинины, выходы идут на элемент ИЛИ, с него снимаем управляющий сигнал )) Можно и троирование с голосованием сделать ))
Спрячьте плату за какой-нибудь откидной панелькой, соединения на разъемах. В случае чего панельку откинули, плату поменяли, радуетесь дальше.
В принципе, в гондолах двигателей пустоты ~2,5х4,5х6 см. И панели на их нижних-внутренних сторонах Трумпетер дал отдельно... Если сделаю, то легко выламываемыми, хочется поменьше щелей.
Дабы оправдать флуд, вот вам плюшки - открывающиеся створки переднего шасси:
Унитаза нибудет, вместо него вот такая конструкция. Створки в закрытом положении. Магнит для противодействия резинкам. Знаю, знаю, топорная работа.
Чуть-чуть несимметрично. Ну и ладно, главное как выглядит в закрытом виде. Под засветившимся выше пластилином - антенна.
По результатам ковыряния в носу, демонстрирую козявки:
Долго колебался делать или нет вообще.
Видит бог, я попробовал сделать как в оригинале, с открывающимися створками-опускающимися фарами, но естественно оказалось слишком мелко, коряво.
В результате вместо четырёх мелких створок - одна большая.
И пара вынимаемых модулей с фарами.
Недоволен "температурой" света. Так у фар на передней стойке шасси гораздо более " тёплый ламповый" свет. Но под рукой просто нет подходящих светодиодов. Если найду, переделаю, тем более что надо поправить разный угол наклона.
Разобрался с Ардуиной(нано). В программу поместились четыре режима: проблесковый 1,5/6 сек, белый-красный-зелёный мигают/постоянны. Единственное, что не вошло, белый-красный-зелёный должны бы загораться-потухать по синусоиде.
Цитата:
// constants won't change. Used here to set a pin number :
const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int ledPin8 = 8; // the number of the LED pin
const int ledPin9 = 9;
const int ledPin10 = 10;
const int ledPin11 = 11;
const int ledPin12 = 12;
int buttonState1 = 0;
int buttonState2 = 0;
int ledState8 = LOW;
int ledState9 = LOW; // ledState used to set the LED
int ledState10 = LOW;
int ledState11 = LOW;
int ledState12 = LOW;
unsigned long currentMillis = 0;
unsigned long previousMillis9 = 0;
unsigned long previousMillis10 = 0;
unsigned long previousMillis12 = 0;
unsigned long previousMillis13 = 0;
unsigned long previousMillis14 = 0;
unsigned long previousMillis15 = 0;
unsigned long interval2 = 0;
unsigned long interval3 = 0;
const long interval1 = 2000;
void setup() {
// set the digital pin as output:
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop()
{
unsigned long currentMillis = millis();
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
if (buttonState1 == HIGH) { //режим АНО постоянно вкл
ledState8 = HIGH;
ledState9 = HIGH;
ledState10 = HIGH;
digitalWrite(ledPin8, ledState8);
digitalWrite(ledPin9, ledState9);
digitalWrite(ledPin10, ledState10);
}
if (buttonState1 == LOW) { //режим АНО мигающие
if (currentMillis - previousMillis9 >= interval1) { //горит-не горит интервал 2 сек
previousMillis9 = currentMillis;
if (ledState8 == LOW) {
ledState8 = HIGH;
ledState10 = LOW; //третий горит если первый не горит и наоборот
digitalWrite(ledPin8, ledState8);
digitalWrite(ledPin10, ledState10);
}
else {
ledState8 = LOW;
ledState10 = HIGH;
digitalWrite(ledPin8, ledState8);
digitalWrite(ledPin10, ledState10);
}
}
if (currentMillis - previousMillis10 >= interval1) { //задержка загорания второго после первого 1 сек
previousMillis10 = previousMillis9 + 1000;
if (ledState9 == LOW) ledState9 = HIGH;
else ledState9 = LOW;
digitalWrite(ledPin9, ledState9);
}
}
//стробы выбор режима
if (buttonState2 == HIGH) {
interval2 = 6000;
interval3 = 6010;
}
if (buttonState2 == LOW) {
interval2 = 1500;
interval3 = 1510;
}
// верхний строб загорается
if (currentMillis - previousMillis12 >= interval2) {
previousMillis12 = currentMillis;
ledState11 = HIGH;
//верхний строб тухнет
}
if (currentMillis - previousMillis13 >= interval3) {
previousMillis13 = previousMillis12;
ledState11 = LOW;
}
// нижний строб загорается
if (currentMillis - previousMillis14 >= interval2 + 200) {
previousMillis14 = previousMillis12;
ledState12 = HIGH;
// нижний строб тухнет
}
if (currentMillis - previousMillis15 >= interval3 + 200) {
previousMillis15 = previousMillis12;
ledState12 = LOW;
}
digitalWrite(ledPin11, ledState11);
digitalWrite(ledPin12, ledState12);
}
P.S.
Если кому интересно как вытачивал диски из тонкой жести: напаивал заготовку на стержень, зажимал в дрель, прикладывал надфиль и наждачку.
WhiteKnight
Сделать "моргание по синусоиде" (то-есть имитацию вращающегося маячка, а не "моргалки") можно - я уже делал.
Мне кажется что Ваша программа усложнена больше чем это нужно.
Пришлите мне описание того что хотите получить (с указанием всех временных интервалов) я попробую помочь сделать программу более "читаемой".
Atlant, проблемы с постепенным изменением яркости одних только белого-зелёного-красного нет, можно написать с функцией "delay()", которая приостанавливает все действия. Проблемы с том, что:
1). Параллельно выполняются вспышки(короткое включение, долгий промежуток между ними) проблесковых, поэтому все действия сверяются с "millis()"(отсчёт времени с включения). А так же проверки на текущие режимы.
2). Ограничение программы(1884 байта) оперативной памятью в 2048 байта не даёт её расширить.
За основу взята программа BlinkWithoutDelay из примеров.
WhiteKnight
Есть и другие методы управления, кроме учета текущего времени (millis()) и задержки (delay()).
В 2 килобайта пямяти можно засунуть ой как много чего! Как я уже сказал - Если пришлете описание того что хотите получить (с указанием всех временных интервалов и режимов работы), то я помогу написать программу которая будет делать то, что Вам хочется получить.
Я вижу что у Вас в программе 2 переключателя. 1-ый насколько я понял отвечает за "моргание/постоянное свечение" АНО (выводы 8, 9 и 10). А для чего второй? Он насколько я понял меняет интервалы, так?
Это перереключатели? Можно поставить "кнопки" , которые по нажатию просто будут переключать режим работы. Может можно и одной кнопкой обойтись, или вообше по "таймеру" работать - скажем 30-40 секунд работа в одном режиме, потом 20 в другом, а потом 50 в третьем, а потом еще 30 в первом. (Комбинацию можно придумать любую по длительности/сложности). Это даст исключение переключателей (и как следствие - уменьшение вероятности что-то сломать в модели в момент переключений/тряски) и увеличение надежности (ибо как раз переключатели - как механические компоненты - самые ненадежные).
Понял, длина цикла для АНО - 2 секунды, 1 секунда свечения (по пол-секунды нарастания и убывания яркости) и 1 секунда тенмноты. Красный и Зеленый - в противофазе, белый - посередке между ними, после зеленого.
Ждите, скоро сделаю.
Добавлено спустя 9 часов 48 минут 1 секунду:
Вот такое вот у меня получилось:
Код:
//*********************** начало ****************
const int RedLEDPin = 5;
const int GreenLEDPin = 6;
const int WhiteLEDPin = 9;
const int BlackLEDPin = 8;
const int Button1Pin = 2;
const int Button2Pin = 3;
if (Button1Pressed) // меняем режим работы БАНО
{
BANOMode = ! BANOMode;
if (! BANOMode)
{
analogWrite(RedLEDPin, 50);
analogWrite(GreenLEDPin, 50);
analogWrite(WhiteLEDPin, 50);
}
else
{
analogWrite(RedLEDPin, 0);
analogWrite(GreenLEDPin, 0);
analogWrite(WhiteLEDPin, 0);
}
}
if (BANOMode)
{
Counter1 += Direction1;
analogWrite(RedOrGreen, Counter1);
if (Counter1 > 50)
Direction1 = -1;
if (Counter1 == 0)
{
Direction1 = 1;
if (RedOrGreen == RedLEDPin)
RedOrGreen = GreenLEDPin;
else
RedOrGreen = RedLEDPin;
}
Counter2 += Direction2;
analogWrite(WhiteOrBlack, Counter2);
if (Counter2 > 50)
Direction2 = -1;
if (Counter2 == 0)
{
Direction2 = 1;
if (WhiteOrBlack == WhiteLEDPin)
WhiteOrBlack = BlackLEDPin;
else
WhiteOrBlack = WhiteLEDPin;
}
}
if (Button2Pressed)
{
if (blinkDelay == 37)
blinkDelay = 150;
else
blinkDelay = 37;
}
blinkCounter ++;
if (blinkCounter > blinkDelay)
{
digitalWrite(BlinkLED, HIGH);
blinkCounter=0;
if (BlinkLED == Blink1LED)
BlinkLED = Blink2LED;
else
BlinkLED = Blink1LED;
}
}
// ************************** конец ************************
Очень важно !!!
Для БАНО надо использовать выводы с ШИМ (PWM) - в данном случае я использовал 5,6 и 9.
Стробы можно использовать любые, лишь-бы не было совпадения с неиспользуемым BlackLEDPin.
Кнопки подключены на контакты 2 и 3 (можно использовать любые).
Кнопки - нормально открытые, при нажатии (замыкании) - замыкаются на землю. Никаких подтягивающих сопротивлений ставить не надо - все уже есть внутри в самом чипе.
Яркости зеленых/красных светодиодов могут отличаться. Програмку написал бегом-бегом, используя некоторые "хитрости" (читай - лень было), поэтому вполне возможно понадобятся доработки. Если нужна помощь - просите.
Сама программа занимает вот сколько места:
Sketch uses 1,938 bytes (6%) of program storage space. Maximum is 32,256 bytes.
Global variables use 35 bytes (1%) of dynamic memory, leaving 2,013 bytes for local variables. Maximum is 2,048 bytes.
Туда еще ой как много чего можно понаписать - и звук играть можно и по таймеру остальные огни включать/выключать и моторами/магнитами управлять если надо....
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы