Здравствуйте, представляю вам световые эффекты на ATmega88, ниже можно скачать готовые hex файлы, а также asm и inc.
Некоторые программы для ATmega88 для загрузки:
– Программа для отображения в воздухе – DANYK.WZ.CZ (мой старый домен) и улыбка (m88_adresa_smajl.hex)
– 1 светодиодная змея (m88_had1.hex)
– 4 светодиодных змеи (m88_had4.hex)
– 7 светодиодных змей (m88_had7.hex)
– Падающие кирпичи (m88_cihly.hex)
– Двоичный счетчик (m8_binarni_pocitadlo.hex)
– 2 блохи, бегущие друг против друга (m88_2blechy.hex)
– Световая змея (1 горящий светодиод) с плавным движением (яркость с модуляцией PWM) (m88_pwm8.hex)
– Улучшенная ШИМ гладкая змея, 3 светодиода горят (m88_pwm8_kvadr_3led_koment.hex)
Скачать все HEX файлы одним zip архивам можно – здесь
Скачать все ASM + inc файл одним zip архивом можно – здесь.
Схема подключения ATmega88 для программирования и разработки. Используется весь порт D. Выходы являются общими с программирующими выводами, и поэтому во время программирования необходимо отключать светодиоды.
Недавно я начал программировать микроконтроллеры Atmel AVR. Я купил несколько штук ATmega и ATtiny. Я создал простой программатор, подключенный через LPT. По сути, это соединительный кабель, несколько резисторов и источник питания 5 В (с 7805, конечно). В качестве среды разработки и моделирования я использую AVR Studio, загруженную с Atmel, а для программирования я использую PonyProg. Программирование осуществляется путем подключения сигналов MISO, MOSI, SCK и RESET к соответствующим контактам микропроцессора, а также подключения источника питания.
Первые эксперименты привели к появлению легких змей с ATmega8, AVR с 28 контактами и 8 КБ памяти. Я использую порт D, который имеет все 8 контактов и остается свободным даже во время разработки. В порту C немного отсутствует PC7, а PC6 используется в качестве сброса, поэтому у него всего 6 свободных контактов. Порт B используется для программирования и для кристалла для точной синхронизации, поэтому свободными остаются только 3 контакта. После экспериментов со световыми змеями я пришел к дисплею air light. Это матричный дисплей с механическим сканированием, полоса светодиодов отображает текст или изображения в воздухе благодаря постоянству зрения человеческого глаза или камеры. Сначала я попробовал параллельное сканирование, при котором все светодиоды могут гореть одновременно, но это не сработало. Поэтому я перенес последовательное сканирование, характерное тем, что всегда горит не более одного светодиода одновременно, и, таким образом, отображение получается четким (создаются не горизонтальные линии, а точки). Еще одним преимуществом является использование одного резистора для всех светодиодов. Схему программирования и разработки с помощью ATmega8 AVR и аналогичных устройств вы можете увидеть на схеме ниже.
Я также протестировал snakes и aerial display с небольшим 8-контактным разъемом ATtiny13, который имеет 1 КБ памяти и может использовать только 5 контактов (порт B). Выходы являются общими с программирующими выводами, и поэтому во время программирования необходимо отключать светодиоды. Сначала я сделал это вручную, но затем я нашел автоматический способ сделать это: сброс будет регистрировать 0 во время программирования, и поэтому NPN-транзистор закрывается и отключает светодиоды. В остальном все практически так же, как и в случае с другими AVR. Эту схему я мог бы использовать для отображения чисел с помощью 5 светодиодов разных цветов. Даже это дисплей использует последовательное сканирование, при котором одновременно загорается только один светодиод.
Наконец, я перешел к схеме ATmega32. Это большой 40-контактный микропроцессор со всеми четырьмя 8-контактными портами и памятью 32 КБ. В качестве порта программирования используется только порт B. Вход СБРОСА отдельный, не разделяемый с другой функцией. Эту схему я использовал для воздушного дисплея с 16 светодиодами на портах C и D. Необходимо было отключить установочный бит JTAGEN, который связывал контакты PC2…5 с альтернативными функциями. В этой схеме я использовал двойное последовательное сканирование. На каждом из двух портов всегда горит не более одного светодиода. Каждый 8 светодиодов имеет общий резистор. В дополнение к ручному сканированию (размахивание схемой в воздухе) я попытался присоединить печатную плату к двигателю и раскрутить ее, чтобы сформировать дисплей пропеллера. Я использовал мотор от 8-сантиметрового вентилятора ПК и механическую передачу мощности. Для этого двигателя это была большая нагрузка, и он вращался довольно медленно. В следующий раз я планирую использовать более мощный двигатель и индуктивную передачу напряжения с помощью катушек. Схема программатора ATmega32 аналогична схеме ATmega8, но в ней больше неиспользуемых контактов. Распиновку можно найти в техническом описании.
Ps: скачать pdf версию оригинала статьи можно – здесь.