Перейти к содержанию

brusel

Members
  • Постов

    5
  • Зарегистрирован

  • Посещение

Весь контент brusel

  1. brusel

    Помощь с кодом

    может и не мое... и нахера такое советовать. Я и без вас знаю что мое, что не мое. Мне этот проект нада на один раз. Не хочешь помогать - лучше промолчи. одновременно нажмают "Старт" и "Стоп"  только дебилы, я для их обработчик этого события писать не буду? Вопрос к BARS. Помоги с таймером. мне некогда сейчас читать книжки, нада запускать станок.
  2. brusel

    Помощь с кодом

    Пришлось добавить еще одну кнопку "СТОП". Код ниже. Прошил тиньку, на макетке вроде работает, пауза 8 сек. #define F_CPU 1200000UL #define OUT PB2 #define OUT10 PB0 #define BUT_Start PB4 #define BUT_Stop PB3 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> // Обработчик прерывания PCINT0 ISR(PCINT0_vect) { _delay_ms (60); // антидребезг (использовать задержки в прерываниях некошерно, но пока и так сойдёт) if ((PINB & (1<<BUT_Stop)) == 0) // если нажата кнопка { PORTB &= ~((1<<OUT)|(1<<OUT10)); //выкл. } } int main(void) { // Пины кнопок DDRB &= ~((1<<BUT_Start)|(1<<BUT_Stop)); // входы PORTB |= (1<<BUT_Start)|(1<<BUT_Stop); // подтянуты // Пин светодиода DDRB |= (1<<OUT)|(1<<OUT10); // выход PORTB &= ~((1<<OUT)|(1<<OUT10)); // выключен GIMSK |= (1<<PCIE); // Разрешаем внешние прерывания PCINT0. PCMSK |= (1<<BUT_Stop); // Разрешаем по маске прерывания на ногах кнопки sei(); // Разрешаем прерывания глобально while (1) { _delay_ms (60); // антидребезг if ( (PINB & (1<<BUT_Start)) == 0 ) // если нажата кнопка { PORTB |= ((1<<OUT)|(1<<OUT10)); //вкл _delay_ms (8000); // пауза } PORTB &= ~(1<<OUT10); //выкл } } Что нужно: кнопка "Стар"т сразу включает 2 реле, одно из которых отключается через 8-10 сек. Второе остается включено пока не нажата кнопка "Стоп". Если кто-то подскажет как улучшить код, чтобы не было сбоев, буду очень благодарен.
  3. brusel

    Помощь с кодом

    проверял в протеусе пауза работает 7-8 секунд, как раз то что надо. Задача простая - управлять реле которое включится на 7-10 сек и отключится. Идеальный вариант добавить потенциометр для регулировки таймера. Может поможете с кодом, а то я пока не шарю. Данный пример где-то нашел и пробую.
  4. brusel

    Помощь с кодом

    Правильно? В протеусе вроде работает. Пауза где-то 7-8 сек. #define F_CPU 1200000UL #define OUT PB2 #define LED PB0 #define BUTTON1 PB4 #include <avr/io.h> #include <util/delay.h> int main(void) { // Пины кнопок DDRB &= ~((1<<BUTTON1)); // входы PORTB |= (1<<BUTTON1); // подтянуты // Пин светодиода DDRB |= (1<<LED)|(1<<OUT); // выход PORTB &= ~((1<<LED)|(1<<OUT)); // выключен while (1) { _delay_ms (50); // антидребезг if ( (PINB & (1<<BUTTON1)) == 0 ) // если нажата кнопка { PORTB |= ((1<<OUT)|(1<<LED)); //вкл _delay_ms (45000); // пауза } PORTB &= ~((1<<OUT)|(1<<LED)); //выкл } }
  5. brusel

    Помощь с кодом

    Привет, помогите сделать так, чтобы по нажатию кнопки на несколько секунд появлялся высокий уровень на выходах LED и OUT. #define F_CPU 1200000UL #define OUT PB2 #define LED PB0 #define BUTTON1 PB4 #include <avr/io.h> #include <util/delay.h> int main(void) { // Пины кнопок DDRB &= ~((1<<BUTTON1)); // входы PORTB |= (1<<BUTTON1); // подтянуты // Пин светодиода DDRB |= (1<<LED)|(1<<OUT); // выход PORTB &= ~((1<<LED)|(1<<OUT)); // выключен while (1) { _delay_ms (50); // антидребезг if ( (PINB & (1<<BUTTON1)) == 0 ) // если нажата кнопка { PORTB |= ((1<<OUT)|(1<<LED)); //вкл } _delay_ms (1000); // пауза PORTB &= ~((1<<OUT)|(1<<LED)); //выкл } }
×
×
  • Создать...