Relay counter
Dependencies: TM1638 mbed mbed-rtos AT45
main_count_v2.cpp@1:36d6279f43d5, 2021-02-15 (annotated)
- Committer:
- Oleg_B
- Date:
- Mon Feb 15 04:03:12 2021 +0000
- Revision:
- 1:36d6279f43d5
- Parent:
- 0:1b4c0e7c9316
relay - counter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Oleg_B | 0:1b4c0e7c9316 | 1 | |
Oleg_B | 0:1b4c0e7c9316 | 2 | /**************rele-counter v2 **********************************/ |
Oleg_B | 0:1b4c0e7c9316 | 3 | // при включении реле выключено, тек.показания и уставка как до выключения, |
Oleg_B | 0:1b4c0e7c9316 | 4 | // но подсчет импульсов не работает до подачи 1го импульса на сброс. |
Oleg_B | 0:1b4c0e7c9316 | 5 | // после подачи 1го имп.сброс - показания сбрасываются реле включается |
Oleg_B | 0:1b4c0e7c9316 | 6 | // при достижении подсчитанных импульсов уставки - реле отключается |
Oleg_B | 0:1b4c0e7c9316 | 7 | // при повторной подаче сигнала сброс, показания сбрасываются и реле включается |
Oleg_B | 0:1b4c0e7c9316 | 8 | // |
Oleg_B | 0:1b4c0e7c9316 | 9 | // |
Oleg_B | 0:1b4c0e7c9316 | 10 | |
Oleg_B | 0:1b4c0e7c9316 | 11 | |
Oleg_B | 0:1b4c0e7c9316 | 12 | #include "mbed.h" |
Oleg_B | 0:1b4c0e7c9316 | 13 | #include "rtos.h" |
Oleg_B | 0:1b4c0e7c9316 | 14 | #include "TM1638.h" |
Oleg_B | 0:1b4c0e7c9316 | 15 | #include "AT45.h" |
Oleg_B | 0:1b4c0e7c9316 | 16 | |
Oleg_B | 0:1b4c0e7c9316 | 17 | |
Oleg_B | 0:1b4c0e7c9316 | 18 | // ------- input/output ---------------- |
Oleg_B | 0:1b4c0e7c9316 | 19 | DigitalOut led(PC_13); |
Oleg_B | 0:1b4c0e7c9316 | 20 | DigitalOut rel(PA_15); |
Oleg_B | 0:1b4c0e7c9316 | 21 | DigitalIn in1(PA_8); |
Oleg_B | 0:1b4c0e7c9316 | 22 | DigitalIn in2(PA_9); |
Oleg_B | 0:1b4c0e7c9316 | 23 | DigitalIn in3(PA_10); |
Oleg_B | 0:1b4c0e7c9316 | 24 | |
Oleg_B | 0:1b4c0e7c9316 | 25 | // ------- displey -------------------- |
Oleg_B | 0:1b4c0e7c9316 | 26 | TM1638_LEDKEY8 LEDKEY8(PB_15,PB_14,PB_13, PB_12); |
Oleg_B | 0:1b4c0e7c9316 | 27 | TM1638::KeyData_t keydata; |
Oleg_B | 0:1b4c0e7c9316 | 28 | |
Oleg_B | 0:1b4c0e7c9316 | 29 | |
Oleg_B | 0:1b4c0e7c9316 | 30 | //----------- SPI FLASH ------------------------ |
Oleg_B | 0:1b4c0e7c9316 | 31 | SPI spi(PA_7, PA_6, PA_5); // mosi, miso, sclk |
Oleg_B | 0:1b4c0e7c9316 | 32 | AT45 spif(&spi, PA_4); // NSS |
Oleg_B | 0:1b4c0e7c9316 | 33 | |
Oleg_B | 0:1b4c0e7c9316 | 34 | char *spi_buffer = (char*) malloc(64); |
Oleg_B | 0:1b4c0e7c9316 | 35 | char str[10]; |
Oleg_B | 0:1b4c0e7c9316 | 36 | |
Oleg_B | 0:1b4c0e7c9316 | 37 | |
Oleg_B | 0:1b4c0e7c9316 | 38 | // -------- глоб.переменные --------------- |
Oleg_B | 0:1b4c0e7c9316 | 39 | int present_val = 0; // текущее заначение |
Oleg_B | 0:1b4c0e7c9316 | 40 | int present_val_last = 0; // текущее значение (старое) |
Oleg_B | 0:1b4c0e7c9316 | 41 | int max_value = 0; // значение вкл. реле |
Oleg_B | 0:1b4c0e7c9316 | 42 | |
Oleg_B | 0:1b4c0e7c9316 | 43 | int led1=0; // индикация LED1 |
Oleg_B | 0:1b4c0e7c9316 | 44 | int led2=0; // индикация LED2 |
Oleg_B | 0:1b4c0e7c9316 | 45 | int led3=0; // индикация LED3 |
Oleg_B | 0:1b4c0e7c9316 | 46 | |
Oleg_B | 0:1b4c0e7c9316 | 47 | int enbl=0; // разрешение на работу |
Oleg_B | 0:1b4c0e7c9316 | 48 | |
Oleg_B | 0:1b4c0e7c9316 | 49 | // -------- Прототипы функций: ---------- |
Oleg_B | 0:1b4c0e7c9316 | 50 | void count_value(); |
Oleg_B | 0:1b4c0e7c9316 | 51 | |
Oleg_B | 0:1b4c0e7c9316 | 52 | |
Oleg_B | 0:1b4c0e7c9316 | 53 | /********************************************************************/ |
Oleg_B | 0:1b4c0e7c9316 | 54 | int main() { |
Oleg_B | 0:1b4c0e7c9316 | 55 | |
Oleg_B | 0:1b4c0e7c9316 | 56 | // предустановка значений |
Oleg_B | 0:1b4c0e7c9316 | 57 | int update = 0; |
Oleg_B | 0:1b4c0e7c9316 | 58 | int update2 = 0; |
Oleg_B | 0:1b4c0e7c9316 | 59 | int delay_update_x10 = 2000; // задержка перед +/- x_inreasing_decreasing |
Oleg_B | 0:1b4c0e7c9316 | 60 | int time_update_increase = 0; // отсчет времени до +10 |
Oleg_B | 0:1b4c0e7c9316 | 61 | int time_update_decrease = 0; // отсчет времени до -10 |
Oleg_B | 0:1b4c0e7c9316 | 62 | int delay_cycle = 25; // период вывода инф. на дисплей |
Oleg_B | 0:1b4c0e7c9316 | 63 | int once_increase = 0; |
Oleg_B | 0:1b4c0e7c9316 | 64 | int once_decrease = 0; |
Oleg_B | 0:1b4c0e7c9316 | 65 | int x_inreasing_decreasing = 10; // +/- после удержания кнопки |
Oleg_B | 0:1b4c0e7c9316 | 66 | |
Oleg_B | 0:1b4c0e7c9316 | 67 | |
Oleg_B | 0:1b4c0e7c9316 | 68 | int write_page_time = 5000; // время до записи max_value |
Oleg_B | 0:1b4c0e7c9316 | 69 | int timer_to_write_page = 0; // отсчет времени до записи max_value |
Oleg_B | 0:1b4c0e7c9316 | 70 | int write_page_start = 0; // старт процедуры записи |
Oleg_B | 0:1b4c0e7c9316 | 71 | |
Oleg_B | 0:1b4c0e7c9316 | 72 | |
Oleg_B | 0:1b4c0e7c9316 | 73 | // Вычитываем сохраненное максимальное значение (11 стр для записи) |
Oleg_B | 0:1b4c0e7c9316 | 74 | spif.read_page(spi_buffer, 11); |
Oleg_B | 0:1b4c0e7c9316 | 75 | max_value = atoi(spi_buffer); |
Oleg_B | 0:1b4c0e7c9316 | 76 | |
Oleg_B | 0:1b4c0e7c9316 | 77 | // Вычитываем сохраненное текущее значение (12 стр для записи) |
Oleg_B | 0:1b4c0e7c9316 | 78 | spif.read_page(spi_buffer, 12); |
Oleg_B | 0:1b4c0e7c9316 | 79 | present_val = atoi(spi_buffer); |
Oleg_B | 0:1b4c0e7c9316 | 80 | |
Oleg_B | 0:1b4c0e7c9316 | 81 | // Делаем текущее значение != текущему прошлому значение |
Oleg_B | 0:1b4c0e7c9316 | 82 | present_val_last = present_val + 10; |
Oleg_B | 0:1b4c0e7c9316 | 83 | |
Oleg_B | 0:1b4c0e7c9316 | 84 | // Поток для работы с текущим значением |
Oleg_B | 0:1b4c0e7c9316 | 85 | Thread count_thread; |
Oleg_B | 0:1b4c0e7c9316 | 86 | count_thread.start(count_value); |
Oleg_B | 0:1b4c0e7c9316 | 87 | |
Oleg_B | 0:1b4c0e7c9316 | 88 | |
Oleg_B | 0:1b4c0e7c9316 | 89 | while(1) { |
Oleg_B | 0:1b4c0e7c9316 | 90 | |
Oleg_B | 0:1b4c0e7c9316 | 91 | /*** обработка нажатия кнопок ***/ |
Oleg_B | 0:1b4c0e7c9316 | 92 | |
Oleg_B | 0:1b4c0e7c9316 | 93 | LEDKEY8.getKeys(&keydata); |
Oleg_B | 0:1b4c0e7c9316 | 94 | |
Oleg_B | 0:1b4c0e7c9316 | 95 | // Нажимаем кнопку X, текущее значение = 0 |
Oleg_B | 0:1b4c0e7c9316 | 96 | if(keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 97 | present_val = 0; |
Oleg_B | 0:1b4c0e7c9316 | 98 | enbl=1; |
Oleg_B | 0:1b4c0e7c9316 | 99 | } |
Oleg_B | 0:1b4c0e7c9316 | 100 | |
Oleg_B | 0:1b4c0e7c9316 | 101 | |
Oleg_B | 0:1b4c0e7c9316 | 102 | // Нажимаем кнопку увеличить |
Oleg_B | 0:1b4c0e7c9316 | 103 | if(keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 104 | if(keydata[LEDKEY8_SW2_IDX] != LEDKEY8_SW2_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 105 | time_update_increase = time_update_increase + delay_cycle; |
Oleg_B | 0:1b4c0e7c9316 | 106 | |
Oleg_B | 0:1b4c0e7c9316 | 107 | // Один раз делаем +1 |
Oleg_B | 0:1b4c0e7c9316 | 108 | if(once_increase == 0) { |
Oleg_B | 0:1b4c0e7c9316 | 109 | once_increase = 1; |
Oleg_B | 0:1b4c0e7c9316 | 110 | if(max_value<999){max_value = max_value + 1;} |
Oleg_B | 0:1b4c0e7c9316 | 111 | update = 0; |
Oleg_B | 0:1b4c0e7c9316 | 112 | } |
Oleg_B | 0:1b4c0e7c9316 | 113 | |
Oleg_B | 0:1b4c0e7c9316 | 114 | write_page_start = 1; |
Oleg_B | 0:1b4c0e7c9316 | 115 | timer_to_write_page = 0; |
Oleg_B | 0:1b4c0e7c9316 | 116 | } |
Oleg_B | 0:1b4c0e7c9316 | 117 | } |
Oleg_B | 0:1b4c0e7c9316 | 118 | else { |
Oleg_B | 0:1b4c0e7c9316 | 119 | time_update_increase = 0; |
Oleg_B | 0:1b4c0e7c9316 | 120 | once_increase = 0; |
Oleg_B | 0:1b4c0e7c9316 | 121 | } |
Oleg_B | 0:1b4c0e7c9316 | 122 | |
Oleg_B | 0:1b4c0e7c9316 | 123 | |
Oleg_B | 0:1b4c0e7c9316 | 124 | |
Oleg_B | 0:1b4c0e7c9316 | 125 | // Нажимаем кнопку уменьшить |
Oleg_B | 0:1b4c0e7c9316 | 126 | if(keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 127 | if(keydata[LEDKEY8_SW1_IDX] != LEDKEY8_SW1_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 128 | time_update_decrease = time_update_decrease + delay_cycle; |
Oleg_B | 0:1b4c0e7c9316 | 129 | |
Oleg_B | 0:1b4c0e7c9316 | 130 | // Один раз делаем -1 |
Oleg_B | 0:1b4c0e7c9316 | 131 | if(once_decrease == 0) { |
Oleg_B | 0:1b4c0e7c9316 | 132 | once_decrease = 1; |
Oleg_B | 0:1b4c0e7c9316 | 133 | if(max_value>0){max_value = max_value - 1;} |
Oleg_B | 0:1b4c0e7c9316 | 134 | update = 0; |
Oleg_B | 0:1b4c0e7c9316 | 135 | } |
Oleg_B | 0:1b4c0e7c9316 | 136 | |
Oleg_B | 0:1b4c0e7c9316 | 137 | write_page_start = 1; |
Oleg_B | 0:1b4c0e7c9316 | 138 | timer_to_write_page = 0; |
Oleg_B | 0:1b4c0e7c9316 | 139 | } |
Oleg_B | 0:1b4c0e7c9316 | 140 | } |
Oleg_B | 0:1b4c0e7c9316 | 141 | else { |
Oleg_B | 0:1b4c0e7c9316 | 142 | once_decrease = 0; |
Oleg_B | 0:1b4c0e7c9316 | 143 | time_update_decrease = 0; |
Oleg_B | 0:1b4c0e7c9316 | 144 | } |
Oleg_B | 0:1b4c0e7c9316 | 145 | |
Oleg_B | 0:1b4c0e7c9316 | 146 | |
Oleg_B | 0:1b4c0e7c9316 | 147 | |
Oleg_B | 0:1b4c0e7c9316 | 148 | |
Oleg_B | 0:1b4c0e7c9316 | 149 | // При удержании кнопки увеличить на +10 |
Oleg_B | 0:1b4c0e7c9316 | 150 | if(keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 151 | if(time_update_increase >= delay_update_x10) { |
Oleg_B | 0:1b4c0e7c9316 | 152 | time_update_increase = delay_update_x10 - delay_cycle*10; |
Oleg_B | 0:1b4c0e7c9316 | 153 | if(max_value<=990){max_value = max_value + x_inreasing_decreasing;} |
Oleg_B | 0:1b4c0e7c9316 | 154 | update = 0; |
Oleg_B | 0:1b4c0e7c9316 | 155 | } |
Oleg_B | 0:1b4c0e7c9316 | 156 | } |
Oleg_B | 0:1b4c0e7c9316 | 157 | |
Oleg_B | 0:1b4c0e7c9316 | 158 | |
Oleg_B | 0:1b4c0e7c9316 | 159 | |
Oleg_B | 0:1b4c0e7c9316 | 160 | |
Oleg_B | 0:1b4c0e7c9316 | 161 | // При удержании кнопки уменьшить на -10 |
Oleg_B | 0:1b4c0e7c9316 | 162 | if(keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { |
Oleg_B | 0:1b4c0e7c9316 | 163 | if(time_update_decrease >= delay_update_x10) { |
Oleg_B | 0:1b4c0e7c9316 | 164 | time_update_decrease = delay_update_x10 - delay_cycle*10; |
Oleg_B | 0:1b4c0e7c9316 | 165 | if(max_value>10){max_value = max_value - x_inreasing_decreasing;} |
Oleg_B | 0:1b4c0e7c9316 | 166 | update = 0; |
Oleg_B | 0:1b4c0e7c9316 | 167 | } |
Oleg_B | 0:1b4c0e7c9316 | 168 | } |
Oleg_B | 0:1b4c0e7c9316 | 169 | |
Oleg_B | 0:1b4c0e7c9316 | 170 | |
Oleg_B | 0:1b4c0e7c9316 | 171 | |
Oleg_B | 0:1b4c0e7c9316 | 172 | // Записываем в память максимальное значение |
Oleg_B | 0:1b4c0e7c9316 | 173 | // через время write_page_time после нажатий кнопок |
Oleg_B | 0:1b4c0e7c9316 | 174 | if(write_page_start == 1) { |
Oleg_B | 0:1b4c0e7c9316 | 175 | timer_to_write_page = timer_to_write_page + delay_cycle; |
Oleg_B | 0:1b4c0e7c9316 | 176 | |
Oleg_B | 0:1b4c0e7c9316 | 177 | if(timer_to_write_page >= write_page_time) { |
Oleg_B | 0:1b4c0e7c9316 | 178 | write_page_start = 0; |
Oleg_B | 0:1b4c0e7c9316 | 179 | timer_to_write_page = 0; |
Oleg_B | 0:1b4c0e7c9316 | 180 | sprintf(spi_buffer, "%d", max_value); |
Oleg_B | 0:1b4c0e7c9316 | 181 | spif.page_erase(11); |
Oleg_B | 0:1b4c0e7c9316 | 182 | spif.write_page(spi_buffer, 11); |
Oleg_B | 0:1b4c0e7c9316 | 183 | |
Oleg_B | 0:1b4c0e7c9316 | 184 | LEDKEY8.locate(0); |
Oleg_B | 0:1b4c0e7c9316 | 185 | LEDKEY8.printf(" "); |
Oleg_B | 0:1b4c0e7c9316 | 186 | Thread::wait(500); |
Oleg_B | 0:1b4c0e7c9316 | 187 | LEDKEY8.locate(0); |
Oleg_B | 0:1b4c0e7c9316 | 188 | LEDKEY8.printf("%d", max_value); |
Oleg_B | 0:1b4c0e7c9316 | 189 | } |
Oleg_B | 0:1b4c0e7c9316 | 190 | } |
Oleg_B | 0:1b4c0e7c9316 | 191 | |
Oleg_B | 0:1b4c0e7c9316 | 192 | |
Oleg_B | 0:1b4c0e7c9316 | 193 | |
Oleg_B | 0:1b4c0e7c9316 | 194 | /*** вывод на дисплей ***/ |
Oleg_B | 0:1b4c0e7c9316 | 195 | |
Oleg_B | 0:1b4c0e7c9316 | 196 | led = !led ; |
Oleg_B | 0:1b4c0e7c9316 | 197 | |
Oleg_B | 0:1b4c0e7c9316 | 198 | LEDKEY8.cls(); |
Oleg_B | 0:1b4c0e7c9316 | 199 | LEDKEY8.setBrightness(TM1638_BRT1); |
Oleg_B | 0:1b4c0e7c9316 | 200 | LEDKEY8.locate(0); |
Oleg_B | 0:1b4c0e7c9316 | 201 | LEDKEY8.printf("%d", max_value); |
Oleg_B | 0:1b4c0e7c9316 | 202 | LEDKEY8.locate(3); |
Oleg_B | 0:1b4c0e7c9316 | 203 | LEDKEY8.printf("%d", present_val); |
Oleg_B | 0:1b4c0e7c9316 | 204 | if(led1==1){LEDKEY8.setIcon(TM1638_LEDKEY8::LD1);}else{LEDKEY8.clrIcon(TM1638_LEDKEY8::LD1);} |
Oleg_B | 0:1b4c0e7c9316 | 205 | if(led2==1){LEDKEY8.setIcon(TM1638_LEDKEY8::LD2);}else{LEDKEY8.clrIcon(TM1638_LEDKEY8::LD2);} |
Oleg_B | 0:1b4c0e7c9316 | 206 | if(led3==1){LEDKEY8.setIcon(TM1638_LEDKEY8::LD3);}else{LEDKEY8.clrIcon(TM1638_LEDKEY8::LD3);} |
Oleg_B | 0:1b4c0e7c9316 | 207 | |
Oleg_B | 0:1b4c0e7c9316 | 208 | |
Oleg_B | 0:1b4c0e7c9316 | 209 | Thread::wait(delay_cycle); |
Oleg_B | 0:1b4c0e7c9316 | 210 | } |
Oleg_B | 0:1b4c0e7c9316 | 211 | } |
Oleg_B | 0:1b4c0e7c9316 | 212 | |
Oleg_B | 0:1b4c0e7c9316 | 213 | /****************************************************************/ |
Oleg_B | 0:1b4c0e7c9316 | 214 | |
Oleg_B | 0:1b4c0e7c9316 | 215 | // Поток работы с текущим значением 10msec |
Oleg_B | 0:1b4c0e7c9316 | 216 | void count_value() { |
Oleg_B | 0:1b4c0e7c9316 | 217 | |
Oleg_B | 0:1b4c0e7c9316 | 218 | int c_inp1=0; |
Oleg_B | 0:1b4c0e7c9316 | 219 | int c_inp2=0; |
Oleg_B | 0:1b4c0e7c9316 | 220 | int c_inp3=0; |
Oleg_B | 0:1b4c0e7c9316 | 221 | int m_inp1=0; |
Oleg_B | 0:1b4c0e7c9316 | 222 | int m_inp2=0; |
Oleg_B | 0:1b4c0e7c9316 | 223 | int m_inp3=0; |
Oleg_B | 0:1b4c0e7c9316 | 224 | |
Oleg_B | 0:1b4c0e7c9316 | 225 | int blnk=0; |
Oleg_B | 0:1b4c0e7c9316 | 226 | |
Oleg_B | 0:1b4c0e7c9316 | 227 | while(1) { |
Oleg_B | 0:1b4c0e7c9316 | 228 | |
Oleg_B | 0:1b4c0e7c9316 | 229 | if(blnk<100){blnk++;}else{blnk=0;} |
Oleg_B | 0:1b4c0e7c9316 | 230 | |
Oleg_B | 0:1b4c0e7c9316 | 231 | // фиксируем значения |
Oleg_B | 0:1b4c0e7c9316 | 232 | if(in1==0){c_inp1=1;}else{c_inp1=0;} |
Oleg_B | 0:1b4c0e7c9316 | 233 | if(in2==0){c_inp2=1;}else{c_inp2=0;} |
Oleg_B | 0:1b4c0e7c9316 | 234 | if(in3==0){c_inp3=1;}else{c_inp3=0;} |
Oleg_B | 0:1b4c0e7c9316 | 235 | |
Oleg_B | 0:1b4c0e7c9316 | 236 | |
Oleg_B | 0:1b4c0e7c9316 | 237 | // сохраняем тек.значение в 12 стр. при выкл. питания |
Oleg_B | 0:1b4c0e7c9316 | 238 | if(c_inp1==0 && m_inp1==1){ |
Oleg_B | 0:1b4c0e7c9316 | 239 | sprintf(spi_buffer, "%d", present_val); |
Oleg_B | 0:1b4c0e7c9316 | 240 | spif.page_erase(12); |
Oleg_B | 0:1b4c0e7c9316 | 241 | spif.write_page(spi_buffer, 12); |
Oleg_B | 0:1b4c0e7c9316 | 242 | } |
Oleg_B | 0:1b4c0e7c9316 | 243 | |
Oleg_B | 0:1b4c0e7c9316 | 244 | // подсчет импульсов по входу 1 |
Oleg_B | 0:1b4c0e7c9316 | 245 | if(c_inp2==1 && m_inp2==0 && enbl==1){ |
Oleg_B | 0:1b4c0e7c9316 | 246 | present_val++; |
Oleg_B | 0:1b4c0e7c9316 | 247 | } |
Oleg_B | 0:1b4c0e7c9316 | 248 | |
Oleg_B | 0:1b4c0e7c9316 | 249 | // сбрасываем текущее значение по входу 2 |
Oleg_B | 0:1b4c0e7c9316 | 250 | if(c_inp3==1 && m_inp3==0){ |
Oleg_B | 0:1b4c0e7c9316 | 251 | enbl=1; |
Oleg_B | 0:1b4c0e7c9316 | 252 | present_val=0; |
Oleg_B | 0:1b4c0e7c9316 | 253 | } |
Oleg_B | 0:1b4c0e7c9316 | 254 | |
Oleg_B | 0:1b4c0e7c9316 | 255 | |
Oleg_B | 0:1b4c0e7c9316 | 256 | // управление реле |
Oleg_B | 0:1b4c0e7c9316 | 257 | if(present_val<max_value && enbl==1){rel=1; }else{rel=0;} |
Oleg_B | 0:1b4c0e7c9316 | 258 | |
Oleg_B | 0:1b4c0e7c9316 | 259 | |
Oleg_B | 0:1b4c0e7c9316 | 260 | // управляем светодиодами |
Oleg_B | 0:1b4c0e7c9316 | 261 | if(enbl==1){ |
Oleg_B | 0:1b4c0e7c9316 | 262 | if(rel==1){led1=1;}else{led1=0;} |
Oleg_B | 0:1b4c0e7c9316 | 263 | }else{ |
Oleg_B | 0:1b4c0e7c9316 | 264 | if(blnk<50){led1=1;}else{led1=0;} |
Oleg_B | 0:1b4c0e7c9316 | 265 | } |
Oleg_B | 0:1b4c0e7c9316 | 266 | |
Oleg_B | 0:1b4c0e7c9316 | 267 | |
Oleg_B | 0:1b4c0e7c9316 | 268 | if(c_inp2==1){led2=1;}else{led2=0;} |
Oleg_B | 0:1b4c0e7c9316 | 269 | if(c_inp3==1){led3=1;}else{led3=0;} |
Oleg_B | 0:1b4c0e7c9316 | 270 | |
Oleg_B | 0:1b4c0e7c9316 | 271 | |
Oleg_B | 0:1b4c0e7c9316 | 272 | // сохраняем значени |
Oleg_B | 0:1b4c0e7c9316 | 273 | m_inp1=c_inp1; |
Oleg_B | 0:1b4c0e7c9316 | 274 | m_inp2=c_inp2; |
Oleg_B | 0:1b4c0e7c9316 | 275 | m_inp3=c_inp3; |
Oleg_B | 0:1b4c0e7c9316 | 276 | |
Oleg_B | 0:1b4c0e7c9316 | 277 | |
Oleg_B | 0:1b4c0e7c9316 | 278 | Thread::wait(5); |
Oleg_B | 0:1b4c0e7c9316 | 279 | } |
Oleg_B | 0:1b4c0e7c9316 | 280 | } |
Oleg_B | 0:1b4c0e7c9316 | 281 | |
Oleg_B | 0:1b4c0e7c9316 | 282 |