роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: небольшие программы под заказ
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Доброго времени суток!
С ознакомлением МК, как наверно как и у многих, в голове появились множество проектов которые хочется реализовать. На данный момент, не без помощи местных форумчан, умею заливать прошивку в Atmega8 и писать простой код для мигания светодиодами.. но этого далеко не достаточно даже для простого "проекта" (управление освещением салона авто)
По личному опыту (знаю PHP) убедился, что на много легче учится на практике нежели тратить время на чтение литературы.

...потому, хочу найти человека, который мог бы писать небольшие программы и объяснить что к чему. Если найдется человек, то я могу оплачивать обучение Улыбка (в разумных пределах)

к примеру то же освещение автосалона:
открываем дверь
- плавно включается свет

закрываем дверь
- задержка (3-10 сек.)
- плавное затухание
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



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

Форум это много таких людей, которые (ну по крайней мере я) не сделают для вас ничего, но подскажут как делать и предостерегут от вероятных ошибок.
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Predator, согласен с Вами.
Я создал тему потому, что более месяца парился с этой задачей, а на форуме каждый пишет код по разному

например:
PORTD |= _BV(PD3); и PORTD.3=1; или #include <avr/io.h> и #include <mega8.h>

и получалось что у меня обработка кнопок на одном языке, ШИМ на другом, ну и т.п.

сейчас вроде нашел понятные мне статьи по теме..
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



ну вы-же понимаете, что PORTD |= _BV(PD3); и PORTD.3=1; выполняет одну и ту-же функцию: взвести PORTD.3 в единицу, а в своём коде вы можете использовать любую, удобную для вас, конструкцию. На вкус и цвет все фломастеры разные....
я например когда что-то показываю пользователям AVRов - вообще использую неадекватные, но понятные имена. А конкретный код будет зависеть от компилятора и используемых библиотек....
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Вот что у меня получилось:
CODE:
#include <mega8.h>
#include <delay.h>
void main(void)
{

PORTB=0x00;
DDRB=0x08;

PORTD=0x01;
DDRD=0x02;

ASSR=0x00;
TCCR2=0x6C;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x00;

while (1)
{
if ((PIND.0==0)&&(OCR2<0xff))
{
while(OCR2<0xff)
{
OCR2=OCR2+0x01;
delay_ms(1);
}
delay_ms(200);
}

if ((PIND.0!=0)&&(OCR2>0x00))
{
while(OCR2>0x00)
{
OCR2=OCR2-0x01;
delay_ms(1);
}
delay_ms(200);
}

delay_ms(100);
};
}


вроде работает Тащусь

(Отредактировано автором: 18 Августа, 2013 - 21:12:16)

 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



ну вот, ато прибедняетесь... я правда в АВРах не разбираюсь, но предположу, что OCR2 это регистр ШИМ. Не хватает только задержки 3-10 сек после закрывания двери.
Ну и еще кое-что я бы по другому сделал...
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



добавил защиту от дребезга (не знаю правильно ли)
и задержку перед гашением
CODE:

...
if ((PIND.0!=0)&&(OCR2>0x00)) /*если дверь закрыта и светодиод не погашен*/
{
delay_ms(10); /*ждем доли сек для проверки*/
if ((PIND.0!=0) /*если дверь закрыта*/
{
delay_ms(1000); /* задержка */
while(OCR2>0x00) /* затухание*/
{
...
{


вроде работает, но светодиод почему-то полностью не гаснет. С момента подкл-я питания к МК он оч. слабо, но горит Ламер
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



проверку на тему дребезга можно было не делать - у вас тут не единичное нажатие кнопки, а продолжительное удержание и отработка события тоже плавная и продолжительная. проверка дребезга сделана правильно, только для таких больших контактов, как в конечнике в двери машины надо милисекунд 100.
почему светодиод не гаснет полностью - это вопрос... надо почитать в датащите про модуль ШИМ повнимательнее, возможно даже при 0 в регистре там есть импульс в один такт......
 
 Top
Страниц (1): [1]
« Болталочка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru