Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Мерцающее сердце к 8 марта


Мерцающее сердце к 8 марта

Сообщений 1 страница 17 из 17

1

Купил своей девченке сережки и задумался как их оформитьт?!! Наткнулся на тему механической развертки и решил попробовать с минимальными затратами сделать свой вариант. Нашел коробочку под украшения, взял мегу8 и 6 светодиодов. Получилось 6 строк. Нарисовал рисунок сердца, замерял расстояния до начала горения и погасания светодиодов, и написал простенькую программу под это дело. При закрывании коробочки светодиоды начинают мигать примерно пол минуты, после чего в процессоре останавливается генератор и он ничего не потребляет. В качестве батарейки - разломал обычную 9вольтовую крону ( там 6 элементов) отрезал половинку элементов - получилось на вольтметре 4,7 вольта. Схема работает и от 3х вольт, но более тускло. фузы установил на внутренний генератор 8 мегагерц.

Код:
'8е марта (сердечко с механической разверткой)

'при размахивании светодиодами будет виден рисунок в виде сердечка
'_____**______**
'____*____**____*
'_____*________*
'______*_____*
'________*__*
'_________*

'PashaCompany@yandex.ru

$regfile = "m8def.dat"                                      ' говорим компилятору что у нас микропроцессор Atmega 8
$crystal = 8000000                                          ' говорим компилятору что процессор тактируется от генератора с частотой 8, 000 000 мегагерц

Config Timer0 = Timer , Prescale = 8                        ' конфигурируем таймер0 с делителем 8
On Timer0 Pulse :                                           ' выполнять подпрограмму pulse: от таймера


' конфигурируем порты, куда подключаем светодиоды ( плюсы )
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portb.7 = Output
Config Portd.7 = Output

' минусы
Config Portc.4 = Output
Config Portc.3 = Output
Config Portc.1 = Output
Config Portc.0 = Output
Config Portb.5 = Output
Config Portb.2 = Output

'устанавливаем порты в ноль
Reset Portc.4
Reset Portc.3
Reset Portc.1
Reset Portc.0
Reset Portb.5
Reset Portb.2

' называем порты (плюсовые)
Led1 Alias Portd.0
Led2 Alias Portd.1
Led3 Alias Portd.3
Led4 Alias Portd.4
Led5 Alias Portb.7
Led6 Alias Portd.7
' задаем переменные
Dim T As Word
Dim I As Byte
Dim S As Integer

Enable Interrupts                                           'разрешить прерывания
Enable Timer0                                               ' разрешить таймер 0


' начинаем главный цикл программы
Do

Disable Interrupts                                          ' запрещаем прерывания, чтобы не проскочить значения счетчика

' сравниваем переменную s с расчитанными параметрами времени загорания и погасания светодиодов
Select Case S

 Case 0 :                                                   ' если s = 0 то

    Set Led3                                                '  зажечь светодиод led3

 Case 1:

    Set Led2
 Case 13 :

    Set Led4
 Case 24 :

    Set Led1
 Case 33 :

    Set Led5
 Case 35 :

    Set Led1

 Case 45 :

    Set Led2

 Case 49 :

    Set Led6

 Case 54 :

    Set Led2

 Case 64 :

    Set Led1

 Case 66 :

    Set Led5

 Case 75:

    Set Led1

 Case 66 :

    Set Led4

 Case 98 :

    Set Led2

 Case 100 :

    Set Led1


 Case 5 :

    Reset Led3                                              ' погасить светодиод led3

 Case 6 :

    Reset Led2

 Case 18 :

    Reset Led4

 Case 29 :

    Reset Led1

 Case 38 :

    Reset Led5

 Case 40 :

    Reset Led1

 Case 50 :

    Reset Led2

 Case 54 :

    Reset Led6

 Case 55 :

    Reset Led6


 Case 59:

    Reset Led2

 Case 69 :

    Reset Led1

 Case 71:

    Reset Led5

 Case 80 :

    Reset Led1

 Case 91 :

    Reset Led4

 Case 103 :

    Reset Led2

 Case 104 :

    Reset Led1

End Select                                                  ' конец проверки

Enable Interrupts                                           ' разрешить прерывания


Loop                                                        ' конец основного цикла
End


' подпрограмма прерываний
Pulse:
Incr I                                                      'увеличить переменную I на единицу

If I = 2 Then                                               ' если i = 2 то
Incr S                                                      ' увеличить s на единицу
If S > 208 Then S = 0
I = 0


Incr T                                                      ' увеличить переменную Т на единицу. Переменная задает время работы схемы после подачи питания
If T > 60000 Then                                           ' Т=60000 примерно 30 секунд
T = 0
' выключаем все светодиоды
Reset Led1                                                  '  если
Reset Led2
Reset Led3
Reset Led4
Reset Led5
Reset Led6

Powerdown                                                   ' выключаем полностью процессор и задающий генератор. Последующее включение возможно временным разрывом цепи питания или сбросом reset
End If
End If
Return                                                      'вернутся в основной цикл

Отредактировано Pasha (2009-03-09 01:34:42)

0

2

Здраствуйте , хочю собрать такое для своей любимой)  , а не подскажите где взять hex прошивку?

0

3

Скомпилировать из исходника в первом посте.

0

4

но а если  я ещё этого не умею,  мне 15 лет)  (и как ставить fuses  в CodeVision  (P.S простите что всех дастаю такими тупыми темами
.

0

5

Как раз в 15 лет пора учится.
Качаешь Баском с официального сайта, устанавливаешь.
Копируешь код, вставляешь в баском, сохраняешь файл.
Нажимаешь F7, баском скомпилирует проект - получишь на выходе файлы с расширением bin и hex, которые нужно залить в контроллер с помощью программатора.

0

6

а то что в это коде русския зык это нечего ?   а что делать c fues

0

7

а нужен какойто спец чип?  специальная  atmega8 ?

0

8

hackerion написал(а):

а нужен какойто спец чип?  специальная  atmega8 ?

Pasha имел ввиду, что МК, идущий с завода, настроен на частоту 1 МГц.

0

9

Собрал схему, прошил всё как надо, питание 3v , включил светдодиоды моргают по очерёдность, но сердца нет и помине, всетодиоды обычные прозрачные не матовые. Что  делать

0

10

А если помахать вверх/вниз?

0

11

hackerion написал(а):

Что  делать

вот ссылка http://yadi.sk/d/UcWUhgYxCy2mb это весь проект, там и файлы прошивки. Полярность светодиодов правильная?
Через сколько времени светодиоды прекращают мигать? Через примерно пол минуты после включения все должно гаснуть.

Отредактировано Pasha (2013-11-19 22:09:40)

0

12

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

0

13

секунд  через 30 перестают

0

14

max написал(а):

на частоту 1 МГц.

Макс! Черт возьми, я и не пересмотрел код! В нем нет ни одной задержки! Все танцует на таймере! И до фене сколько компилятору указывать мегагерц в камне.

hackerion, не досмотрел я, прости, давно дело было. Какой программой прошиваешь? Все таки нужно фузы на 8 мгц выставить.
Если шьешь понипрогом - ставь галки как на скриншоте в первом посте.

Отредактировано Pasha (2013-11-19 22:29:57)

0

15

Я шью uni profom  и ltp 5 проводов///Бывает  (кстати я максим)
http://www.getchip.net/posts/025-unipro … -dlya-avr/

0

16

так что моему контроллеру капец???

0

17

Максим, я написал тебе личное сообщение. Не засоряем тему. Можешь даже позатирать лишние сообщения.

0


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Мерцающее сердце к 8 марта