Цитата: "Подключив микропроцессорную плату к осцилографу, и написав цикл digitalWrite(HIGH), и ниже digitalWrite(LOW), на осцилографе обнаружил довольно унылый меандр с частотой 50Гц. Это кошмар. Это крах, подумал я, на фоне требуемых 1Мгц."
Мне кажется автор промахнулся с 50 Гц. Иначе зачем тогда delay со своими миллисекундами. Я как раз в алгоритме псевдошимирования и исходил грубо из 50 Гц (время цикла включился-выключился для любого светодиода - 5мс). Симулятор, кстати, этот скетч тоже проиграл, но вместо 4 ступеней яркости свечения светодиодов я разглядел только 3 - сработал. Запор именно в недостоверности изменения скоростей взаимного переключения светодиодов... Собрал три куска скетчей в один, теперь светодиодный переключатель работает последовательно по трём программам...
Возникла ещё одна мысль про псевдошимирование (и автор статьи её укрепил): digitalWrite(HIGH)запускать в одном цикле, скажем N раз, а digitalWrite(LOW), скажем К раз следом в другом цикле. Соотношение коэффициентов будет регулировать яркость свечения светодиода...
Добавлено спустя 10 минут 35 секунд:Код:
////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Программа 3х режимного переключателя на 4 светодиода /
// с переменной частотой переключения (задействованы выводы 1-4)/
unsigned int n;
unsigned int k;
unsigned int i;
void setup()
{
for ( n = 1; n <= 4; n++)
{
pinMode(n, OUTPUT);
digitalWrite(n, LOW);
}
}
void loop()
{
for ( k = 200; k <= 2000; k=k+200)
{
for (n = 1; n <= 4; n++)
{
digitalWrite(n, HIGH);
delay(k);
digitalWrite(n, LOW);
}
}
for ( k = 100; k <= 1000; k=k+100)
{
for (n = 1; n <= 4; n++)
{
for (i = 1; i <= k; i=i+1)
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
delay(n);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(5-n);
}
}
}
for ( k = 200; k <= 2000; k=k+200)
{
for (n = 0; n <= 1; n=n+1)
{
for (i = 0; i <= 1; i=i+1)
{
if (i==1)
{
digitalWrite(1, HIGH);
digitalWrite(3, LOW);
}
else
{
digitalWrite(1, LOW);
digitalWrite(3, HIGH);
}
if (n==1)
{
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
}
else
{
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
}
delay(k);
}
}
}
}
//
// Конец /
//
////////////////////////
Во какая абра-кадабра получилась...Интересно, что на реальной схеме получится..?
Добавлено спустя 28 минут 28 секунд:Скачал свежий январский журнал радио. В разделе для начинающих я один со "своей свечой на палке-моталке".. остальные конструкции на микроконтроллерах.., да и большинство в журнале... Блин, как я отстал от остальных...Скоро вообще паять, клепать, резать, клеить перестану...