Реклама
Показано с 1 по 6 из 6

Тема: Интересная задумка!

  1. #1
    Постоянный пользователь

    Регистрация
    17.07.2008
    Сообщений
    9
    Вес репутации
    0

    Приветствую. Решил я реализовать свой проект и разработал следующую логическую схему. Планирую использовать микроконтроллер ATmega8.



    Помогите мне пожалуйста в следующем:



    I. напишите названия тех элементов, которые здесь понадобятся,



    II. напишите пожалуйста собственно код, которым нужно будет прошить ATmega8 (в логической схеме есть неопределённое число “N” (яркость), которое должно быть самым тусклым светом, т.е. то, что уже нельзя назвать темнотой, так же есть знаки вопроса и могут быть неточности – это те моменты, которые я прошу Вас дописать/изменить так, чтобы общая логика работала – насчёт того, что же я хочу смотри в конце поста)







    Общее:



    Два колеса – два мотора,



    С каждой из двух сторон по датчику, определяющего яркость света,



    В памятях фигурируют две переменные – по одной от каждого датчика.



    (подробнее что же это будет – см. под лог. схемой)







    0. Включение робота.







    Логическая схема:



    1. Ждёт 5 сек



    2. Проверяет яркость света на датчиках



    2.1 Если яркость одинаковая – перейти к пункту № 3



    2.2 Если яркость разная – перейти к пункту № 5



    3. Запоминает яркость на каждом датчике в оперативной памяти



    3.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:



    3.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 3.4



    3.3 Если оно равно N или больше N – перейти к пункту № 3.4



    3.4 Записать полученное в постоянную память



    4. Двигаться вперёд на случайное кол-во сантиметров, но не больше 200 и не меньше 20, одновременно проверять яркость на датчиках каждую секунду (?) и сверять с яркостью, которая в оперативной памяти, и если:



    4.1 Яркость на обоих датчиках больше или равна той, которая указана в постоянной памяти – перейти к пункту № 12, если нет – см. далее



    4.2 Яркость на обоих датчиках заметно больше, чем в оперативной памяти – перейти к пункту № 11, если нет – см. далее



    4.3 Яркость на обоих датчиках заметно меньше, чем в оперативной памяти – после проезда выбранного расстояния перейти к пункту № 9, если нет – см. далее



    4.4 Яркость на обоих датчиках такая же, как в оперативной памяти – после проезда выбранного расстояния перейти к пункту № 7, если нет – см. далее



    4.5 На одном из датчиков заметно больше яркости, чем в оперативной памяти – перейти к пункту № 5, если нет – см. далее



    4.6 На одном из датчиков заметно меньше яркости, чем в оперативной памяти – перейти к пункту № 8



    5. Остановиться



    6. Повернуться в сторону датчика, яркость которого больше – перейти к пункту № 3



    7. Остановиться



    8. Повернуться в случайную сторону на случайный угол, но не больше 180 градусов – перейти к пункту № 4



    9. Остановиться.



    10. Повернуться в случайную сторону на случайный угол, но не меньше, чем на 150 и не больше 180 градусов – перейти к пункту № 4



    11. Запомнить яркость на каждом датчике в оперативной памяти (продолжая делать всё то же, что и в пункте № 4, например, движение и, желательно, проверку яркости)



    11.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:



    11.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 11.4



    11.3 Если оно равно N или больше N – перейти к пункту № 11.4



    11.4 Записать полученное в постоянную память



    11.5 Перейти к пункту № 4.



    12. Остановиться



    13. Запомнить яркость на каждом датчике в оперативной памяти



    13.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:



    13.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 13.4



    13.3 Если оно равно N или больше N – перейти к пункту № 13.4



    13.4 Записать полученное в постоянную память



    14. Умножить яркость в оперативной памяти на 0,6 (?)



    15. Записать полученное в оперативной память



    16. Проверить яркость на датчиках через минуту (?) и сверить с яркостью, которая в оперативной памяти, и если:



    16.1 Яркость на обоих датчиках больше, чем в оперативной памяти – перейти к пункту № 13, если нет – см. далее



    16.2 Яркость на обоих датчиках такая же, как в оперативной памяти – перейти к пункту № 16, если нет – см. далее



    16.3 Яркость на обоих датчиках заметно меньше, чем в оперативной памяти – перейти к пункту № 9, если нет – см. далее



    16.4 На одном из датчиков заметно больше яркости, чем в оперативной памяти – перейти к пункту № 5, если нет – см. далее



    16.5 На одном из датчиков заметно меньше яркости, чем в оперативной памяти – перейти к пункту № 16











    -=-=-=-=-



    ЧТО ЖЕ ЭТО БУДЕТ:







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







    Итак, робот передвигается по местности в поисках наибольшего (по яркости) источника света постоянно приводя к реальности значения в постоянной памяти, но это значение не может быть ниже тусклого света, чтобы робот не прекращал поиски источника света, даже находясь в полной темноте. Когда робот найдёт самый яркий источник света, который ему повезёт и который будет в его зоне определения яркости – робот остановиться в зоне наибольшей яркости. Солнечные батареи будут заряжать аккумуляторы робота, а он будет проверять рентабельность (скажем так) своего пребывания в этом месте. Если яркость упала – он продолжит поиски. Если аккумуляторы сели так, что больше не смогут передвигать/питать робота – то реле переключится и соединит “экстренную” батарею со светодиодом – это будет сигналом, что робот разрядился.







    По идеи, робот будет работать так (в комнате с единственным источником света – окно с выходом на глухую стену (т.е. звёзд и луны не видно)):



    Всю ночь он будет искать источник света (если найдёт - остановиться)



    Утром он либо переместиться к окну, либо у него и будет стоять (см. про ночь)



    До того момента, когда солнце будет закатываться – он будет смирно стоять у окна.



    Когда солнце будет уже давать меньше света – он снова начнёт искать свет…….







    P.S.- было бы неплохо ещё прописать, что при возобновлении поисков света расстояние, которое будет проезжать робот будет зависеть от того, насколько сильно вдруг изменилась яркость, но сначала мне хотя бы это сделать…







    --> ПРОШУ помочь мне в осуществлении этого проекта – в начале поста всего два пункта, в которых мне нужна помощь. Буду очень рад помощи.

  2. #2
    Модератор раздела Аватар для blindman

    Регистрация
    21.10.2007
    Сообщений
    3,417
    Вес репутации
    22
    Не в тему конечно, но оч смешно, я просто рыдал.

    Цитата с Баша:

    Dr_Mebius Несколько лет назад мой кабинет был превращен в полигон. По стене на разной высоте были ввинчены шпильки, а на пол прибиты бруски. Задача робота была: самостоятельно провести замеры шпилек, подготовить щит из фанеры (засверлить отверстия правильных диаметров), навесить щит на шпильки и привинтить гайками.



    Отлаживали программу месяц. Когда сдавали заказчику, он подготовил на полигоне проверку: одну шпильку ввинтили под углом. Когда я заметил это, я затрепетал: что будет? Догадается ли сделать больше диаметр отверстия? Мой программер (молюсь на него) только улыбался. Когда машинка добралась до кривой шпильки, она произнесла: "вот cyka...", навинтила на шпильку гайку и выпрямила молотком. Японцы были в обмороке. Сказали, что не просили машину с "русским" интеллектом. Тем не менее, работу приняли.

  3. #3
    Постоянный пользователь

    Регистрация
    17.07.2008
    Сообщений
    9
    Вес репутации
    0
    фу, сотрите эту подворотню из моей темы плз

  4. #4
    Постоянный пользователь Аватар для Димыч

    Регистрация
    20.10.2007
    Сообщений
    149
    Вес репутации
    17

    Cool

    Ржунимагу!!! Два последних поста просто отжигают Соррри за офтоп. А идея робота конечно отличная, преклоняюсь пред афтором, удачи в постройке!

  5. #5
    Постоянный пользователь

    Регистрация
    17.07.2008
    Сообщений
    9
    Вес репутации
    0
    спасибо, часа два сидел над этим



    Забыл дописать в свою логическую схему ИК-локатор, чтобы он не врезался в стены и даже уворачивался от идущих людей. Если не сложно - его тоже допишите плиз. ИК-локатор, например, как тут http://homorobot.narod.ru/teach/rober/rober.html ( http://homorobot.narod.ru/teach/rober/rober.html )



    Вот логическая схема для локатора, работающего одновременно с основной схемой, но имеющая приоритет:

    1. Постоянно должен работать ИК-локатор (или иной – какой посоветуете) и, если:

    1.1 Ничего нет в поле действия (например сантиметров 20), то никак не реагировать на это отсутствие чего-либо – перейти к пункту № 1

    1.2 Если что-то появилось – перейти к пункту №2

    2. Запомнить расстояние до объекта

    3. Сверить полученное расстояние через полсекунды с тем, которое было запомнено в пункте № 2, и если:

    3.1 Объект пропал – перейти к пункту № 1

    3.2 Расстояние не изменилось – перейти к пункту № 3

    3.3 Расстояние увеличилось – перейти к пункту № 2

    3.4 Расстояние сократилось быстрее, чем скорость робота (т.е. объект двигается к роботу) – перейти к пункту № 4

    3.5 Расстояние сократилось со скоростью робота (т.е. объект стоит) – перейти к пункту № 6

    4. Повернуть направо на 90 градусов и прибавить к запланированному расстоянию 50 сантиметров

    5. Перейти к пункту 2

    6. Повернуть направо на 90 градусов

    7. Запомнить расстояние до объекта

    8. Продолжить двигаться на запланированное расстояние, и если:

    8.1 Запланированное расстояние пройдено – перейти к пункту № 2

    8.2 Объект исчез – перейти к пункту № 9

    8.3 Расстояние не изменилось – перейти к пункту № 8

    8.4 Расстояние увеличилось – перейти к пункту № 7

    8.5 Расстояние сократилось быстрее, чем скорость робота (т.е. объект двигается к роботу) – перейти к пункту № 4

    8.6 Расстояние сократилось со скоростью робота (т.е. объект стоит) – перейти к пункту № 6

    9. Повернуть на 90 градусов налево

    10. Продолжить двигаться на запланированное расстояние

    11. Перейти к пункту № 1

  6. #6
    Забаненный

    Регистрация
    11.12.2007
    Сообщений
    720
    Вес репутации
    0
    Интересно. Vasa, я думаю надо пробовать писать в АлгоритмБилдере. Как раз для логических задач очень удобная штука, поскольку в граф. форме видны все логические связи. Научиться писать на АБ довольно просто, есть хэлп на русском.

TEST

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация:
Приветствуем Вас на самом крупном в Украине модельном портале. Советуем Вам зарегистрироваться, после чего вы сможете читать и писать сообщения.
Полезные ссылки
www.modelka.com.ua
www.icar.com.ua
www.magiya.com.ua
Free Photobank torange.biz
Присоединяйтесь