Спойлер
Код: Выделить всё
volatile int pa = 3; // основной выход с ШИМ
volatile int ledR = 12; // зеленый и синий светодиоды для индикации
volatile int ledG = 13; // красный светодиод для индикации
volatile int butcount = 0; // переменная для "антидребезга" кнопок
volatile int PWMledG = 100; // ШИМ-ы:
volatile int PWMledR = 125;
volatile int PWMpa = 255;
volatile int PWMledB = 0;
volatile byte mode = 0; // режим работы
void setup() {
pinMode(pa, OUTPUT); // основной выход с ШИМ
pinMode(ledR, OUTPUT); //Светодиоды
pinMode(ledG, OUTPUT);
//pinMode(ledB, OUTPUT);
pinMode(4, INPUT); // кнопки
pinMode(7, INPUT);
PORTB |=(1<<PB4)|(1<<PB7); // подтягивающие резисторы
analogWrite(pa, PWMpa); // записть начальных значений
analogWrite(ledR, PWMledR);
analogWrite(ledG, PWMledG);
}
void loop()
{
switch (mode) {
case 0:
be_work();
break;
case 1:
//be_sleep();
break;
}
}
void be_work()// режим работы. реакция на кнопки.
{
if (!(PINB & (1<<PINB7))) //если кнопка нажата
{
if (butcount < 5)
{
butcount++;
}
else
{
PWMpa = PWMpa + 10;
if (PWMpa > 255)
{
PWMpa=255;
}
analogWrite(pa, PWMpa);
delay (200);
}
}
else if (!(PINB & (1<<PINB4))) //если кнопка нажата
{
if (butcount < 5)
{
butcount++;
}
else
{
if (PWMpa > 10)
{
PWMpa = PWMpa - 10;
analogWrite(pa, PWMpa);
delay (200);
}
}
}
else
{
if (butcount > 0)
{
butcount--;
}
}
}


