Страница 25 из 32 ПерваяПервая ... 1519202122232425262728293031 ... ПоследняяПоследняя
Показано с 241 по 250 из 315
  1. #241
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Тогда делай переменные статуса каждого триака и в прерываниях проверяй их статусы, если например статус 1-го триакаTRUE то резрешаем его включить и т.д.

  2. #242
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    По умолчанию Re: AC dimmer 220V 50Hz

    брр... толи я вообще нифига не понимаю.. толи пипец.. (

    можно привер кода? или хоть где можно об этом почитать?

  3. #243
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    По умолчанию Re: AC dimmer 220V 50Hz

    так.. ладно.. с этим буду разбираться позже..
    что на счет датчика тока? Давайте какбы пробовать чтонить на нем сделать...

  4. #244
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz


  5. #245
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    По умолчанию Re: AC dimmer 220V 50Hz

    битая ссылка..

  6. #246
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Я ее убрал ,потому как код не проверенный, не факт что работоспособный Хочу собрать устройство и проверить прежде чем выкладывать

  7. #247
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    По умолчанию Re: AC dimmer 220V 50Hz

    Вернусь к этому вопросу... Диммер сделали, но то что изначально я хотел так и не получается

    1. Перепробовал разные способы, но добиться включения и отключения прерывания по требованию (с подпрограммы) я не смог.
    2. Сделать бегущий огонь с плавным включением и выключением светодиодов в принципе можно (менять в подпрограмме AC_pin), но вот как быть, если хочется сразу 2-е лампы плавно включать и отключать?
    3. А реально ли сделать выход с любого цикла, любой подпрограммы, например по нажатию кнопки на loop (что-то типа ресета, в начало всей программы)?

    Прошу помощи. Саму цветомузыкальное устройство сделал, но вот без плавного зажига ламп как-то не совсем иестественно... хотелось бы до НГ доделать.
    Последний раз редактировалось knyaz2020; 29.12.2011 в 15:17.

  8. #248
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    214

    По умолчанию Re: AC dimmer 220V 50Hz

    Цитата Сообщение от knyaz2020 Посмотреть сообщение
    Прошу помощи. Саму цветомузыкальное устройство сделал, но вот без плавного зажига ламп как-то не совсем иестественно... хотелось бы до НГ доделать.
    Так выкладывай свой последний скетчь и окончательную схему.
    Мои проекты - Катер для рыбалки

  9. #249
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    По умолчанию Re: AC dimmer 220V 50Hz

    Всю схему устройства нарисовать сложно, так как она вышла довольно большая. Все это подготовлю и выложу отдельным проэктом, когда хоть на 90% закончу.

    Но вот давайте возьмем схему с первого поста, силовая часть у меня на ее основе. просто там не одна связка оптрон+симистор, а 6шт.

    На счет скетча, то он тоже большой, так как там для конкретно этого вопроса очень много лишнего (в моем устройстве есть LCD, который через шифт-регистор подключен, да и сам выход тоже через шифт). Так что я здесь выкладываю только то, что касается именно этого вопроса. Так как сейчас на работе, то точный скетч без ошибок не могу дать, но думаю идея в нем будет понятная:

    #include <avr/delay.h>
    int AC_pin = 10; // выход для симистора
    volatile uint16_t dim;
    uint8_t dimmer=0;// уровень димирования (0-255) 0 = max, 255 = min

    void setup()
    {
    pinMode(AC_pin, OUTPUT);
    }

    void loop()
    {
    PlavniyOgon();
    }

    void PlavniyOgon(){
    attachInterrupt(0, FrontUp, RISING); //прерывание по изменению уровня с низкого на высокий

    for (int i=1; i<6; i++){
    AC_pin=i;
    if(dimmer < 255) dimmer++; else dimmer=0; // уменьшения яркости лампы
    dim=33*dimmer;
    delay(50);
    }
    AC_pin=i+1;
    if(dimmer > 0) dimmer--; else dimmer=0; // увеличение яркости лампы
    dim=33*dimmer;
    delay(50);
    }

    detachInterrupt(0);
    }

    // Функция обработки прерывания на подъем
    void FrontUp()
    {
    detachInterrupt(0);
    _delay_us(dim+1000); // отсекаем лишнее
    digitalWrite(AC_pin, HIGH); // включить симистор
    _delay_us(20); // короткая пауза, чтобы обеспечить включение симистора
    digitalWrite(AC_pin, LOW); // выключение симистора(он выключится когда полупериод достигнет нуля)
    attachInterrupt(0, FrontDown, FALLING);
    }
    // Функция обработки прерывания на спад
    void FrontDown()
    {
    detachInterrupt(0);
    _delay_us(dim); // отсекаем лишнее
    digitalWrite(AC_pin, HIGH); // включить симистор
    _delay_us(20); // короткая пауза, чтобы обеспечить включение симистора
    digitalWrite(AC_pin, LOW); // выключение симистора(он выключится
    attachInterrupt(0, FrontUp, RISING);
    }
    Т.э. смысл в том, чтобы когда нужно, была возможность включить: attachInterrupt(0, FrontUp, RISING);, когда не нужно - выключить: detachInterrupt(0);

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

    Хэх.. вот только что попробовал снова... интересно.. но уже можно сказать это работает... странно что раньше не работало.. мо что-то не так было.
    Остается вопрос как сделать чтобы несколько сразу тухло и зажигалось... оптимальный код... хотя как с большим кодом вроде как понимаю.

    Да, и еще.. спрашивал раньше, можно ли с любой подпрограммы или цикла выйти по какому-то событию, типа ресет сделать?
    Последний раз редактировалось knyaz2020; 30.12.2011 в 01:44.

  10. #250
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Для прерывания цикла используй Break
    Break используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию. Он также используется для выхода из оператора switch

Страница 25 из 32 ПерваяПервая ... 1519202122232425262728293031 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •