Advertisement
SergeyKandalintsev

arduino

Jun 5th, 2016
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.86 KB | None | 0 0
  1. // Массив состояний выходов, изначально все выходы выключены
  2. int output[] = {0, 0, 0, 0, 0, 0, 0, 0};
  3.  
  4. // максимальное кол-во одновременно нажатых кнопок
  5. int maxButtonOnQty = 4;
  6.  
  7. // кол-во уже нажатых кнопок на данный момент
  8. int buttonOnQty = 0;
  9.  
  10. // Список нажатых кнопок. buttonOnList[i] содержит номер нажатой кнопки (0 для 1-й кнопки, 1 для 2-й ... 7 для 8-й)
  11. // 1-я нажатая кнопка находится на 0-й позиции в массиве, 2-я на 1-й и т. д.
  12. int buttonOnList[] = new int[maxButtonOnQty];
  13.  
  14.  
  15.  
  16. /**
  17.  * Отработка нажатия кнопки.
  18.  *
  19.  * @param buttonNumber номер нажатой кнопки (0 для 1-й ... 7 для 8-й)
  20.  */
  21. void pressButton(int buttonNumber) {
  22.     if (output[buttonNumber] == 0) { // если выход отключен, его надо включить
  23.         if (buttonOnQty < maxButtonOnQty) { // если кол-во нажатых кнопок меньше максимального
  24.             buttonOnList[buttonOnQty] = buttonNumber; // добавляем кнопку в список нажатых
  25.             buttonOnQty++; // увеличиваем кол-во нажатых кнопок
  26.             output[buttonNumber] = 1; //и включаем выход
  27.         } else { // если нажато макс. кол-во кнопок
  28.             output[buttonOnList[0]] = 0; // отключаем первую нажатую кнопку
  29.  
  30.             for (int i = 0; i < maxButtonOnQty - 1; i++) { // сдвигаем кнопки в списке на 1 поз. влево
  31.                 buttonOnList[i] = buttonOnList[i + 1];
  32.             }
  33.  
  34.             buttonOnList[maxButtonOnQty - 1] = buttonNumber; // добавляем кнопку в список нажатых на последнюю позицию
  35.             output[buttonNumber] = 1; //и включаем выход
  36.         }
  37.     } else { // если выход включен, его надо выключить
  38.         int posInList = 0;
  39.  
  40.         for (int i = 0; i < buttonOnQty; i++) { // отыскиваем на какой позиции в списке находится отключаемый выход
  41.             if (buttonNumber == buttonOnList[i]) {
  42.                 posInList = i;
  43.                 break;
  44.             }
  45.         }
  46.  
  47.         for (int i = posInList; i < buttonOnQty - 1; i++) { // сдвигаем кнопки в списке влево, начиная с posInList
  48.             buttonOnList[i] = buttonOnList[i + 1];
  49.         }
  50.  
  51.         buttonOnQty--; // уменьшаем кол-во нажатых кнопок
  52.         output[buttonNumber] = 0; //и выключаем выход
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement