И вообще я прислушался к вашим советам и решил сделать на амеге 8 игру волк ловит яйца. (Так сказать папрактиковаться.
Вот это правильно!
Вадиматоричик писал(а):
Кстате вопрос. Кто небудь в этой программе знает, как использовать сдвиговые регистры.
В какой программе? Или вопрос в том, как для конкретной схемы их соединять? Если используются 595 регистры (74HC595), то они подключаются через интерфейс SPI контроллера. Нога SH_CP (11) - к ноге CLK МК, нога DS (14) к ноге MOSI МК, нога ST_CP (12) к любой ноге мк (можно к SS), MR (10) на плюс, OE(13) на землю. А к ногам Q0-Q7 подключаем элементы индикации, главное не превышать ток через выводы 595. Как выводить данные по SPI есть примеры в даташите на контроллер.
Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32 Сообщений: 299 Откуда: Красноярск
Рейтинг сообщения:0
Спасибо за участие в теме. Под соловом в той программе я имел, введу, конструктор программ для AVR (Flowcode V4 for AVRs)Поскольку языка не знаю (Не Си не русского по хорошему) работаю в ней и код генератора нужен именно под эту программу, но спасибо за участие. Потехоньку пытаюсь выводить падения яиц на экран протеуса.
_________________ Все можно сделать, было бы желание!
Там работа с АЦП есть? Можно оставить вход АЦП болтаться в воздухе и снимать с этого канала значения (самые младшие биты) сняли 8 значений - случайное число от 0 до 255 готово) Ну или можно вот так. На первое время можно вообще забить на ГСЧ и выдавать последовательно числа 1,2,3,4... Чтобы сам алгоритм индикации и управления отработать.
http://ru.wikipedia.org/wiki/%D0%9B%D0% ... 0%BE%D0%B4 Генератор случайных чисел реализуется по этому методу (об этом позже). Раз Вы таки решились сделать волка с яйцами, я готов реально помогать. Как я понимаю, у Вас были проблемы с составлением понятного и грамотного алгоритма. Я попробую составить свою версию алгоритма для волка с яйцами. Выложу чуть позже. ---------- Не грузите человека еще каким-то АЦП. Тем более что метод с АЦП хоть и не псевдослучайный, но распределение будет не равномерным, да еще и зависеть от погоды/прочей лабуды.
_________________ Giggity giggity goo!
Последний раз редактировалось Foks Чт июн 30, 2011 12:52:34, всего редактировалось 1 раз.
Работать будет. Считаю некрасиво. Некрасиво и все тут. Ну не нравятся мне сопли. Никто не мешает. Складываем и пользуем. Методов море. Предложенные в том числе. Во, Foks облачил мои чувства в слова.
Foks предложил хороший вариант, сразу число получается, надо будет его тоже освоить. Главное с коэффициентами угадать. Хорошо что в меге есть умножение А по поводу соплей... А зачем обязательно делать в виде соплей
Пусть у нас есть M горок, откуда падают яйца, с большим числом ячеек на каждой горке. На экране видны только 3 последние ячейки, а яйца будут появляться в одной из ячеек >=4. Игра будет обрабатывать всего N яиц. Имейте в виду, что на экране будут отображаться только те, которые находятся в ячейках 1...3. Таким образом, у нас будет 3*M светодиодов-яиц, и M светодиодов - шляпы.
Нам нужны будут следующие переменные: 1) Массив Pos[N] - для хранения позиции каждого яйца, и 0 если яйца нет. 2) Массив Side[N] - Здесь будем хранить число 1...M - с какой стороны находится яйцо. 3) Переменная Score - очки. 4) Переменная Wolf - Здесь число 1...M - с какой стороны волк держит шляпу.
Элементы массивов я буду нумеровать 1...N.
1. Обнулить все массивы и переменные. 2. Настроить порты ввода-вывода. Светодиоды по умолчанию погашены. 3. Цикл i = 1 до M ---- 1) Если Pos(i) = 0 то ---------- а) Присвоить Side(i) случайное число от 1 до M. ---------- б) Временная переменная T = 2. ---------- в) Цикл j = 1 до N ---------- Если (Side(j) = Side(i)) И (Pos(j)>T) то присвоить T значение Pos(j) ---------- г) Присводить Pos(i) значение T+2 ---- 2) Если Pos(i) от 1 до 3, то погасить светодиод, соответствующий Pos(i), Side(i) ---- 3) Pos(i) уменьшить на единицу -- спускаем яйцо на один уровень ниже. ---- 4) Если Pos(i) от 1 до 3, то зажечь светодиод, соответствующий Pos(i), Side(i) ---- 5) Если Pos(i) = 0 то -- новое яйцо упало ---------- а) Если Side(i) = Wolf то добавить сколько-то очков к Score иначе отнять столько-то очков. ---- 6) Подождать 180 мс, и во время ожидания повторять: ---------- а) Если нажата кнопка 1, то присвоить Wolf значение 1 и зажечь соотв. светодиод шляпы (остальные погасить) ---------- Аналогично с кнопками 2-M. 4. Перейти к пункту 3 -- бесконечный цикл.
P.S. Алгоритм исправлен и дополнен.
_________________ Giggity giggity goo!
Последний раз редактировалось Foks Чт июн 30, 2011 16:41:13, всего редактировалось 5 раз(а).
Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32 Сообщений: 299 Откуда: Красноярск
Рейтинг сообщения:0
Падение яиц и ловля их уже решена проблема состоит только в сдвиговых регистрах, так как там надо хорошо постараться и тем более нет нигде простого примера реализации. Везде с кучей навеса, например термометр или матриц. А так чтобы с общим катодам нету.Если без сдвиговых регистров, то всё совершенно легко.
_________________ Все можно сделать, было бы желание!
Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32 Сообщений: 299 Откуда: Красноярск
Рейтинг сообщения:0
Мысли интересные (По поводу случайных чисел) Вот только столкнулся с неожиданной проблемой в амеге 8 на которой я разрабатывал без сдвиговых регистров выводов не хватает. Так что только сними.
_________________ Все можно сделать, было бы желание!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 238
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения