Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Плавное мигание светодиода

Страниц (4): [1] 2 3 4 »
 

1. maratino - 18 Января, 2014 - 21:41:54 - перейти к сообщению
Добрый день форумчане.
Кто поможет разобраться с кодом? Св-диод плавно зажигается, но зараза, гаснет резко. Просьба чайника
1) Прокомментировать код по строчно
2) Что надо добавить или изменить, что бы гаснул плавно?

$regfile = "attiny2313.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 8
$framesize = 24

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1

Dim A As Byte

Do

For A = 0 To 255
Pwm1a = A
Waitms 5

For A = 255 To 0 Step -5
Pwm1a = A
Waitms 5
Next A

Loop

End
Next
2. Predator - 19 Января, 2014 - 00:28:24 - перейти к сообщению
я не понял, что это за язык, но по моему надо так:
CODE:


For A = 0 To 255 // начать первый цикл (разгорается)
// шаг равен 1?
Pwm1a = A
Waitms 5
Next A // закрыть первый цикл

// максимальная яркость

For A = 255 To 0 Step -5 // начать второй цикл (потухает)
// шаг равен -5?
Pwm1a = A
Waitms 5
Next A // закрыть второй цикл
// нулевая яркость



а теперь нюансы: 1) что такое Do, Loop, End, Next в этом языке я не знаю - возможно всё так и надо..... и всё дело в шаге : тухло в 5 раз быстрее....
2) может оказаться так, что максимальная яркость на самом деле минимальная и наоборот это зависит от схемы включения.
3. morokoriss - 19 Января, 2014 - 02:23:02 - перейти к сообщению
Наверно это basic либо visual basic
(Добавление)
Хотя оператора wait я там не припомню.
(Добавление)
Bascom AVR это
(Добавление)
basic подобный язык, вот и похож
4. maratino - 19 Января, 2014 - 16:20:10 - перейти к сообщению
PredatorНаподобие Qbasic. Bascom AVR. Ваш код что то не хочет работать. Плавное зажигаие у меня получается регулировать, а вот что бы плаво гаснул, ну ни как Тащусь
5. morokoriss - 19 Января, 2014 - 20:40:01 - перейти к сообщению
Используйте для примера скетч ардуиновский из примеров. Там замечательно всё работает. И загорается и гаснет плавно.
(Добавление)
/*
Пример управления яркостью светодиода
на выходе 9 контроллера Arduino
функцией analogWrite().
*/
int brightness = 0; // уставливаем начально значение яркости
int fadeAmount = 5; // шаг приращения/убывания яркости

void setup() {
// устанваливаем пин 9 в режим выхода
pinMode(9, OUTPUT);
}

void loop() {
// устанавливаем значение широты импульса на выходе 9
// задавая яркость светодиода
analogWrite(9, brightness);

// измением значение в переменной для яркости
brightness = brightness + fadeAmount;

// при достижение крайних значений для яркости
// меняем знак переменной шага приращения/убывания яркости
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// делаем паузу для достижения плавного наращивания/убывания яркости
delay(30);
}
6. maratino - 19 Января, 2014 - 20:45:31 - перейти к сообщению
Спасибо за помощь! Все равно нечего не понял. Если не трудно, скиньте код, а дальше я постараюсь разобраться. Я так понял, код на Си
7. morokoriss - 19 Января, 2014 - 20:47:56 - перейти к сообщению
шаги разные, тухнуть быстрее будет. в 5 раз. Может поэтому Вам кажется что сразу тухнет. Попробуйте Step -1 во втором цикле
(Добавление)
В примере из скетча шаги одинаковые, как видно, только временная задержка после каждого шага 30мс. Так плавнее будет. Попробуйте.
(Добавление)
For A = 0 To 255 // начать первый цикл (разгорается)
// шаг равен 1?
Pwm1a = A
Waitms 30
Next A // закрыть первый цикл

// максимальная яркость

For A = 255 To 0 Step -1 // начать второй цикл (потухает)
// шаг равен -5?
Pwm1a = A
Waitms 30
Next A // закрыть второй цикл
// нулевая яркость
8. Петр Киселев - 25 Января, 2014 - 10:45:55 - перейти к сообщению
maratino, вот ссылка по управлению яркостью свечения светодиода:

http://arduino.ru/Tutorial/Fade

Там все просто. Есть комментарии. Плюс сообщение morokoriss.
9. maratino - 25 Января, 2014 - 15:01:36 - перейти к сообщению
Да вот попросили сделать ПАДАЮЩИЙ МЕТЕОРИТ . Думал как то разберусь. А не то то
С миганием вроде разобрался в БАСКОМЕ. А вот как сделать плавное падение??? Жуть!!!
10. Петр Киселев - 25 Января, 2014 - 18:18:30 - перейти к сообщению
Надо кроме погасания еще и перемещение его делать.
(Добавление)
Под определенным углом к горизонту.
11. elmot - 25 Января, 2014 - 21:03:26 - перейти к сообщению
ыых. на светодиодной ленте на раз бы сделал
12. maratino - 25 Января, 2014 - 21:44:55 - перейти к сообщению
как это? интересно стало. каждый св-диодик будет гореть? Замешательство
13. Петр Киселев - 25 Января, 2014 - 22:14:04 - перейти к сообщению
Бегущий огонек. Сверхъяркие светодиоды. И расстояние от них подобрать.
(Добавление)
Так можно реализовать хоть метеоритный дождь! Молодец, elmot!
14. Vladimir72 - 25 Января, 2014 - 22:18:03 - перейти к сообщению
Вот простенький код на Си в CodeVision.
CODE:
/*****************************************************
бегущие огни.
*****************************************************/

#include <mega8.h>
#include <delay.h>

void main(void)
{
unsigned char temp;
DDRC=0x00;
PORTC.0=1;
DDRD=0xFF;
PORTD=0x00;

while(1)
{
if(PINC.0==0);
{
temp=0x80; // Начальное значение 0b10000000

while(temp !=0) // пока темп не равно нулю
{
PORTD=temp;
temp=temp>>1; // сдвигаем разряды
delay_ms(100);
}
else
{
temp=0x01; //0b00000001

while(temp !=0)
{
PORTD=temp;
temp=temp<<1;
delay_ms(100);
}
}
} }
}
15. elmot - 25 Января, 2014 - 22:24:01 - перейти к сообщению
Вот, нарезанная на куски китайская светодиодная лента. Могу нарисовать что угодно.
http://www.youtube.com/watch?v=-myqZzcjlvk