Advertisement
MrHerobrine

Умный регулятор на Arduino

Nov 18th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. unsigned int A = 0, T=0; //А - хранит значение яркости, T - Время удержания кнопки
  2. int BT1 = 3; int BT2 = 2; //Кнопи и пины
  3.  
  4. void setup(){
  5.   pinMode(BT1, INPUT);digitalWrite(BT1, HIGH);
  6.   pinMode(BT2, INPUT);digitalWrite(BT2, HIGH);
  7. }
  8.  
  9.  
  10. void fast(int B){
  11.   if (digitalRead(BT1) > 0) if (!digitalRead(BT1) == !digitalRead(BT2)){A = B;delay(500);} //Включение или выключение света при нажатии двух кнопок
  12. }
  13.  
  14. void regulator(){
  15.   if (!digitalRead(BT1) && digitalRead(BT2) && A < 255)A++;else if(digitalRead(BT1) && !digitalRead(BT2) && A)A--; //Стандартный режим работы
  16. }
  17. void fastregulator(){
  18.   if(A>3){if (!digitalRead(BT1) && digitalRead(BT2) && A < 255)A+=4;else if(digitalRead(BT1) && !digitalRead(BT2) && A)A-=4;} //Ускоренный режим работы
  19. }
  20.  
  21. void loop(){
  22. if(digitalRead(BT1) != digitalRead(BT2) > 0 ){T++;}else{T = 0;}
  23.  
  24. if(T<40){regulator();}else{fastregulator();} //При длительном удержании включать ускоренный режим
  25.  
  26. if(A>20){fast(0);}else{fast(254);} //Быстрое выключение
  27.  
  28.  
  29. delay(30); //Задержка
  30.  
  31. analogWrite(9,A); //Выставляем яркость светодиода
  32. if (A>254){analogWrite(9,150);A -= 1;delay(150); analogWrite(9,A);} //Мигаем светодиодом, если яркость превышает лимит
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement