Chip, на счет датчика тока тоже интересно... можно где-то с этим ознакомиться?
Попробовал Ваш код, лампа просто светит
Chip, на счет датчика тока тоже интересно... можно где-то с этим ознакомиться?
Попробовал Ваш код, лампа просто светит
Последний раз редактировалось knyaz2020; 21.11.2011 в 21:44.
А может это по этой причине?
Замечание по использованию attachInterrupt
Внутри функции обработки прерывания не работает delay(), значения возвращаемые millis() не изменяются. Возможна потеря данный передаваемых по последовательному соединению (Serial data) в момент выполнения функциии обработки прерывания. Переменные, изменяемые в функции, должным быть объявлены как volatile.
Мои проекты - Катер для рыбалки
попробовал исправленный код... яркость понизилась, но что-то не то... лампа как бы вспыхивает... т.э. пониженная яркость + произвольные вспышки до полной яркости
А если так
Я перенес detachInterrupt(0); в начало.PHP код:
int AC_pin = 10; // выход для симистора
volatile byte dim = 128; // уровень димирования (0-128) 0 = on, 128 = 0ff
void setup()
{
#include <avr/delay.h>
pinMode(AC_pin, OUTPUT);
attachInterrupt(0, FrontUp, RISING); //прерывание по изменению уровня с низкого на высокий
}
// Функция обработки прерывания на подъем
void FrontUp()
{
detachInterrupt(0);
int dimtime = (77*dim); // вычислим время отсечки
_delay_us(dimtime); // отсекаем лишнее
digitalWrite(AC_pin, HIGH); // включить симистор
_delay_us(200); // короткая пауза, чтобы обеспечить включение симистора
digitalWrite(AC_pin, LOW); // выключение симистора(он выключится когда полупериод достигнет нуля)
attachInterrupt(0, FrontDown, FALLING);
}
// Функция обработки прерывания на спад
void FrontDown()
{
detachInterrupt(0);
int dimtime = (79*dim); // вычислим время отсечки
_delay_us(dimtime); // отсекаем лишнее
digitalWrite(AC_pin, HIGH); // включить симистор
_delay_us(200); // короткая пауза, чтобы обеспечить включение симистора
digitalWrite(AC_pin, LOW); // выключение симистора(он выключится
attachInterrupt(0, FrontUp, RISING);
}
void loop()
{
if(dim > 0) {dim--; } else { dim=128; } // пример уменьшения яркости лампы
}
Последний раз редактировалось Mastar; 21.11.2011 в 22:26.
Мои проекты - Катер для рыбалки
В моем примере я правильно сделал? Если отключается прерывание, то тогда можно любую туда помещать?
Последний раз редактировалось Mastar; 21.11.2011 в 22:28.
Мои проекты - Катер для рыбалки
Только пример с моей ошибкой
Я подправил
200мкс не мало для открытия триака?
Последний раз редактировалось Chip; 21.11.2011 в 22:28.
Код был с ошибкой еще раз попробуй
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)