|
|
![]() ![]() |
|
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8162 раз(а) в 2385 сообщениях
|
![]()
Ну а суммарная скорость выхода диодов на режим одинаковая, или у тиньки значительно дольше это всё происходит? Проверять CLKPR не обязательно, можно просто ноль туда записать. Но если делитель на 8 отключен незапрограммированым фьюзом CKDIV8, то в этом необходимости нет...
Да и проверить частоту то можно банально секундомером и светодиодом на лапе. Главное знать что реально делает код, и написать программу дёргающую лапу через известное число тактов... [Исправлено: INFERION, 03.09.2013 в 14:46] |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]()
Mazafaka, ослик есть?
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
|
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]() Цитата:
Код сейчас скину, раз такая тема - он не сильно оптимален, конечно, но все же. Это управление дневным светом в машине - у меня одна лампа на ДРЛ и на поворотник. Чтобы не тянуть провод, который "говорит", что поворотник включен, будет стоять тайни, которая гасит ДРЛ при включении поворотника, а зажигает его через 2 сек после пропадания сигнала с поворотника же. |
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
Код программы. Пробелы убрались...жесть..
Суть в том, что я хочу зажигать лампу красиво - постепенно. Это основной наворот. Тупо зажечь моментально не проблема. Сейчас понятно, что это надо делать в отдельном цикле. Я писал после вина, так что в этой редакции fadIn идет глупо, проходя полностью опять цикл. Но вопрос в том, что на Меге все работает идеально, а на тайни нет. Т.к. прерываниями пользоваться не умею, то засекаю время, за которое нужно зажечь лампу и примерно через равные промежутки инкрементирую яркость. Причем чтобы не промахнуться и из-за того, что я не знаю, сколько времени идет на такт, делаю формулу, где яркость зависит от прошедшего времени. const byte turnLightPin = 4, dimmerPin = 3, DRLpin = 0; byte fadeFactor = 255, overallBrightness = 100; unsigned long startTime = 0; boolean fadeIn = false; // Флаг того, что надо начинать "зажигание" #define MIN_LEVEL overallBrightness = 20 #define MAX_LEVEL overallBrightness = 100 void setup(){ pinMode(DRLpin, OUTPUT); } void loop(){ const int waitTime = 1000; // Pause before turning DRL ON unsigned int senseValue = 0; unsigned long timePeriod = 0; senseValue = digitalRead(turnLightPin); if(senseValue == HIGH) { fadeIn = false; analogWrite(DRLpin, 0); } else { if(fadeIn == false) { startTime = millis(); fadeIn = true; fadeFactor = 0; } else { timePeriod = millis() - startTime; if(timePeriod > waitTime) { if(digitalRead(dimmerPin) == HIGH) {MIN_LEVEL;} else {MAX_LEVEL;} { if(fadeFactor<(255*overallBrightness)/100) { fadeFactor = ((timePeriod-waitTime)*overallBrightness)/400; analogWrite(DRLpin, fadeFactor); } else { analogWrite(DRLpin, 255*overallBrightness/100); } } } } } } [Исправлено: KNNK07, 03.09.2013 в 15:18] |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
|
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54
Сообщений: 7998
Сказал(а) спасибо: 934
Поблагодарили: 5203 раз(а) в 2785 сообщениях
|
![]() Цитата:
У меня тоже Arduino IDE. И фьюзы выставляю и шью в оболочке SinaProg (http://robocraft.ru/blog/10...). |
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
A ATMEL studio 6 не шьет,к стати? Только компилирует?
Я его поставил, но чот у меня перегруз по кол-ву кнопок от нее случился ![]() Хотя раньше я программы писал и в Borland Builder и ничо ![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
Да, такой
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
Я тут подумал
![]() Фишка в том, что ступенчатое изменение яркости актуально, НО на этом-то PWM не кончается. То есть в процессе изменения яркости с 20% до 100% наблюдаем явную "лестницу", а как только яркость достигла нужного уроавня, дальше светит ок, то есть мерцания нет. Это говорит о том, что сам по себе PWM работает хорошо. Но вот алгоритм его изменения работает херовато - такое впечатление, что от 20% (значение 51) до 100% (значение 255) яркость изменяется не +1, как это в коде подразумевается, а +20 где-то или типа того. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]()
Mazafaka,
Да, нет смысла делать каскад на транзисторе. Я вспомнил, в том случае когда это помогло проблемы были и на постоянной яркости. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
Предлагаю на "ты".
Уверен. Я ж математик как ни как ![]() Там условие в IF: fadeFactor<(255*overallBrightness)/100. overallBrightness/100 это целевой уровень яркости в % - она либо 0.2 либо 1. По сути - приглушенный свет, либо полный. waitTime это константа - 1 000. В итоге текущий уровень в пунктах это (timePeriod-waitTime)/4. Когда это конкретное значение достигнет 255, то "розжиг" прекратится. А значение достигнет 255, когда разница во времени будет 255*4 = 1020 миллисек. То есть получаем в итоге, что лампа зажигается 1.020сек. У меня вот только тут мысля - если это время будет "простреливать". Т.е. в рез-те вычислений будет получаться 256, то оно что будет класть реально в порт? Единицу? Если так, то есть подозрение, что ступенчатое изменение, видное мне, это как раз переполнение, которое заканчивается на физическом попадании в 255. Потому и моргает. Но с другой стороны, моргать тогда должно произвольно (и сильнее и слабее), но у меня ступенчатое повышение. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]()
Я без понятия, т.к. не знаю, как их "использовать".
Я тот же код заливаю в Мегу. Таймеры все прописываются во фьюзах? Видимо, в hardware.txt? Для IDE. В Мегу я ни бутлоадер ни фьюзы не прописывал - все пришло из китая в прописанном состоянии, тут ХЗ. Но попробую посмотреть. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 441
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
![]() |
![]() |
![]() ![]() |