РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 1
  • 1
Архив - только для чтения
Люди добрые, помогите ATTINY13
Сообщение # 1        
duban93
аватар
  Постов: 1   U 
помогите пожалуйста, есть скетч, честно найденный в интернете.
под attiny13 для регулировки шим в 2 канала
сам нефига не разбираюсь особо, но есть ардуино уно и я смог сам кинуть сектч на атини и проверить
скетч был создан для 2 каналов, один из них инверсный
исправил, дописал задержку сколько надо, снизил частоту и счетчик, но
нужно чтобы регулировка осушествлялась не сразу 2-мя каналами, а отдельно но одновременно.
и выставить разную задержку, т.к. хочу чтобы один канал работал на 50% а второй на 70% и по итогу начинал тухнуть одновременно
скетч привожу ниже
все это для светильника в морской аквариум, типо закат, рассвет
щас на этом скетче все работает стабильно и правильно, но хочу больше регулировок
спасибо всем

Код
#define F_CPU 1200000UL
#include <avr/io.h>
#include <util/delay.h>

#define LED0 PB0 // OC0A
#define LED1 PB1 // OC0B

int main(void)
{
// Светидиоды:
DDRB |= (1 << LED0)|(1 << LED1); // выходы = 1
PORTB &= ~((1 << LED0)|(1 << LED1)); // по умолчанию отключены = 0
// Таймер для ШИМ:
TCCR0A = 0xA1; // режим ШИМ, неинверсный сигнал на выходе OC0A и OCR0B
TCCR0B = 0x01; // предделитель тактовой частоты
TCNT0=0; // начальное значение счётчика
OCR0A=0; // регистр совпадения A
OCR0B=0; // регистр совпадения B

while(1)
{
do // Нарастание яркости
{
OCR0A++;
OCR0B = OCR0A;
_delay_ms(70000); // Пауза 70 сек.
}
while(OCR0A!=155);
_delay_ms(14400000); // Пауза 4 часа.
do // Затухание
{
OCR0A--;
OCR0B = OCR0A;
_delay_ms(70000); // Пауза 70 сек.
}
while(OCR0A!=0);
_delay_ms(1000000); // Пауза 1000 сек.
}
}
Сообщение # 2        
msmmmm
аватар
  Постов: 891   Друзья 
duban93, ты же правил программу в более сложных местах, неужели не сможешь разделить управление каналами? Не приравнивай OCR0B = OCR0A; а проверяй, не достигло ли значение нужного верха (при нарастании) или нуля (при затухании) и инкрементируй или декрементируй отдельно, если не достигло. Типа
if(OCR0B != 100) OCR0B++; // и наоборот при затухании.

Более тусклый светильник быстрее достигнет как максимума, так и минимума яркости.
Сообщение # 3        
henopyccku5498
аватар
  Постов: 1   U 
А будешь делать именно на аттини?
Могу помощь. Но для этого мне нужны следующие тайминги:
1. длительность загорания 1, 2 канала (1,2 линии светодиодов)
2. длительность выключения 1, 2 канала (1,2 линии светодиодов)
3. длительность " светогого дня".
4. длительность "ночи"
5. по какой команде начинается процесс.
6. Ну и к каким ножкам должен подключаться 1 канал, 2 канал, кнопки управления
7. и какими параметрами вы планируете управлять.
ТОлько я программу пишу на атмел студио. Как в ардуино закачивать я честно говоря не знаю.

Добавлено (05.04.2020, 18:58)
---------------------------------------------
Ну и в каких временных интервалах эти 2 канала отностительно друг друга должны загораться?

  • Страница 1 из 1
  • 1
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA