РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

ФОРУМ НА ЭЛВО

РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ
  • БЛОГИ
  • НОВОЕ
  • СХЕМЫ
  • РАЗНОЕ
  • ТЕОРИЯ
  • ТЕЛЕВИДЕО
  • СВЕТОДИОД
  • МЕДТЕХНИКА
  • БЫТТЕХНИКА
  • ИЗМЕРИТЕЛИ
  • СПРАВОЧНИК
  • ТЕХНОЛОГИИ
  • РЕМОНТ СХЕМ
  • МОБИЛЬНИКИ
  • КОМПЬЮТЕРЫ
  • НАЧИНАЮЩИМ
  • ЗАРЯДКИ И АКБ
  • СИГНАЛИЗАЦИИ
  • АУДИОТЕХНИКА
  • АВТОВЕЛОМОТО
  • БЛОКИ ПИТАНИЯ
  • РАДИОПРИЁМНИКИ
  • МЕТАЛЛОИСКАТЕЛИ
  • МИКРОКОНТРОЛЛЕР
  • РАДИОПЕРЕДАТЧИКИ


    • Страница 1 из 1
    • 1
    Архив - только для чтения
    Люди добрые, помогите ATTINY13
    Сб, 29.02.2020, 18:01 | Сообщение # 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 сек.
    }
    }
    Сб, 29.02.2020, 22:45 | Сообщение # 2        
    msmmmm
    аватар
      Постов: 891   Друзья 
    duban93, ты же правил программу в более сложных местах, неужели не сможешь разделить управление каналами? Не приравнивай OCR0B = OCR0A; а проверяй, не достигло ли значение нужного верха (при нарастании) или нуля (при затухании) и инкрементируй или декрементируй отдельно, если не достигло. Типа
    if(OCR0B != 100) OCR0B++; // и наоборот при затухании.

    Более тусклый светильник быстрее достигнет как максимума, так и минимума яркости.
    Вс, 05.04.2020, 17:56 | Сообщение # 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