roboforum.ru

Технический форум по робототехнике.

Магический кристалл

Re: Магический кристалл

=DeaD= » 16 мар 2010, 14:38

Да я и не сомневался, что асм-код будет загадочным :) именно поэтому и попросил сформулировать нормально русским языком постановку задачи. :wink:

Re: Магический кристалл

yak-40 » 16 мар 2010, 14:53

Вы вспомните как ТС где-то полгода назад пытался GSM-камеру сделать.
Его всем форумом убеждали что это невозможно, а он не верил. Тогда тоже страниц на 10 наговорили. и всё впустую.

Re: Магический кристалл

=DeaD= » 16 мар 2010, 14:55

Ну тут то реальней задача, поэтому уже 17 страниц :oops:

Re: Магический кристалл

GrayHunter » 16 мар 2010, 15:24

Я думал, что смогу на маленьких примерах понять как сделать нечто большее и сам всё написать, но, видимо, ошибся - каюсь. Сегодня вечером всё распишу на русском. :friends:

Re: Магический кристалл

GrayHunter » 16 мар 2010, 19:03

Подробно на русском (расписал как смог :oops: ):

МК кристалла: ATmega8(L), 1МГц (для экономии питания).
МК буфера (в Столбе c Буфером): ?

- Перед каждым миганием/свечением/дыханием светодиода происходит проверка:
-- вольтажа питания (если меньше нормы, необходимой для достойной яркости светодиода - то "красиво умереть" и ждать, пока вольтаж не станет выше нормы),
-- "заряда кристалла" (если заряд кончился (равен нулю), то "красиво умереть" и ждать, пока "заряд кристалла" не будет равен нулю).
("заряд кристалла" ограничен определённым значением, т.е. он не бесконечен; его максимальное значение можно легко поменять в коде, его минимальное значение = 0)
- "Красиво умереть" - это относительно быстрое (не больше минуты), но привлекающее внимание угасание светодиода. Т.е. как-будто кончилось топливо в машине и она кашляет, бьётся в конвульсиях (проявите фантазию :)).
- Сразу после включения светодиод (плюс которого находится на ножке МК PB0) начинает мигать 1 раз в полсекунды, "технически", так сказать, в ожидании какой-нибудь перемычки.
(перемычка = ножка МК с подтягивающим резистором закороченная на минус)
- Максимальная яркость светодиода при мигании/свечении/дыхании зависит от "заряда кристалла" (должно быть 2-4 уровня яркости; чем меньше "заряд кристалла" - тем меньше максимальная яркость.
- Если появилась перемычка ножки PD0 - светодиод Медленно дышит. При этом "заряд кристалла" уменьшается со скоростью "в Экране", т.е.: минус 1 единицу энергии ("заряда кристалла") за 4 секунды реального времени.
- Если появилась перемычка ножки PD1 - светодиод светится. При этом "заряд кристалла" уменьшается со скоростью "в Бижутерии", т.е.: минус 1 единицу энергии ("заряда кристалла") за 1 секунду реального времени.
- Если появилась перемычка ножки PD2 - светодиод Быстро дышит. При этом "заряд кристалла" увеличивается со скоростью "в Столбе", т.е.: плюс 2 единицы энергии ("заряда кристалла") за 1 секунду реального времени.
- Если появились перемычки ножек PD2 и PD3 - светодиод Быстро дышит. При этом "заряд кристалла" увеличивается со скоростью "в Столбе c Буфером", т.е.: плюс 3 единицы энергии ("заряда кристалла") за 1 секунду реального времени.
(при этом в столбе должен стоять ещё 1 МК (он же "буфер"), который имеет свой максимальный "заряд кристалла". МК-буфер заряжается со скоростью "в Столбе", и отдаёт свой "заряд кристалла" вставленному в столб кристаллу. Когда "заряд кристалла" МК-буфера кончается, то вставленный в столб кристалл продолжает заряжаться со скоростью "в Столбе"; буфер не заряжается, пока кристалл вставлен в столб, где находится этот буфер)
- Если появились перемычки ножек PD2, PD3 и PD4 - светодиод Быстро дышит. При этом "заряд кристалла" увеличивается со скоростью "в Мастерском Столбе", т.е. сначала секундная задержка/ожидание (защита от случайного замыкания), а потом моментально сделать "заряд кристалла" максимальным, какой возможен для данного кристалла.
- Если появились перемычки ножек PD0 и(ли) PD1 и(ли) PD2 и(ли) PD3 и(ли) PD4 (т.е. если появились перемычки двух и более ножек, которые не описаны выше, либо если появились перемычки ножек PD3 и PD4, но без PD2 - значит кристалл взяли мокрыми руками/уронили в воду/пытаются читирить/т.п.) - светодиод "Быстро Прогорает".
- Если кристалл вынули из Экрана, не разгадав секрет (т.е. ранее была перемычка ножки PD0, а теперь нет, при этом ранее так же была перемычка ножки PD5, а теперь нет) - "заряд кристалла" моментально в ноль, а т.к. за этим последует проверка "заряда кристалла", то это равносильно "красиво умереть".
(когда кристалл только включили, секрет по умолчанию разгадан. Когда кристалл вставляют в Экран (перемычка ножки PD0), то тогда начинаются постоянные проверки разгадан ли секрет (есть ли перемычка ножки PD5) - если есть, значит секрет разгадан; если нет - значит не разгадан. Т.е. изменить значение разгаданности секрета можно только если кристалл находится в Экране и больше нигде. А прочитать (но не изменить) это значение (т.е. понять разгадан ли секрет) можно только в состоянии "Снаружи".)
- Состояние "Снаружи" - это когда нет перемычек (кроме, возможно, перемычки ножки PD5 - секрета). В этом состоянии сначала 1 раз проверяется был ли разгадан секрет (была ли перемычка ножки PD5), а потом светодиод светит максимально ярко (но максимальная яркость ограничивается "зарядом кристалла"), возможно, пульсируя. При этом "заряд кристалла" уменьшается со скоростью "Быстро Прогорает", т.е.: минус 300 единиц энергии ("заряда кристалла") за 1 секунду реального времени. Если же проверка был ли разгадан секрет (была ли перемычка ножки PD5) показала, что секрет не был разгадан, то "заряд кристалла" моментально в ноль, а т.к. за этим последует проверка "заряда кристалла", то это равносильно "красиво умереть".
- Если появились перемычки ножек PD0 и PD5 (т.е. если кристалл в Экране и секрет разгадан), то светодиод Быстро дышит. При этом "заряд кристалла" уменьшается со скоростью "в Бижутерии", т.е.: минус 1 единицу энергии ("заряда кристалла") за 1 секунду реального времени.
- Если появились перемычки ножек PD2 или (PD2 и PD3) или (PD2, PD3 и PD4) (т.е. если кристалл в любом из Столбов) и при этом "заряд кристалла" максимальным, какой возможен для данного кристалла - то светодиод светится максимально ярко, возможно, пульсируя.


Если остались вопросы - задавайте, я себе эту картину представляю полностью.
P.S.- в идеале написать это и на asm, и на Си (asm мне всё-таки больше понятен), но я буду рад любому варианту (asm/Си). :roll:
P.S.S.- пишите, пожалуйста, в коде как можно больше комментариев: чем их будет больше - тем понятнее будет где за что отвечает и тем меньше я буду что-то уточнять...

Re: Магический кристалл

GrayHunter » 17 мар 2010, 00:21

Отсутствие комментариев означает, что "работа идёт" или что "если ему не отвечать - может быть он забудет и уйдёт"? :)

Re: Магический кристалл

=DeaD= » 17 мар 2010, 00:31

Отсутствие комментов означает, что с первого захода много букв осилено не было, ждите второй заход со свежей головой :)

Re: Магический кристалл

Angel71 » 17 мар 2010, 00:46

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

Re: Магический кристалл

EdGull » 17 мар 2010, 07:57

а я что-то не понял...
топикстартер не собирается самостоятельно писать код и ищет того кто за него всё напишет?

Re: Магический кристалл

pashteet » 17 мар 2010, 09:58

Ща ЭдГулл попросит озвучить цену)))))))))

Re: Магический кристалл

Vovan » 20 мар 2010, 20:37

2 GrayHunter :
отправил Вам в ЛС программы на асм с примерами:
1.ШИМ
2.ШИМ в качестве плавного "гашения" светодиода с автоповтором (плавность и скорость "гашения" естесно можно менять в проге)
3.Использование АЦП для оценки состояния заряженности батареи.
Проги с комментами, как и запрошено, но не забывайте в них вставить свой инклюд, т.к. у меня инклюд имеет другой адрес.
Просьба отписаться или здесь, или в ЛС о получении, а то опять уеду в понедельник так и не узнаю резалта...

Re: Магический кристалл

=DeaD= » 20 мар 2010, 20:49

