RGB индикатор заряда батареи на ATtiny45

Тема в разделе 'Другие интересные разработки', создана пользователем INFERION, 6 ноя 2010.

  1. Fonarik

    Fonarik Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    помоему на много интересней будет самому это чудо собрать и прошить.
    индикатор этот нереально класный, всю ноч сидел любовался его работой. правда нужно под мои светики откалибровать.
    вчера заменил синий светодиод на сверхяркий. сразу же белый стал белым а фиолетовый фиолетовым.реально захватывает
     
  2. B.E.S.

    B.E.S. Модератор Staff Member

    Re: RGB индикатор заряда батареи на ATtiny25

    Хмм...А есть возможность заснять видео?
     
  3. Fonarik

    Fonarik Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    да, сегодня видео будет
     
  4. suslox

    suslox Пушистикс Staff Member

    Re: RGB индикатор заряда батареи на ATtiny25

    светодиод нужен трехцветный в одном корпусе или как?
     
  5. INFERION

    INFERION Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    Нет. Три 0603 светодиода. Я не знаю RGB светиков с такой распиновкой, как тут требуется. Можно конечно и обычный RGB светик подключить, но придётся заюзать ресет и убрать из схемы резистор на 100 Ом...
     
  6. anton932

    anton932 Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    Народ требует видео! :)
     
  7. B.E.S.

    B.E.S. Модератор Staff Member

    Re: RGB индикатор заряда батареи на ATtiny25

    Сказали же,что выложат...
     
  8. INFERION

    INFERION Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    У Фонарика не получается нормально видео заснять...

    Залил вторую версию программы в драйвер (84-я тинька). Работает как и задумано. Теперь яркость и цвет анимации не зависят от напряжения питания. Осталось достать 45-ю тиньку и слепить финальную версию индикатора. Программа весит больше 2-х килобайт. Вот такой вот монстрик получился (2 килобайта это очень много для МК)...
     
  9. suslox

    suslox Пушистикс Staff Member

    Re: RGB индикатор заряда батареи на ATtiny25

    да 2 кило да еще и на асм - это очень серьезно)
     
  10. Armer

    Armer Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    Что-то, да, великовата. Впрочем, ты там еще и дополнительных функций натолкал...
    Я недавно решил сделать подсветку для ванны, но тратится на заводские примочки не хотелось, поэтому тупо насверлил в ней дырок 4,9 мм, навтыкал внатяг 8 трехцветных светодиодов и снаружи промазал их герметиком. Блок управления был на tiny13 плюс 3 мосфета, т.к. светодиоды были включены впараллель. Программа заняла 225 слов (450 байт). В ней забита таблица с RGB значениями для 11 цветов (можно расширить). Цвет выбирается последовательно одной кнопкой, причем переключение происходит плавно, примерно за 1,5 секунды. Если выбрать 11й цвет (тусклый белый), то через пару секунд включается режим автоматической смены цвета, в котором программа случайным образом выбирает цвет с 1-го по 10-й и меняет их с интервалом в 30 сек. Цвет повторяться не может, если индекс очередного выбранного цвета совпадет с предыдущим, индекс смещается на 3, чтобы цвет даже близко по оттенку не совпал :) Отключение авто-режима по нажатию кнопки.
    Единственное, что меня смущает в моей подсветке, так это частота работы программного ШИМ-а - порядка 150 Гц при частоте встроенного генератора 9,6 МГц и глубине цвета 8 бит. Быстрее не получилось, хотя голову по этому поводу не сильно грел. Вообще, изящнее здесь было бы использовать контроллер с 3-х канальным аппаратным ШИМ-ом, жаль атмел таких не делает в 8-выводном корпусе.
     
  11. EVIL_USER

    EVIL_USER Модератор Staff Member

    Re: RGB индикатор заряда батареи на ATtiny25

    Я тоже сначала удивился насчёт 2Кб, потом посмотрел первый пост, там же почти кил под базу.
    Если бы 2Кб чистого кода, тогда да, многовато, а так нормально.
     
  12. INFERION

    INFERION Пользователь

    Re: RGB индикатор заряда батареи на ATtiny25

    Да, сама программа весит 648 байт (вариант на 45-ю), и база 1536 байт...
    Да, кстати. Предварительный код, который работает на 84-й, но на 45-й ещё не испытан:
    [spoiler:ibzj2fbg]
    Код:
    ;Программа для RGB индикатора заряда Li-ion батареи на ATtiny45 (8MHz)
    
    	.INCLUDE "tn45def.inc"
    
    ;Векторы прерываний
    
    	rjmp	RESET
    	rjmp	INT_0
    	rjmp	PCI_0
    	rjmp	CompA1
    	rjmp	Over1
    	rjmp	Over0
    	rjmp	EE_RDY
    	rjmp	AComp
    	rjmp	ADComp
    	rjmp	CompB1
    	rjmp	CompA0
    	rjmp	CompB0
    	rjmp	WDT
    	rjmp	USISTR
    	rjmp	USIOvf
    
    ;RESET:
    INT_0:
    PCI_0:
    CompA1:
    Over1:
    ;Over0:
    EE_RDY:
    AComp:
    ADComp:
    CompB1:
    ;CompA0:
    CompB0:
    WDT:
    USISTR:
    USIOvf:	reti
    
    
    ;Конфигурация
    
    RESET:	Ldi	R16, HIGH(RAMEND)	;инициализация стека
    	out	SPH, R16
    	Ldi	R16, LOW(RAMEND)
    	out	SPL, R16
    
    	ldi	R16, 0b10000000	;Отключить аналоговый компаратор
    	out	ACSR, R16
    
    	ldi	R16, 0b00010000	;Выключить цифровой входной буфер на PB4
    	out	DIDR0, R16
    
    	ldi	R16, 0b10000010	;ИОН 1,1V, измерение на PB4
    	out	ADMUX, R16
    
    	ldi	R16, 0b00000011	;Запуск таймера0, clk/64
    	out	TCCR0B, R16
    
    	ldi	R16, 0b00010010	;Включение CompA0 и Over0
    	out	TIMSK, R16
    
    	ldi	R16, 0b00100100	;PB2 и PB5 - подтягивание
    	out	PORTB, R16
    
    	ldi	R16, 0b00000011	;PB0 и PB1 - выходы
    	out	DDRB, R16
    
    	ldi	R16, 0b00001100	;PCI_0 на PB2 и PB3
    	out	PCMSK, R16
    
    	ldi	R16, 0b00100000	;включить PCI_0
    	out	GIMSK, R16
    
    
    
    
    ;Спящий режим
    
    loop:	cli
    	sbis	PINB, 2
    	rjmp	pon
    	sbic	PINB, 3
    	rjmp	pon
    	sbic	GPIOR1, 2
    	rjmp	pon
    	tst	R7
    	brne	pon
    	tst	R8
    	brne	pon
    	tst	R9
    	brne	pon
    
    	clr	R16		;Выключить АЦП
    	out	ADCSRA, R16
    	ldi	R17, 0b10110000
    	ldi	R16, 0b10110100	;BOD Sleep, Sleep, режим Power-down, BOD Sleep Enable
    	out	MCUCR, R16
    	out	MCUCR, R17	;BOD Sleep, Sleep, режим Power-down
    	sei
    	Sleep
    
    pon:	cli
    	ldi	R16, 0b00100000	;Sleep, режим Idle
    	out	MCUCR, R16
    	ldi	R16, 0b10000110	;Включить АЦП, тактовая clk/64
    	out	ADCSRA, R16
    	sei
    	Sleep
    	rjmp	loop
    
    
    
    
    ;Праграммный ШИМ RGB каналов
    
    Over0:	ldi	R16, 0b10000001	;Сбросить и остановить предделитель
    	out	GTCCR, R16
    
    	clr	R16		;Сбросить таймер
    	out	TCNT0, R16
    
    	sei			;Пропустить compA0
    	nop
    	cli
    
    	sbic	GPIOR1, 6	;Запустить зелёный, если горел красный
    	rjmp	green
    
    	sbic	GPIOR1, 7	;Запустить синий, если горел зелёный
    	rjmp	blue
    
    
    	sbic	PINB, 2		;Загрузить 3-й канал, если бит сброшен
    	rjmp	clrm3
    
    	sbic	GPIOR1, 5	;Загрузить, если не загружен
    	rjmp	setm1
    	clr	R28
    	out	GPIOR1, R28
    
    	ldi	R25, 255	;Цвет анимации 3-го канала (заряд батареи)
    	ldi	R26, 255
    	ldi	R27, 255
    	ldi	R29, 2		;Скорость анимации
    	sbi	GPIOR1, 5	;Включить анимацию
    	rjmp	setm
    
    
    clrm3:	sbis	GPIOR0, 0	;Загрузить 2-й канал, если бит установлен
    	rjmp	clrm2
    
    	sbic	GPIOR1, 4	;Загрузить, если не загружен
    	rjmp	setm1
    	clr	R28
    	out	GPIOR1, R28
    
    	ldi	R25, 0		;Цвет анимации 2-го канала (низкий заряд батареи)
    	ldi	R26, 0
    	ldi	R27, 0
    	ldi	R29, 3		;Скорость анимации
    	sbi	GPIOR1, 4	;Включить анимацию
    	rjmp	setm
    
    
    clrm2:	sbis	PINB, 3		;Загрузить 1-й канал, если бит установлен
    	rjmp	clrm1
    
    	sbic	GPIOR1, 3	;Загрузить, если не загружен
    	rjmp	setm1
    	clr	R28
    	out	GPIOR1, R28
    
    	ldi	R25, 0		;Цвет анимации 1-го канала (фон)
    	ldi	R26, 255
    	ldi	R27, 255
    	ldi	R29, 1		;Скорость анимации
    	sbi	GPIOR1, 3	;Включить анимацию
    	rjmp	setm
    
    
    clrm1:	clr	R28		;Корректное выключение анимации
    	out	GPIOR1, R28
    	mov	R24, R28
    	rjmp	red
    
    setm:	sbi	GPIOR1, 2
    
    
    setm1:	sbic	GPIOR1, 1	;Увеличивать множитель, если 1-й бит сброшен
    	rjmp	lessm		;Иначе уменьшать
    
    	add	R28, R29
    	brcc	okm
    	ser	R28
    	mov	R24, R28
    	ldi	R28, 127
    	in	R16, GPIOR1	;Инвертировать 0-й бит
    	ldi	R17, 0b00000001
    	eor	R16, R17
    	out	GPIOR1, R16
    	sbic	GPIOR1, 0
    	rjmp	red
    	sbi	GPIOR1, 1
    	ser	R28
    	rjmp	red
    
    lessm:	sub	R28, R29
    	brcc	okm
    	clr	R28
    	mov	R24, R28
    	ldi	R28, 127
    	in	R16, GPIOR1	;Инвертировать 0-й бит
    	ldi	R17, 0b00000001
    	eor	R16, R17
    	out	GPIOR1, R16
    	sbic	GPIOR1, 0
    	rjmp	red
    	clr	R28
    	out	GPIOR1, R28
    	rjmp	red
    
    okm:	sbis	GPIOR1, 0
    	mov	R24, R28
    
    
    
    	;R1 - Red_main
    	;R2 - Green_main
    	;R3 - Blue_main
    
    	;R4 - Red_comp
    	;R5 - Green_comp
    	;R6 - Blue_comp
    
    	;R7 - Red_damped
    	;R8 - Green_damped
    	;R9 - Blue_damped
    
    	;R25 - Red_mixing
    	;R26 - Green_mixing
    	;R27 - Blue_mixing
    
    	;R24 - color_ratio
    	;R28 - Loop_ratio
    	;R29 - speed_ratio
    
    
    
    red:	mov	R10, R1
    	mov	R11, R7
    	mov	R12, R25
    	rcall	anima
    	sbi	GPIOR1, 6
    	mov	R7, R11
    
    	mov	R13, R4		;Компенсация зависимости яркости от напряжения питания
    	mov	R14, R11
    	rcall	mpy8u1		;R15 <- R11 x R4 / 255
    
    	out	OCR0A, R15	;Загрузка damped_comp
    	tst	R15
    	breq	zeror
    	sbi	PORTB, 0
    zeror:	clr	R16
    	out	GTCCR, R16	;Запустить предделитель
    	reti
    
    
    green:	mov	R10, R2
    	mov	R11, R8
    	mov	R12, R26
    	rcall	anima
    	sbi	GPIOR1, 7
    	cbi	GPIOR1, 6
    	mov	R8, R11
    
    	mov	R13, R5		;Компенсация зависимости яркости от напряжения питания
    	mov	R14, R11
    	rcall	mpy8u1		;R15 <- R11 x R5 / 255
    
    	out	OCR0A, R15	;Загрузка damped_comp
    	tst	R15
    	breq	zerog
    	sbi	PORTB, 1
    zerog:	clr	R16
    	out	GTCCR, R16	;Запустить предделитель
    	reti
    
    
    blue:	mov	R10, R3
    	mov	R11, R9
    	mov	R12, R27
    	rcall	anima
    	cbi	GPIOR1, 7
    	mov	R9, R11
    
    	mov	R13, R6		;Компенсация зависимости яркости от напряжения питания
    	mov	R14, R11
    	rcall	mpy8u1		;R15 <- R11 x R6 / 255
    
    	out	OCR0A, R15	;Загрузка damped_comp
    	tst	R15
    	breq	zerob
    	sbi	PORTB, 0
    	sbi	PORTB, 1
    
    
    zerob:	sbis	PINB, 2		;Корректное выключение
    	rjmp	oka
    	sbic	PINB, 3
    	rjmp	oka
    
    	clr	R1		;Корректное выключение индикатора
    	clr	R2
    	clr	R3
    	cbi	GPIOR0, 0
    	clr	R16
    	out	GTCCR, R16	;Запустить предделитель
    	reti
    
    oka:	in	R30, ADCL	;Подготовка данных с АЦП
    	in	R31, ADCH
    
    	subi	R30, 0x84
    	sbci	R31, 0x02
    	brcc	okv
    	clr	R30
    	clr	R31
    	rjmp	okv1
    okv:	tst	R31
    	breq	okv1
    	ser	R30
    	clr	R31
    
    okv1:	cpi	R30, 108	;Вкл/выкл анимации севшей батареи
    	brcc	hibat
    	sbi	GPIOR0, 0
    	rjmp	lobat
    hibat:	cpi	R30, 118
    	brcs	lobat
    	cbi	GPIOR0, 0
    
    lobat:	mov	R16, R30	;Загрузка данных RGB индикатора
    	clr	R17
    
    	lsl	R30		;x6
    	rol	R31
    	lsl	R30
    	rol	R31
    	add	R30, R16
    	adc	R31, R17
    	add	R30, R16
    	adc	R31, R17
    
    	subi	R31, -0xA	;+2560
    
    	lpm
    	mov	R1, R0		;Загрузить Red
    
    	ldi	R16, 1
    	add	R30, R16
    	adc	R31, R17
    	lpm
    	mov	R2, R0		;Загрузить Green
    
    	add	R30, R16
    	adc	R31, R17
    	lpm
    	mov	R3, R0		;Загрузить Blue
    
    	add	R30, R16
    	adc	R31, R17
    	lpm
    	mov	R4, R0		;Загрузить Red_comp
    
    	add	R30, R16
    	adc	R31, R17
    	lpm
    	mov	R5, R0		;Загрузить Green_comp
    
    	add	R30, R16
    	adc	R31, R17
    	lpm
    	mov	R6, R0		;Загрузить Blue_comp
    
    	sbi	ADCSRA, 6	;Start Conversion
    	clr	R16
    	out	GTCCR, R16	;Запустить предделитель
    	reti
    
    
    
    
    mpy8u1:	clr	R15		;R15 <- R14 x R13 / 255
    	ldi	R16, 8
    	lsr	R14
    m8u_0:	brcc	m8u_1
    	add 	R15, R13
    m8u_1:	ror	R15
    	ror	R14
    	dec	R16
    	brne	m8u_0
    	tst	R14
    	breq	m8u_2
    	inc	R15
    m8u_2:	ret
    
    
    anima:	sbis	GPIOR1, 2	;Пропустить анимирование, если ноль
    	rjmp	damper
    
    	cp	R10, R12	;Анимирование
    	breq	damper		;Перейти к сглаживанию, если равно
    	brcs	lessa		;Перейти если main < mixing
    
    	mov	R14, R10	;main - mixing = X
    	sub	R14, R12
    	mov	R13, R24
    	rcall	mpy8u1		;( X x color_ratio ) / 255 = Y
    	sub	R10, R15	;main - Y = main
    	rjmp	damper
    
    
    lessa:	mov	R14, R12	;mixing - main = X
    	sub	R14, R10
    	mov	R13, R24
    	rcall	mpy8u1		;( X x color_ratio ) / 255 = Y
    	add	R10, R15	;main + Y = main
    
    
    damper:	cp	R10, R11	;Сглаживание цветопередачи
    	breq	loadd		;Перейти к загрузке, если равно
    	brcs	lessd		;Перейти если main < damped
    
    	mov	R16, R10	;Увеличить damped на 1/16 разницы между main и damped
    	sub	R16, R11
    	lsr	R16
    	lsr	R16
    	lsr	R16
    	lsr	R16
    	tst	R16
    	brne	okd
    	inc	R16
    okd:	add	R11, R16
    	ret
    
    lessd:	mov	R16, R11	;Уменьшить damped на 1/16 разницы между main и damped
    	sub	R16, R10
    	lsr	R16
    	lsr	R16
    	lsr	R16
    	lsr	R16
    	tst	R16
    	brne	okd1
    	inc	R16
    okd1:	sub	R11, R16
    loadd:	ret
    
    
    
    
    compA0:	in	R16, PORTB	;Потушить все каналы
    	andi	R16, 0b11111100
    	out	PORTB, R16
    	reti
    
    
    
    
    	.ORG	0x500		;Начало массива RGB индикатора (последние 1536 байт памяти)
    
    	     ;R    G    B   RC   GC   BC    R    G    B   RC   GC   BC
    	.db 255,   0,   0, 255, 255, 255, 255,   1,   0, 254, 255, 255 ;0
    	.db 254,   1,   0, 254, 250, 251, 254,   2,   0, 253, 245, 246 ;2
    	.db 253,   2,   0, 252, 242, 243, 253,   3,   0, 252, 239, 239 ;4
    	.db 252,   3,   0, 251, 237, 236, 251,   4,   0, 250, 235, 233 ;6
    	.db 251,   5,   0, 250, 232, 231, 250,   5,   0, 249, 230, 229 ;8
    	.db 250,   6,   0, 248, 229, 227, 249,   6,   0, 248, 227, 225 ;10
    	.db 248,   7,   0, 247, 225, 224, 248,   7,   0, 247, 223, 222 ;12
    	.db 247,   8,   0, 246, 222, 220, 246,   9,   0, 245, 220, 218 ;14
    	.db 246,   9,   0, 245, 219, 216, 245,  10,   0, 244, 217, 214 ;16
    	.db 244,  11,   0, 243, 216, 213, 244,  12,   0, 243, 215, 211 ;18
    	.db 243,  12,   0, 242, 213, 210, 242,  13,   0, 241, 212, 209 ;20
    	.db 241,  14,   0, 241, 210, 207, 241,  15,   0, 240, 209, 206 ;22
    	.db 240,  15,   0, 240, 208, 205, 239,  16,   0, 239, 207, 203 ;24
    	.db 238,  17,   0, 239, 206, 202, 237,  18,   0, 238, 205, 201 ;26
    	.db 236,  19,   0, 238, 204, 200, 235,  20,   0, 237, 202, 198 ;28
    	.db 235,  21,   0, 237, 201, 197, 234,  21,   0, 236, 200, 196 ;30
    	.db 233,  22,   0, 235, 199, 195, 232,  23,   0, 235, 198, 194 ;32
    	.db 231,  24,   0, 234, 197, 192, 230,  25,   0, 234, 196, 191 ;34
    	.db 229,  26,   0, 233, 195, 190, 228,  27,   0, 233, 194, 189 ;36
    	.db 227,  28,   0, 232, 193, 188, 226,  29,   0, 232, 192, 187 ;38
    	.db 225,  30,   0, 231, 192, 186, 224,  31,   0, 230, 191, 185 ;40
    	.db 223,  32,   0, 230, 190, 184, 222,  33,   0, 229, 189, 183 ;42
    	.db 221,  34,   0, 229, 188, 182, 220,  36,   0, 228, 187, 181 ;44
    	.db 219,  37,   0, 228, 186, 180, 217,  38,   0, 227, 185, 179 ;46
    	.db 216,  39,   0, 227, 184, 178, 215,  40,   0, 226, 184, 177 ;48
    	.db 214,  42,   0, 226, 183, 176, 213,  43,   0, 225, 182, 176 ;50
    	.db 211,  44,   0, 224, 181, 175, 210,  45,   0, 224, 181, 174 ;52
    	.db 209,  46,   0, 223, 180, 173, 208,  48,   0, 223, 179, 172 ;54
    	.db 206,  49,   0, 222, 178, 171, 205,  51,   0, 222, 177, 171 ;56
    	.db 204,  52,   0, 221, 177, 170, 202,  53,   0, 221, 176, 169 ;58
    	.db 201,  55,   0, 220, 175, 168, 199,  56,   0, 220, 174, 167 ;60
    	.db 198,  58,   0, 219, 173, 166, 197,  59,   0, 218, 173, 166 ;62
    	.db 195,  60,   0, 218, 172, 165, 194,  62,   0, 217, 171, 164 ;64
    	.db 192,  63,   0, 217, 171, 163, 191,  65,   0, 216, 170, 163 ;66
    	.db 189,  67,   0, 216, 170, 162, 187,  68,   0, 215, 169, 161 ;68
    	.db 186,  70,   0, 215, 168, 160, 184,  72,   0, 214, 168, 160 ;70
    	.db 183,  73,   0, 214, 167, 159, 181,  75,   0, 213, 166, 158 ;72
    	.db 179,  77,   0, 213, 166, 158, 178,  78,   0, 212, 165, 157 ;74
    	.db 176,  80,   0, 212, 164, 156, 174,  82,   0, 211, 164, 155 ;76
    	.db 172,  84,   0, 210, 163, 155, 170,  86,   0, 210, 162, 154 ;78
    	.db 168,  88,   0, 209, 162, 153, 166,  90,   0, 209, 161, 153 ;80
    	.db 164,  92,   0, 208, 161, 152, 162,  94,   0, 208, 160, 151 ;82
    	.db 160,  96,   0, 207, 159, 150, 158,  99,   0, 207, 159, 150 ;84
    	.db 156, 101,   0, 206, 158, 149, 154, 103,   0, 206, 157, 148 ;86
    	.db 152, 105,   0, 205, 157, 148, 150, 107,   0, 205, 156, 147 ;88
    	.db 147, 110,   0, 204, 156, 147, 145, 112,   0, 204, 155, 146 ;90
    	.db 142, 114,   0, 203, 155, 145, 140, 117,   0, 203, 154, 145 ;92
    	.db 138, 119,   0, 202, 154, 144, 135, 122,   0, 201, 153, 144 ;94
    	.db 133, 124,   0, 201, 153, 143, 130, 127,   0, 200, 152, 143 ;96
    	.db 127, 130,   0, 200, 151, 142, 124, 133,   0, 199, 151, 141 ;98
    	.db 121, 136,   0, 199, 150, 141, 119, 139,   0, 198, 150, 140 ;100
    	.db 116, 142,   0, 198, 149, 140, 114, 145,   0, 197, 149, 139 ;102
    	.db 111, 148,   0, 197, 148, 138, 107, 151,   0, 196, 148, 138 ;104
    	.db 103, 155,   0, 196, 147, 137, 100, 159,   0, 195, 147, 137 ;106
    	.db  96, 163,   0, 195, 146, 136,  92, 166,   0, 194, 146, 136 ;108
    	.db  88, 170,   0, 193, 145, 135,  84, 174,   0, 193, 145, 134 ;110
    	.db  80, 178,   0, 192, 144, 134,  77, 182,   0, 192, 144, 133 ;112
    	.db  73, 187,   0, 191, 143, 133,  68, 192,   0, 191, 143, 132 ;114
    	.db  64, 198,   0, 190, 142, 132,  58, 203,   0, 190, 142, 131 ;116
    	.db  53, 208,   0, 189, 141, 131,  47, 214,   0, 189, 141, 130 ;118
    	.db  42, 220,   0, 188, 140, 130,  36, 227,   0, 188, 140, 129 ;120
    	.db  29, 234,   0, 187, 139, 129,  21, 243,   0, 187, 139, 128 ;122
    	.db  13, 251,   0, 186, 138, 128,   4, 255,   3, 186, 138, 127 ;124
    	.db   0, 253,   9, 185, 137, 127,   0, 247,  15, 184, 137, 126 ;126
    	.db   0, 241,  21, 184, 136, 126,   0, 235,  27, 183, 136, 125 ;128
    	.db   0, 230,  33, 183, 135, 125,   0, 224,  39, 182, 135, 124 ;130
    	.db   0, 218,  44, 182, 134, 124,   0, 212,  49, 181, 134, 123 ;132
    	.db   0, 207,  55, 181, 133, 123,   0, 201,  60, 180, 133, 122 ;134
    	.db   0, 196,  65, 180, 133, 122,   0, 190,  70, 179, 132, 121 ;136
    	.db   0, 185,  75, 179, 132, 121,   0, 180,  80, 178, 131, 120 ;138
    	.db   0, 175,  85, 178, 131, 120,   0, 170,  89, 177, 130, 119 ;140
    	.db   0, 166,  94, 177, 130, 119,   0, 161,  99, 176, 130, 119 ;142
    	.db   0, 156, 104, 176, 129, 118,   0, 152, 108, 175, 129, 118 ;144
    	.db   0, 147, 113, 175, 128, 117,   0, 143, 117, 174, 128, 117 ;146
    	.db   0, 138, 122, 174, 128, 116,   0, 133, 126, 173, 127, 116 ;148
    	.db   0, 129, 130, 173, 127, 116,   0, 125, 134, 172, 126, 115 ;150
    	.db   0, 121, 138, 172, 126, 115,   0, 117, 142, 171, 126, 114 ;152
    	.db   0, 113, 146, 171, 125, 114,   0, 109, 150, 170, 125, 113 ;154
    	.db   0, 105, 154, 170, 124, 113,   0, 101, 158, 169, 124, 113 ;156
    	.db   0,  97, 162, 169, 124, 112,   0,  93, 167, 168, 123, 112 ;158
    	.db   0,  88, 171, 168, 123, 111,   0,  84, 174, 167, 122, 111 ;160
    	.db   0,  81, 178, 167, 122, 111,   0,  77, 181, 166, 122, 110 ;162
    	.db   0,  74, 185, 166, 121, 110,   0,  70, 189, 165, 121, 109 ;164
    	.db   0,  67, 192, 165, 121, 109,   0,  63, 195, 164, 120, 108 ;166
    	.db   0,  60, 199, 164, 120, 108,   0,  56, 202, 163, 119, 108 ;168
    	.db   0,  53, 206, 163, 119, 107,   0,  49, 209, 163, 119, 107 ;170
    	.db   0,  46, 213, 162, 118, 107,   0,  43, 216, 162, 118, 106 ;172
    	.db   0,  39, 219, 161, 118, 106,   0,  36, 222, 161, 117, 105 ;174
    	.db   0,  33, 225, 160, 117, 105,   0,  30, 228, 160, 117, 105 ;176
    	.db   0,  27, 231, 159, 116, 104,   0,  24, 234, 159, 116, 104 ;178
    	.db   0,  21, 237, 158, 116, 104,   0,  18, 240, 158, 115, 103 ;180
    	.db   0,  16, 243, 157, 115, 103,   0,  13, 246, 157, 115, 102 ;182
    	.db   0,  10, 249, 156, 114, 102,   0,   7, 251, 156, 114, 102 ;184
    	.db   0,   4, 254, 155, 114, 101,   1,   1, 255, 155, 113, 101 ;186
    	.db   3,   0, 254, 154, 113, 101,   5,   0, 252, 154, 113, 100 ;188
    	.db   8,   0, 250, 153, 112, 100,  10,   0, 248, 153, 112,  99 ;190
    	.db  12,   0, 246, 152, 111,  99,  14,   0, 243, 152, 111,  99 ;192
    	.db  17,   0, 241, 151, 111,  98,  19,   0, 239, 151, 110,  98 ;194
    	.db  21,   0, 237, 150, 110,  98,  23,   0, 235, 150, 110,  97 ;196
    	.db  26,   0, 232, 149, 109,  97,  28,   0, 230, 149, 109,  97 ;198
    	.db  30,   0, 228, 149, 109,  96,  32,   0, 226, 148, 108,  96 ;200
    	.db  34,   0, 224, 148, 108,  96,  36,   0, 222, 147, 108,  95 ;202
    	.db  38,   0, 220, 147, 107,  95,  40,   0, 218, 146, 107,  95 ;204
    	.db  42,   0, 216, 146, 107,  94,  44,   0, 214, 145, 106,  94 ;206
    	.db  46,   0, 212, 145, 106,  94,  48,   0, 210, 144, 106,  93 ;208
    	.db  50,   0, 208, 144, 105,  93,  52,   0, 206, 143, 105,  93 ;210
    	.db  54,   0, 204, 143, 105,  92,  56,   0, 202, 142, 105,  92 ;212
    	.db  58,   0, 200, 142, 104,  92,  60,   0, 198, 141, 104,  91 ;214
    	.db  62,   0, 196, 141, 104,  91,  63,   0, 194, 140, 103,  91 ;216
    	.db  65,   0, 192, 140, 103,  91,  67,   0, 190, 139, 103,  90 ;218
    	.db  69,   0, 189, 139, 103,  90,  71,   0, 187, 138, 102,  90 ;220
    	.db  72,   0, 185, 138, 102,  89,  74,   0, 183, 137, 102,  89 ;222
    	.db  76,   0, 181, 137, 101,  89,  78,   0, 179, 136, 101,  89 ;224
    	.db  80,   0, 177, 136, 101,  88,  81,   0, 176, 136, 101,  88 ;226
    	.db  83,   0, 174, 135, 100,  88,  85,   0, 172, 135, 100,  87 ;228
    	.db  87,   0, 170, 134, 100,  87,  88,   0, 169, 134, 100,  87 ;230
    	.db  90,   0, 167, 133,  99,  87,  92,   0, 165, 133,  99,  86 ;232
    	.db  94,   0, 164, 132,  99,  86,  96,   0, 162, 132,  98,  86 ;234
    	.db  97,   0, 160, 131,  98,  85,  99,   0, 158, 131,  98,  85 ;236
    	.db 100,   0, 157, 130,  98,  85, 102,   0, 155, 130,  97,  85 ;238
    	.db 104,   0, 153, 129,  97,  84, 105,   0, 152, 129,  97,  84 ;240
    	.db 107,   0, 150, 128,  97,  84, 108,   0, 148, 128,  96,  83 ;242
    	.db 110,   0, 147, 127,  96,  83, 112,   0, 145, 127,  96,  83 ;244
    	.db 113,   0, 144, 126,  95,  83, 115,   0, 142, 126,  95,  82 ;246
    	.db 116,   0, 140, 125,  95,  82, 118,   0, 139, 125,  95,  82 ;248
    	.db 119,   0, 137, 124,  94,  81, 121,   0, 136, 124,  94,  81 ;250
    	.db 123,   0, 134, 123,  94,  81, 124,   0, 132, 123,  94,  81 ;252
    	.db 126,   0, 131, 122,  93,  80, 127,   0, 129, 122,  93,  80 ;254
    [/spoiler:ibzj2fbg]
     
  13. INFERION

    INFERION Пользователь

    Собрал версию по-лучше, которую уже можно и в массы пускать (некоторые моменты в предыдущей меня не устраивают). Вот новая схема:
    [attachment=6:gq5wxw8v]Индикатор v1.1.PNG[/attachment:gq5wxw8v]
    - Печатка чуть компактнее (8х9мм).
    - ШИМ реализован нормально. Можно теперь юзать и обычные RGB светики с общим анодом или катодом. Частота кадров намного выше (976Гц).
    - Отдельная база для компенсации яркости светиков от напряжения питания. Теперь и анимация не меняет свой цвет и яркость от напряжения питания.
    - Оптимизирован код, уменьшено потребление (весь индикатор ест в среднем 6мА), добавлено сглаживание шума АЦП, немного изменена анимация.
    - Пришлось пожертвовать RESET'ом, поэтому перепрошить без восстановителя фьюзов (или HV программатора) не получится. Но схему восстановителя я выкладывал, и программа для этой задачи уже есть...
    - Полевик заменил на более высокоомный, и убрал резистор на 4,7Ом. Вместо него теперь сопротивление канала полевика...

    Вот такая получилась цветовая схема:
    [attachment=3:gq5wxw8v]main.PNG[/attachment:gq5wxw8v]
    Готовые RGB светики сбалансированы и компенсировать разницу яркостей в каналах почти не приходится. А чем меньше компенсация, тем мягче работа...

    Вот печатка и схема в редактируемых форматах: [attachment=2:gq5wxw8v]Индикатор на ATtiny45.rar[/attachment:gq5wxw8v]
    А вот архив с программой, исходником, "дудкой", и готовыми батниками для прошивки через программатор на FT232RL: [attachment=1:gq5wxw8v]Indikator v1.4.rar[/attachment:gq5wxw8v]
    Сначала прошиваем фьюзы нового МК без отключения ресета, файлом "Fuse.bat", затем заливаем программу файлом "indikator.bat" и отключаем RESET файлом "Fuse_reset.bat". После этого прошить контроллер уже не получится, сначала придётся восстановить фьюз HV реаниматором. Схему своего варианта такого восстановителя я где-то тут выкладывал, программа к нему вот:
    [attachment=0:gq5wxw8v]reanimator.rar[/attachment:gq5wxw8v]

    Сейчас схема в дежурке кушает 30мкА (внешний делитель напряжения, на двух резисторах, в спячку уходить не умеет), во время работы 4...11мА. Яркость приличная, по-моему даже в избытке. Подключаю к нему матовый RGB светик с общим катодом. Видео снять так и не получается. Фотик колбасит от ШИМ, а говнокамеры не различают нормально всю цветовую палитру...
    Текущая версия программы 1,4, но может к моменту прочтения вами этого поста ниже уже будет по-свежее...

    Вот фотки самого девайса:
    [attachment=5:gq5wxw8v]Индикатор на ATtiny45_0.JPG[/attachment:gq5wxw8v][attachment=4:gq5wxw8v]Индикатор на ATtiny45_1.JPG[/attachment:gq5wxw8v]
     

    Вложения:

  14. sash19771

    sash19771 Пользователь

    Работа просто чума, сижу и любуюсь, а есть возможность сделать программу не RGB светодиодом а просто например 3 горят батарея полная, затем 2 и один и потом моргает, я бы такую штуку куда только бы не поставил)
     
  15. igor0804

    igor0804 Новичок

    Подскажите пожалуйста как прошить через "CodeVision AVR",какие фьюзы необходимо установить?
    Заранее спасибо...
     

Поделиться этой страницей