Наконец-то у меня нашлось время внимательно прочитать это множество букв :)
GrayHunter писал(а):Если остались вопросы - задавайте, я себе эту картину представляю полностью.

Итак вопросы:

1. Какие внутренние состояния должен хранить кристалл? Верно ли, что только "заряд кристалла", а всё остальное можно в любой момент прочитать из напряжения батареи и перемычек?

2. Какой список всевозможных состояний перемычек мы имеем? Можно их тупо списком? Только не в режиме "если ... то", а просто список всевозможных состояний?

3. Какой список всевозможных режимов свечения должен быть?

4. Сводная таблица сопоставляющая какие режимы из списка 3 должны быть при каких напряжения батареи, перемычках и внутренних статусах?

5. Сводная таблица - при каких внутренних статусах и каких перемычках и напряжении питания какие обновленные внутренние статусы должны быть выставлены?

Ответы на эти вопросы - это почти нужная программа, только сформулированная на русском языке. Как только вы выпишите ответы на эти вопросы - можно будет составить программу почти сразу. Только отвечайте на вопросы полностью, т.е. не оставляйте не рассмотренных вариантов выставления перемычек и\или статусов и\или напряжений, даже если вы считаете, что такого у вас не будет никогда.

Re: Магический кристалл

Vovan » 20 мар 2010, 21:23

ИМХО при составлении ТЗ лучше вообще избавиться от спец. терминов таких как "заряд кристала", "красиво умереть", "дыхание" и т.п...
Ведь задача-то простая: рулить с помощью МК одним СД используя при этом неск датчиков преремычек=кнопок и АЦП.
Вот мне было бы намного легче если б ТЗ звучало, например, так:
при включении питания по умолчанию датчиков СД горит в таком режиме;
при заниженном питании Бат. - в таком;
при срабатывании одного и\или друг-ого(-их) датчиков, при нормальном сост. Бат. светодиод светит так-то;
при срабатывании одного и\или друг-ого(-их) датчиков, при разряженном сост. Бат. светодиод светит эдак;
Т.о. описывается вся кухня работы датчиков=кнопок=перемычек и АЦП (ведь другого вроде ничего нет, или я не заметил?)...
ну и в таком духе... Потому что все индивидуально присвоенные названия такие как "заряд кристалла", у меня, например, ассоциируется совсем с другим, что затрудняет мыслительный процесс при составлении программы...
Иными словами: чем проще выбраны слова при озадачивании, тем проще её (задачу) решать (ИМХО)...

Re: Магический кристалл

yak-40 » 21 мар 2010, 10:03

И мои 5 копеек.
4 уровеня свечения светодиода на глаз определить IMHO невозможно.
Поэтому предлагаю поставить 2 или даже 3 светодиода.
полный заряд - зелёный мигает (дышит)
средний заряд - желтый
малый заряд - красный + желтый(оранжевый)
предельно малый - красный
Можно и на одном - мультиколорном.
А в остальном согласен с предыдущими постами:
Имея точное, технически сформулированое задание, включая схему, написать программу не проблемма.

Re: Магический кристалл

=DeaD= » 21 мар 2010, 10:35

Можно двухцветный взять светик, например, KAA-3528SGC :) красно-зеленый.


Rambler\'s Top100 Mail.ru counter