Поправка скетча, управления матрицами на ws2812 от задних фонарей автомобиля
- Войдите на сайт для отправки комментариев
Здраствуйте. Ищу кто может, НЕ забезплатно, поправить скетч и дописать немного. Есть скетч, на Мікро 32U4, управления задними световими приборами, точнее управление матрицами на ws2812, от задних фонарей автомобиля. Это уже готовий рабоччий блок, которий работает. Нужно поправить, облагородить скетр ,и дописать пара строчек кода. Скетч расчитан на постоянние сигнали от ламп управления задними фонарями авто, и не расчитан на лампи поворотов, которие моргают 1 раз в секунду. Также в скетче реализовано управлени от другого блока по шине I2C. Устройство может работать автономно от задних фонарей, а может от сигналов другого блока (через мобюильний телефон) по шине I2C. Скетч приведен ниже (состоит из трех частей, вкладок). Коменти в скетче на украинском язике, если нада, то напишу на русском.
001 | /* |
002 | * |
003 | * // Micro 32U4, I2C |
004 | * 2 - SDA |
005 | * 3 - SCL |
006 | * |
007 | * I2C2.writeByte(0x02,0,2); |
008 | * база - 2 (Arduino_m) - REG_matrix - 02 |
009 | * 0 - Режим матриці |
010 | * 1 - індикація режиму матриць |
011 | * 2 - стан встановлення звязку між контролером і телефоном |
012 | */ |
013 | |
014 | //#include <Arduino.h> |
015 | #include <Adafruit_GFX.h> |
016 | #include <Adafruit_NeoMatrix.h> |
017 | #include <iarduino_I2C_connect.h> |
018 | #include "Wire.h" |
019 |
020 | // Призначення пінів |
021 | const uint8_t pin_m_l = A0; // Ліва матриця |
022 | const uint8_t pin_m_r = A1; // Права матриця |
023 | const uint8_t pin_L = 4; |
024 | const uint8_t pin_R = 5; |
025 | const uint8_t pin_58 = 6; |
026 | const uint8_t pin_54 = 7; |
027 | const uint8_t pin_RF = 8; |
028 | const uint8_t pin_mfa_1 = 9; |
029 | const uint8_t pin_mfa_2 = 10; |
030 | const uint8_t pin_mfa_3 = A3; |
031 |
032 | iarduino_I2C_connect I2C2; // объявляем переменную для работы c библиотекой iarduino_I2C_connect |
033 | byte REG_matrix[4]; // объявляем массив, данные которого будут доступны для чтения/записи по шине I2C |
034 |
035 | Adafruit_NeoMatrix matrix_l = Adafruit_NeoMatrix(32, 8, pin_m_l, NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800) ; |
036 | Adafruit_NeoMatrix matrix_r = Adafruit_NeoMatrix(32, 8, pin_m_r, NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800) ; |
037 |
038 | // Змінні для вибору режимів матриць |
039 | uint8_t mode_m=0; |
040 |
041 | // Загальні змінні |
042 | int16_t brightness = 50; // 10 |
043 | uint8_t mode_connect=0; |
044 | uint8_t i=0; |
045 | bool bmod_L, bmod_R, bmod_58, bmod_54, bmod_RF, bmod_mfa_1, bmod_mfa_2, bmod_mfa_3; |
046 |
047 | int32_t temp_1 = 0 ; // Тимчасова змінна, для затримки |
048 | uint8_t delay_1 = 500; // Установка часу затримки, 1000 мс, для millis-1 |
049 |
050 | const uint8_t ON=0; // 0 |
051 | const uint8_t OFF=1; // 1 |
052 |
053 | // Налаштування режиму - L (Лівий поворот) |
054 | int32_t previousMillis_l = 0; // время, когда состояние светодиода обновлялось |
055 | int32_t interval_l = 500; // половина периода мигания (в миллисекундах) |
056 | uint8_t m_l_State = LOW; // Стан лівої матриці: ВКЛ/ВИКЛ |
057 |
058 | // Налаштування режиму - R (Правий поворот) |
059 | int32_t previousMillis_r = 0; // время, когда состояние светодиода обновлялось |
060 | int32_t interval_r = 500; // половина периода мигания (в миллисекундах) |
061 | uint8_t m_r_State = LOW; // Стан правої матриці: ВКЛ/ВИКЛ |
062 |
063 | // Налаштування режиму - LR (Аварійка) |
064 | int32_t previousMillis_lr = 0; // время, когда состояние светодиода обновлялось |
065 | int32_t interval_lr = 500; // половина периода мигания (в миллисекундах) |
066 | uint8_t m_lr_State = LOW; // Стан лівої і правої матриці: ВКЛ/ВИКЛ |
067 | int16_t brightness_lr = 50; // 25 |
068 |
069 | // Налаштування режиму - 58 (Габарит) |
070 | int16_t brightness_58 = 50; // 10 |
071 |
072 | // Налаштування режиму - 54 |
073 | int32_t previousMillis_54 = 0; // время, когда состояние светодиода обновлялось |
074 | int32_t interval_54 = 750; // половина периода мигания (в миллисекундах) |
075 | uint8_t ledState_54 = LOW; // состояние светодиода: ВКЛ/ВИКЛ |
076 | int16_t brightness_54 = 50; // 50 |
077 |
078 | // Налаштування режиму - rf (Задній Хід) |
079 | int16_t brightness_rf = 50; // 50 |
080 |
081 | // Налаштування режиму - text |
082 | uint8_t speed_text = 30; // Швидкість біжучої стрічки //30 (більша цифра - повільніше) |
083 | int16_t num_text = 3; // Порядковий номер тексту в базі |
084 | int16_t mode_tt= 0; |
085 | uint32_t time_text; // Змінна для зберігання точки відліку |
086 | int16_t x_l = matrix_l.width(); |
087 | int16_t x_r = matrix_r.width(); |
088 | uint8_t pass_l = 0; |
089 | uint8_t pass_r = 6; |
090 |
091 | static const uint8_t PROGMEM myBitmap[][32] = { |
092 | /* 0 */ 0xff,0xff,0xff,0xff,0x81,0x81,0x81,0x81,0xbd,0xbd,0xbd,0xbd,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xbd,0xbd,0xbd,0xbd,0x81,0x81,0x81,0x81,0xff,0xff,0xff,0xff, |
093 | /* 1 */ 0xff,0xff,0xff,0xff,0x81,0x81,0x81,0x81,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0x81,0x81,0x81,0x81,0xff,0xff,0xff,0xff, |
094 | /* 2 */ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, |
095 | /* 3 */ 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, |
096 | /* 4 */ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, |
097 | /* 5 */ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, |
098 | /* 6 */ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, |
099 | /* 7 */ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0x0c,0x30,0xc3,0xc3,0x0c,0x30,0xc3,0xc3,0x0c,0x30,0xc3,0xc3,0x0c,0x30,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, |
100 | /* 8 */ 0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA, |
101 | /* 9 */ 0x99,0x99,0x99,0x99,0x5A,0x5A,0x5A,0x5A,0x3C,0x3C,0x3C,0x3C,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x3C,0x3C,0x3C,0x3C,0x5A,0x5A,0x5A,0x5A,0x99,0x99,0x99,0x99, |
102 | /* 10 */ 0x3C,0x3C,0x3C,0x3C,0x42,0x42,0x42,0x42,0xA5,0xA5,0xA5,0xA5,0x81,0x81,0x81,0x81,0xA5,0xA5,0xA5,0xA5,0x99,0x99,0x99,0x99,0x42,0x42,0x42,0x42,0x3C,0x3C,0x3C,0x3C, |
103 | /* 11 */ 0x3C,0x3C,0x3C,0x3C,0x42,0x42,0x42,0x42,0x99,0x99,0x99,0x99,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0xA5,0x99,0x99,0x99,0x99,0x42,0x42,0x42,0x42,0x3C,0x3C,0x3C,0x3C, |
104 | 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, |
105 | /* 13 */ 0x3C,0x3C,0x3C,0x3C,0x42,0x42,0x42,0x42,0x99,0x99,0x99,0x99,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0x99,0x99,0x99,0x99,0x42,0x42,0x42,0x42,0x3C,0x3C,0x3C,0x3C, |
106 | }; |
107 |
108 | const char *slogans[]= { |
109 | "<<<<<" , // 0 |
110 | ">>>>>" , // 1 |
111 | "STOP" , // 2 |
112 | "XXXXX" , // 3 |
113 | "<< >>" , // 4 |
114 | "OOOOO" , // 5 |
115 | "!!!!!" , // 6 |
116 | "=====" , // 7 |
117 | "#####" , // 8 |
118 | }; |
119 | |
120 | const uint16_t colors_t[]={ |
121 | 0xF800, // 0 - Червоний red |
122 | 0x07E0, // 1 - Зелений green |
123 | 0xFFE0, // 2 - Жовтий YELLOW |
124 | 0x001F, // 3 - Синій blue |
125 | 0xF81F, // 4 - Пурпурний magenta (Фіолетовий) |
126 | 0x07FF, // 5 - Голубий cyan |
127 | 0xFFFF // 6 - Білий white |
128 | // #define black 0x0000 |
129 | }; |
130 |
131 | const uint16_t colors[]={ |
132 | 0xF800, // 0 - Червоний red |
133 | 0x07E0, // 1 - Зелений green |
134 | 0xFFE0, // 2 - Жовтий YELLOW |
135 | 0x001F, // 3 - Синій blue |
136 | 0xF81F, // 4 - Пурпурний magenta (Фіолетовий) |
137 | 0x07FF, // 5 - Голубий cyan |
138 | 0xFFFF // 6 - Білий white |
139 | // #define black 0x0000 |
140 | }; |
141 |
142 | const char *names[] = { |
143 | "Перепрошую" , // 0 - 70 |
144 | "Вибачте" , // 1 - 60 |
145 | "Дякую." , // 2 - 40 |
146 |
147 | }; |
148 |
149 | void setup () { |
150 | Wire.begin(0x02); // инициируем подключение к шине I2C в качестве ведомого (slave) устройства, с указанием своего адреса на шине. |
151 | I2C2.begin(REG_matrix); // инициируем возможность чтения/записи данных по шине I2C, из/в указываемый массив |
152 | //Serial.begin(115200); |
153 | matrix_l.begin(); |
154 | matrix_r.begin(); |
155 | matrix_l.cp437( true ); |
156 | matrix_r.cp437( true ); |
157 | matrix_l.setTextWrap( false ); |
158 | matrix_r.setTextWrap( false ); |
159 | matrix_l.fillScreen(0); |
160 | matrix_r.fillScreen(0); |
161 | matrix_l.clear(); // Очищаємо |
162 | matrix_r.clear(); // Очищаємо |
163 | matrix_l.show(); // Виводимо, тобто гасимо всі, очищені |
164 | matrix_r.show(); // Виводимо, тобто гасимо всі, очищені |
165 | pinMode(pin_m_l, OUTPUT); |
166 | pinMode(pin_m_r, OUTPUT); |
167 | pinMode(pin_L, INPUT); |
168 | pinMode(pin_R, INPUT); |
169 | pinMode(pin_58, INPUT); |
170 | pinMode(pin_54, INPUT); |
171 | pinMode(pin_RF, INPUT); |
172 | pinMode(pin_mfa_1, INPUT); |
173 | pinMode(pin_mfa_2, INPUT); |
174 | pinMode(pin_mfa_3, INPUT); |
175 | //Serial.println("Ready!"); |
176 | } |
177 |
178 | void loop () |
179 | { |
180 | //Serial.println("loop"); |
181 | bmod_L = digitalRead(pin_L); |
182 | bmod_R = digitalRead(pin_R); |
183 | bmod_58 = digitalRead(pin_58); |
184 | bmod_54 = digitalRead(pin_54); |
185 | bmod_RF = digitalRead(pin_RF); |
186 | bmod_mfa_1 = digitalRead(pin_mfa_1); |
187 | bmod_mfa_2 = digitalRead(pin_mfa_2); |
188 | bmod_mfa_3 = digitalRead(pin_mfa_3); |
189 | //mode_l(); |
190 | //mode_r(); |
191 | //mode_lr(); |
192 | //mode_58(); |
193 | //mode_54(); |
194 | //mode_rf(); |
195 | //mode_m2(); |
196 | //mode_m3(); |
197 | //mode_m4(); |
198 | //mode_m5(); |
199 | //mode_m6(); |
200 | //mode_m7(); |
201 | //mode_text2(num_text); |
202 | //mode_text3(num_text,mode_tt); |
203 | //mods_54(); // test |
204 | //mods_11(); // test |
205 | |
206 | //------------------------------------------------------------------------- |
207 | mode_connect=REG_matrix[2]; // Статус зєднання з телефоном (1 - Розєднано, 0 - Зєднано) |
208 | //mode_connect=1; // для тесту |
209 | if (mode_connect==0){ |
210 | compare(); |
211 | } else { |
212 | mobila(); |
213 | } |
214 | //------------------- |
215 | } // loop |
216 |
217 | //---------mobila---------- |
218 | void mobila() { |
219 | mode_m=REG_matrix[0]; // Режим матриці |
220 | if (mode_m >= 0 && mode_m <= 16) { // Якщо дорівнює або більше 0 і менше або дорівнює 16 |
221 | if (mode_m==1) { |
222 | mode_l(); |
223 | //Serial.println("Лівий поворот"); |
224 | } else if (mode_m==2) { |
225 | mode_r(); |
226 | //Serial.println("Правий поворот"); |
227 | } else if (mode_m==3) { |
228 | mode_lr(); |
229 | //Serial.println("Аварійка"); |
230 | } else if (mode_m==4) { |
231 | mode_58(); |
232 | //Serial.println("Габарит"); |
233 | } else if (mode_m==5) { |
234 | mode_54(); |
235 | //Serial.println("Стоп-сигнал"); |
236 | } else if (mode_m==6) { |
237 | mode_rf(); |
238 | //Serial.println("Задній хід"); |
239 | } else if (mode_m==7) { |
240 | mode_m1(); |
241 | //REG_matrix[1] = 7; // Індикація режиму матриць |
242 | //Serial.println("Програма М_1"); |
243 | } else if (mode_m==8) { |
244 | //mode_m2(); |
245 | mode_text2(0); // Перепрошую |
246 | REG_matrix[1] = 8; // Індикація режиму матриць |
247 | //Serial.println("Програма М_2"); |
248 | } else if (mode_m==9) { |
249 | //mode_m3(); |
250 | mode_text2(2); // Дякую |
251 | REG_matrix[1] = 9; // Індикація режиму матриць |
252 | //Serial.println("Програма М_3"); |
253 | } else if (mode_m==10) { |
254 | //mode_m4(); |
255 | mode_text2(3); // Привіт з Волині |
256 | REG_matrix[1] = 10; // Індикація режиму матриць |
257 | //Serial.println("Програма М_4"); |
258 | } else if (mode_m==11) { |
259 | //mode_m5(); |
260 | mode_text2(5); // UARNet - Супер iнтернет! |
261 | REG_matrix[1] = 11; // Індикація режиму матриць |
262 | //Serial.println("Програма М_5"); |
263 | } else if (mode_m==12) { |
264 | //mode_m6(); |
265 | mode_text2(6); // Привіт. |
266 | REG_matrix[1] = 12; // Індикація режиму матриць |
267 | //Serial.println("Програма М_6"); |
268 | } else if (mode_m==13) { |
269 | //mode_m7(); |
270 | mods_58 (); |
271 | REG_matrix[1] = 13; // Індикація режиму матриць |
272 | //Serial.println("Програма М_7"); |
273 | } else if (mode_m==14) { |
274 | //mode_m8(); |
275 | mods_54(); |
276 | REG_matrix[1] = 14; // Індикація режиму матриць |
277 | //Serial.println("Програма М_8"); |
278 | } else if (mode_m==15) { |
279 | //mode_m9(); |
280 | mods_rf; |
281 | REG_matrix[1] = 15; // Індикація режиму матриць |
282 | //Serial.println("Програма М_9"); |
283 | } else if (mode_m==16) { |
284 | //mode_m10(); |
285 | REG_matrix[1] = 16; // Індикація режиму матриць |
286 | //Serial.println("Програма М_10"); |
287 | //} else if (mode_m==0) { |
288 | //mode_0(); |
289 | //Serial.println("Програма М_0"); |
290 | } else { |
291 | mode_0(); |
292 | REG_matrix[1] = 0; // Режим матриці |
293 | //Serial.println("Помилка"); |
294 | } |
295 | } |
296 | } |
297 | //---------------------------------------------------------------------------- |
298 | void compare() { |
299 | // && - і, || - або |
300 | if ( (bmod_L==ON && bmod_R==OFF && bmod_58==OFF && bmod_54==OFF && bmod_RF==OFF) || |
301 | (bmod_L==ON && bmod_R==OFF && bmod_58==ON && bmod_54==OFF && bmod_RF==OFF) ) { |
302 | //Serial.println("_Лівий поворот_"); |
303 | //REG_matrix[1] = 1; // Індикація режиму матриць |
304 | mode_l(); |
305 | } else if ((bmod_L==OFF && bmod_R==ON && bmod_58==OFF && bmod_54==OFF && bmod_RF==OFF) || |
306 | (bmod_L==OFF && bmod_R==ON && bmod_58==ON && bmod_54==OFF && bmod_RF==OFF) ) { |
307 | //Serial.println("_Правий поворот_"); |
308 | //REG_matrix[1] = 2; // Індикація режиму матриць |
309 | mode_r(); |
310 | } else if ( (bmod_L==ON && bmod_R==ON && bmod_58==OFF && bmod_54==OFF && bmod_RF==OFF) || |
311 | (bmod_L==ON && bmod_R==ON && bmod_58==ON && bmod_54==OFF && bmod_RF==OFF) ) { |
312 | //Serial.println("_Аварійка_"); |
313 | //REG_matrix[1] = 3; // Індикація режиму матриць |
314 | mode_lr(); |
315 | } else if (bmod_L==OFF && bmod_R==OFF && bmod_58==ON && bmod_54==OFF && bmod_RF==OFF) { |
316 | //Serial.println("_Габарит_"); |
317 | //REG_matrix[1] = 4; // Індикація режиму матриць |
318 | mode_58(); |
319 | } else if (bmod_54==ON) { |
320 | //Serial.println("_Стоп-сигнал_"); |
321 | //REG_matrix[1] = 5; // Індикація режиму матриць |
322 | mode_54(); |
323 | } else if ((bmod_RF==ON) || (bmod_RF==ON && bmod_RF==ON)) { |
324 | //Serial.println("_Задній хід_"); |
325 | //REG_matrix[1] = 6; // Індикація режиму матриць |
326 | mode_rf(); |
327 | } else if (bmod_mfa_1==ON) { |
328 | //Serial.println("_mfa_1_"); |
329 | //REG_matrix[1] = 7; // Індикація режиму матриць |
330 | //mfa_1(); |
331 | mode_text2(0); // Перепрошую |
332 | } else if (bmod_mfa_2==ON) { |
333 | //Serial.println("_mfa_2_"); |
334 | //REG_matrix[1] = 8; // Індикація режиму матриць |
335 | //mfa_2(); |
336 | mode_text2(2); // Дякую |
337 | } else if (bmod_mfa_3==ON) { |
338 | //Serial.println("_mfa_3_"); |
339 | //REG_matrix[1] = 9; // Індикація режиму матриць |
340 | //mfa_3(); |
341 | mode_text2(5); // UARNet - Супер iнтернет! |
342 | } else { |
343 | //Serial.println("_Помилка_"); |
344 | //REG_matrix[1] = 0; // Індикація режиму матриць |
345 | mode_0(); |
346 | } |
347 | } |
001 | //zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz |
002 | //------------------------------- режим 00 ------------------------------- |
003 | void mode_0() { |
004 | //strcpy (RemoteXY.text_pixel_mode, "Mode-0"); |
005 | //Serial.println("Mode-00 "); |
006 | matrix_l.clear(); // Очищаємо |
007 | matrix_r.clear(); // Очищаємо |
008 | matrix_l.fillScreen(0); |
009 | matrix_r.fillScreen(0); |
010 | matrix_l.show(); // Виводимо, тобто гасимо всі, очищені |
011 | matrix_r.show(); // Виводимо, тобто гасимо всі, очищені |
012 |
013 | REG_matrix[1] = 0; // Індикація режиму матриць |
014 |
015 | } |
016 |
017 | //------------------------------- режим L ------------------------------- |
018 | //Моргає ліва матриця, лівий поворот, жовтим |
019 | void mode_l() { |
020 | REG_matrix[1] = 1; // Індикація режиму матриць |
021 | //Serial.println("Mode-L"); |
022 | matrix_l.clear(); // Очищаємо |
023 | matrix_r.clear(); // Очищаємо |
024 | //uint32_t currentMillis = millis(); // Поточний час в мілісекундах |
025 | matrix_l.setBrightness(brightness_lr); |
026 | matrix_l.setTextColor(colors_t[2]); |
027 | matrix_l.setCursor(2, 0); // Відступ курсора (першого символа) |
028 | if (millis() - previousMillis_l > interval_l){ |
029 | // сохраняем последний момент, когда менялось состояние светодиода |
030 | previousMillis_l = millis(); |
031 | if (m_l_State == LOW){ |
032 | matrix_l.print(slogans[0]); |
033 | matrix_l.show(); // Виводимо напис |
034 | matrix_r.show(); |
035 | m_l_State = HIGH; |
036 | } else { |
037 | matrix_l.clear(); // Очищаємо |
038 | matrix_l.show(); // Виводимо, тобто гасимо всі, очищені |
039 | matrix_r.show(); |
040 | m_l_State = LOW; |
041 | } |
042 | } // millis |
043 | } // void mode_l |
044 |
045 | //------------------------------- режим R ------------------------------- |
046 | //Моргає ліва матриця, лівий поворот, жовтим |
047 | void mode_r() { |
048 | REG_matrix[1] = 2; // Індикація режиму матриць |
049 | //Serial.println("Mode-R"); |
050 | matrix_l.clear(); // Очищаємо |
051 | matrix_r.clear(); // Очищаємо |
052 | //uint32_t currentMillis = millis(); // текущее время в миллисекундах |
053 | matrix_r.setBrightness(brightness_lr); |
054 | matrix_r.setTextColor(colors_t[2]); |
055 | matrix_r.setCursor(2, 0); |
056 | if (millis() - previousMillis_r > interval_r){ |
057 | // сохраняем последний момент, когда менялось состояние светодиода |
058 | previousMillis_r = millis(); |
059 | if (m_r_State == LOW){ |
060 | matrix_r.print(slogans[1]); |
061 | matrix_l.show(); |
062 | matrix_r.show(); // Виводимо напис |
063 | m_r_State = HIGH; |
064 | } else { |
065 | matrix_r.clear(); // Очищаємо |
066 | matrix_l.show(); |
067 | matrix_r.show(); // Виводимо, тобто гасимо всі, очищені |
068 | m_r_State = LOW; |
069 | } |
070 | } // millis |
071 | } // void mode_r |
072 |
073 | //------------------------------- режим LR ------------------------------- |
074 | //Моргає ліва і права матриця, аварійка, жовтим |
075 | void mode_lr() { |
076 | REG_matrix[1] = 3; // Індикація режиму матриць |
077 | //Serial.println("Mode-LR"); |
078 | matrix_l.clear(); // Очищаємо |
079 | matrix_r.clear(); // Очищаємо |
080 | //uint32_t currentMillis = millis(); // текущее время в миллисекундах |
081 | matrix_l.setBrightness(brightness_lr); |
082 | matrix_r.setBrightness(brightness_lr); |
083 | matrix_r.setTextColor(colors_t[2]); |
084 | matrix_l.setTextColor(colors_t[2]); |
085 | matrix_l.setCursor(2, 0); |
086 | matrix_r.setCursor(1, 0); |
087 | if (millis() - previousMillis_lr > interval_lr){ |
088 | // сохраняем последний момент, когда менялось состояние светодиода |
089 | previousMillis_lr = millis(); |
090 | if (m_lr_State == LOW){ |
091 | matrix_l.print(slogans[0]); |
092 | matrix_r.print(slogans[1]); |
093 | matrix_l.show(); // Виводимо напис |
094 | matrix_r.show(); // Виводимо напис |
095 | m_lr_State = HIGH; |
096 | } else { |
097 | matrix_l.clear(); // Очищаємо |
098 | matrix_r.clear(); // Очищаємо |
099 | matrix_l.show(); // Виводимо, тобто гасимо всі, очищені |
100 | matrix_r.show(); // Виводимо, тобто гасимо всі, очищені |
101 | m_lr_State = LOW; |
102 | } |
103 | } // millis |
104 | } // void mode_lr |
105 |
106 | //------------------------------- режим 58 ------------------------------- |
107 | //Світиться квадратами ліва і права матриця, габарит, червоним |
108 | void mode_58() { |
109 | REG_matrix[1] = 4; // Індикація режиму матриць |
110 | //Serial.println("Mode-58"); |
111 | matrix_l.clear(); // Очищаємо |
112 | matrix_r.clear(); // Очищаємо |
113 | matrix_l.setBrightness(brightness_58); |
114 | matrix_r.setBrightness(brightness_58); |
115 | matrix_l.drawBitmap(0, 0, myBitmap[0], 32,8, colors_t[0]); |
116 | matrix_r.drawBitmap(0, 0, myBitmap[0], 32,8, colors_t[0]); |
117 | matrix_l.show(); |
118 | matrix_r.show(); |
119 | } |
120 |
121 | //------------------------------- режим 54 ------------------------------- |
122 | //Світиться слово STOP ліва і права матриця, стоп-сигнал, червоним, ярким |
123 | void mode_54() { |
124 | REG_matrix[1] = 5; // Індикація режиму матриць |
125 | //Serial.println("Mode-54"); |
126 | matrix_l.clear(); // Очищаємо |
127 | matrix_r.clear(); // Очищаємо |
128 | matrix_l.setBrightness(brightness_54); |
129 | matrix_r.setBrightness(brightness_54); |
130 | matrix_l.setTextColor(colors_t[0]); |
131 | matrix_r.setTextColor(colors_t[0]); |
132 | matrix_l.setCursor(5, 0); |
133 | matrix_r.setCursor(5, 0); |
134 | matrix_l.print(slogans[2]); |
135 | matrix_r.print(slogans[2]); |
136 | matrix_l.show(); |
137 | matrix_r.show(); |
138 | } |
139 |
140 | //------------------------------- режим RF ------------------------------- |
141 | //Світиться колами ліва і права матриця, задній хід, білим, ярким |
142 | void mode_rf() { |
143 | REG_matrix[1] = 6; // Індикація режиму матриць |
144 | //Serial.println("Mode-RF"); |
145 | matrix_l.clear(); // Очищаємо |
146 | matrix_r.clear(); // Очищаємо |
147 | matrix_l.setBrightness(brightness_rf); |
148 | matrix_r.setBrightness(brightness_rf); |
149 | matrix_l.drawBitmap(0, 0, myBitmap[1], 32,8, colors_t[6]); |
150 | matrix_r.drawBitmap(0, 0, myBitmap[1], 32,8, colors_t[6]); |
151 | matrix_l.show(); |
152 | matrix_r.show(); |
153 | } |
154 |
155 | //------------------------------- режим 01 ------------------------------- |
156 | // Смайлики |
157 | void mode_m1() { |
158 | REG_matrix[1] = 7; // Індикація режиму матриць |
159 | //Serial.println("Mode-58"); |
160 | matrix_l.setBrightness(brightness); |
161 | matrix_r.setBrightness(brightness); |
162 | matrix_l.fillScreen(0); |
163 | matrix_r.fillScreen(0); |
164 | matrix_l.drawBitmap(0, 0, myBitmap[10], 32,8, colors_t[3]); |
165 | matrix_r.drawBitmap(0, 0, myBitmap[10], 32,8, colors_t[0]); |
166 | //matrix_r.drawBitmap(0, 0, myBitmap[4], 32,8, colors[6]); |
167 | matrix_l.show(); |
168 | matrix_r.show(); |
169 | } |
170 |
171 |
172 | //------------------------------- режим 02 ------------------------------- |
173 | void mode_m2() { |
174 | REG_matrix[1] = 8; // Індикація режиму матриць |
175 | //Serial.println("Mode-R"); |
176 |
177 |
178 |
179 | |
180 | } |
181 |
182 | //------------------------------- режим 03 ------------------------------- |
183 | void mode_m3() { |
184 | REG_matrix[1] = 9; // Індикація режиму матриць |
185 | //Serial.println("Mode-R"); |
186 |
187 |
188 |
189 | } |
190 | //------------------------------- режим 04 ------------------------------- |
191 | void mode_m4() { |
192 | REG_matrix[1] = 10; // Індикація режиму матриць |
193 | //Serial.println("Mode-R"); |
194 |
195 |
196 |
197 | } |
198 | //------------------------------- режим 05 ------------------------------- |
199 | void mode_m5() { |
200 | REG_matrix[1] = 11; // Індикація режиму матриць |
201 | //Serial.println("Mode-LR"); |
202 | uint8_t pass = 0; |
203 | matrix_l.setBrightness(brightness); |
204 | matrix_r.setBrightness(brightness); |
205 | matrix_l.fillScreen(0); |
206 | matrix_r.fillScreen(0); |
207 | matrix_l.setCursor(x_l, 0); |
208 | matrix_r.setCursor(x_r, 0); |
209 | matrix_l.print(utf8rus7(names[3])); |
210 | matrix_r.print(utf8rus7(names[2])); |
211 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
212 | time_text = millis(); |
213 | if (--x_l < -90 && --x_r < -255 ) { // width |
214 | x_l = matrix_l.width(); |
215 | x_r = matrix_r.width(); |
216 | if (++pass >= 7) pass = 0; |
217 | matrix_l.setTextColor(colors_t[pass]); |
218 | matrix_r.setTextColor(colors_t[pass]); |
219 | } |
220 | } // millis |
221 | matrix_l.show(); |
222 | matrix_r.show(); |
223 | } |
224 |
225 | //------------------------------- режим 06 ------------------------------- |
226 | void mode_m6() { |
227 | REG_matrix[1] = 12; // Індикація режиму матриць |
228 | //Serial.println("Mode-R"); |
229 | matrix_l.setBrightness(brightness); |
230 | matrix_r.setBrightness(brightness); |
231 | matrix_l.fillScreen(0); |
232 | matrix_r.fillScreen(0); |
233 | matrix_l.drawBitmap(0, 0, myBitmap[10], 32,8, colors_t[3]); |
234 | matrix_r.drawBitmap(0, 0, myBitmap[10], 32,8, colors_t[0]); |
235 | //matrix_r.drawBitmap(0, 0, myBitmap[4], 32,8, colors[6]); |
236 | matrix_l.show(); |
237 | matrix_r.show(); |
238 | } |
239 | //------------------------------- режим 07 ------------------------------- |
240 | void mode_m7() { |
241 | REG_matrix[1] = 13; // Індикація режиму матриць |
242 | //Serial.println("Mode-54"); |
243 | uint8_t pass = 0; |
244 | matrix_l.setBrightness(brightness); |
245 | matrix_r.setBrightness(brightness); |
246 | matrix_l.fillScreen(0); // Виводимо колір з буферу на екран |
247 | matrix_r.fillScreen(0); |
248 | matrix_l.setCursor(x_l, 0); |
249 | matrix_r.setCursor(x_r, 0); |
250 | //matrix_l.print(names[0]); |
251 | //matrix_r.print(names[0]); |
252 | matrix_l.print(utf8rus7(names[0])); |
253 | matrix_r.print(utf8rus7(names[0])); |
254 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
255 | time_text = millis(); |
256 | if (--x_l < -50 && --x_r < -50 ) { // width |
257 | x_l = matrix_l.width(); |
258 | x_r = matrix_r.width(); |
259 | if (++pass >= 7) pass = 0; |
260 | matrix_l.setTextColor(colors_t[pass_l]); |
261 | matrix_r.setTextColor(colors_t[pass_r]); |
262 | } |
263 | } // millis |
264 | matrix_l.show(); |
265 | matrix_r.show(); |
266 | } |
267 |
268 | //------------------------------- режим 08 ------------------------------- |
269 | void mode_m8() { |
270 | REG_matrix[1] = 14; // Індикація режиму матриць |
271 | //Serial.println("Mode-RF"); |
272 | //pass_l = 7; |
273 | //uint8_t pass1 = 0; |
274 | matrix_l.setBrightness(brightness); |
275 | matrix_r.setBrightness(brightness); |
276 | matrix_l.fillScreen(0); |
277 | matrix_r.fillScreen(0); |
278 | matrix_l.setCursor(x_l, 0); |
279 | matrix_r.setCursor(x_r, 0); |
280 | matrix_l.print(utf8rus7(names[5])); |
281 | matrix_r.print(utf8rus7(names[4])); |
282 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
283 | time_text = millis(); |
284 | if (--x_l < -70 || --x_r < -40 ) { // width |
285 | x_l = matrix_l.width(); |
286 | x_r = matrix_r.width(); |
287 | if (++pass_l >= 7) {pass_l = 0;} |
288 | if (pass_r-- <= 0) {pass_r = 6;} |
289 | matrix_l.setTextColor(colors_t[pass_l]); |
290 | matrix_r.setTextColor(colors_t[pass_r]); |
291 | } |
292 | } // millis |
293 | matrix_l.show(); |
294 | matrix_r.show(); |
295 | } |
296 |
297 | //------------------------------- режим 09 ------------------------------- |
298 | void mode_m9() { |
299 | REG_matrix[1] = 15; // Індикація режиму матриць |
300 | //itoa ((RemoteXY.button_R ==1), RemoteXY.text_out, 10); |
301 | //Serial.println("Mode-R"); |
302 | uint8_t pass = 0; |
303 | matrix_l.setBrightness(brightness); |
304 | matrix_r.setBrightness(brightness); |
305 | matrix_l.fillScreen(0); |
306 | matrix_r.fillScreen(0); |
307 | matrix_l.setCursor(x_l, 0); |
308 | matrix_r.setCursor(x_r, 0); |
309 | matrix_l.print(utf8rus7(names[3])); |
310 | matrix_r.print(utf8rus7(names[2])); |
311 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
312 | time_text = millis(); |
313 | if (--x_l < -90 && --x_r < -200 ) { // width |
314 | x_l = matrix_l.width(); |
315 | x_r = matrix_r.width(); |
316 | if (++pass >= 7) {pass = 0;} |
317 | matrix_l.setTextColor(colors_t[pass]); |
318 | matrix_r.setTextColor(colors_t[pass]); |
319 | } |
320 | } // millis |
321 | matrix_l.show(); |
322 | matrix_r.show(); |
323 | } |
324 |
325 | //------------------------------- режим 10 ------------------------------- |
326 | void mode_m10() { |
327 | REG_matrix[1] = 16; // Індикація режиму матриць |
328 | //Serial.println("Mode-LR"); |
329 | matrix_l.setBrightness(brightness); |
330 | matrix_r.setBrightness(brightness); |
331 | matrix_l.fillScreen(0); |
332 | matrix_r.fillScreen(0); |
333 | matrix_l.setCursor(x_l, 0); |
334 | matrix_r.setCursor(x_r, 0); |
335 | matrix_l.print(utf8rus7(names[8])); |
336 | matrix_r.print(utf8rus7(names[8])); |
337 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
338 | time_text = millis(); |
339 | if (--x_l < -100 && --x_r < -100 ) { // width |
340 | x_l = matrix_l.width(); |
341 | x_r = matrix_r.width(); |
342 | if (++pass_l >= 7) {pass_l = 0;} |
343 | if (pass_r-- <= 0) {pass_r = 6;} |
344 | matrix_l.setTextColor(colors_t[pass_l]); |
345 | matrix_r.setTextColor(colors_t[pass_r]); |
346 | } |
347 | } // millis |
348 | matrix_l.show(); |
349 | matrix_r.show(); |
350 | } |
351 |
352 | //------------------------------- режим 11 ------------------------------- |
353 | void mode_m11() { |
354 | REG_matrix[1] = 17; // Індикація режиму матриць |
355 | //Serial.println("Mode-58"); |
356 | } |
357 |
358 | //------------------------------- режим 12 ------------------------------- |
359 | void mode_m12() { |
360 | REG_matrix[1] = 18; // Індикація режиму матриць |
361 | //Serial.println("Mode-54"); |
362 | } |
363 |
364 | //------------------------------- режим text ------------------------------- |
365 | void mode_text(uint8_t num_t) { |
366 | REG_matrix[1] = 7; // Індикація режиму матриць |
367 | //Serial.println("Mode-R"); |
368 | uint8_t width_t; |
369 | if (num_t == 0) width_t = 70; |
370 | if (num_t == 1) width_t = 60; |
371 | if (num_t == 2) width_t = 40; |
372 | if (num_t == 3) width_t = 100; |
373 | if (num_t == 4) width_t = 120; |
374 | if (num_t == 5) width_t = 160; |
375 | if (num_t == 6) width_t = 40; |
376 | if (num_t == 7) width_t = 50; |
377 | if (num_t == 8) width_t = 50; |
378 | if (num_t == 9) width_t = 50; |
379 | if (num_t == 10)width_t = 50; |
380 |
381 | matrix_l.setBrightness(brightness); |
382 | matrix_r.setBrightness(brightness); |
383 | matrix_l.fillScreen(0); // Обнуление матрицы |
384 | matrix_r.fillScreen(0); // очищаем экран при каждом выполнении цикла |
385 | matrix_l.setCursor(x_l, 0); |
386 | matrix_l.print(utf8rus7(names[num_t])); |
387 | if (millis() - time_text > speed_text){ // значение паузы |
388 | time_text = millis(); |
389 | if (--x_l < -width_t) { // width |
390 | x_l = matrix_l.width(); |
391 | if (++pass_l >= 7) pass_l = 0; |
392 | matrix_l.setTextColor(colors_t[pass_l]); |
393 | } |
394 | } // millis |
395 | matrix_l.show(); |
396 | matrix_r.show(); |
397 | } |
398 |
399 | //------------------------------- режим text 2 ------------------------------- |
400 | void mode_text2(uint8_t num_t) { |
401 | //REG_matrix[1] = 7; // Індикація режиму матриць |
402 | //Serial.println("Mode-R"); |
403 | uint8_t width_t; |
404 | if (num_t == 0) width_t = 70; |
405 | if (num_t == 1) width_t = 60; |
406 | if (num_t == 2) width_t = 40; |
407 | if (num_t == 3) width_t = 100; |
408 | if (num_t == 4) width_t = 120; |
409 | if (num_t == 5) width_t = 160; |
410 | if (num_t == 6) width_t = 40; |
411 | if (num_t == 7) width_t = 50; |
412 | if (num_t == 8) width_t = 50; |
413 | if (num_t == 9) width_t = 50; |
414 | if (num_t == 10)width_t = 50; |
415 |
416 | matrix_l.setBrightness(brightness); |
417 | matrix_r.setBrightness(brightness); |
418 | matrix_l.fillScreen(0); // Обнуление матрицы |
419 | matrix_r.fillScreen(0); // очищаем экран при каждом выполнении цикла |
420 | matrix_l.setCursor(x_l, 0); |
421 | matrix_r.setCursor(x_r, 0); |
422 | matrix_l.print(utf8rus7(names[num_t])); |
423 | matrix_r.print(utf8rus7(names[num_t])); |
424 |
425 | if (millis() - time_text > speed_text){ // Пауза |
426 | time_text = millis(); |
427 | if (--x_l < -width_t && --x_r < -width_t ) { // Послідовно на двох матрицях |
428 | //if(--x_l < -width_t || --x_r < -width_t ) { // Паралельно на двох матрицях |
429 | x_l = matrix_l.width(); |
430 | x_r = matrix_r.width(); |
431 | if (++pass_l >= 7) {pass_l = 0;} // Перебираємо кольори на лівій матриці |
432 | if (pass_r-- <= 0) {pass_r = 6;} // Перебираємо кольори на правій матриці |
433 | matrix_l.setTextColor(colors_t[pass_l]); // Приміняємо колір лівої матриці |
434 | matrix_r.setTextColor(colors_t[pass_r]); // Приміняємо колір правої матриці |
435 | } |
436 | } // millis |
437 | matrix_l.show(); // Виводимо текст на лівій матриці |
438 | matrix_r.show(); // Виводимо текст на правій матриці |
439 | } |
440 |
441 | //------------------------------- режим text 3 ------------------------------- |
442 |
443 | //zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz |
444 |
445 | //////////////////////////////////////////// |
446 |
447 | // ----- Р Е Ж И М И Р О Б О Т И ----- |
448 |
449 | //-------------------------------------- |
450 |
451 | // Світимо червоним, на двох матрицях, габарит |
452 | void mods_58 (){ |
453 | matrix_l.clear(); // Очищаємо |
454 | matrix_r.clear(); // Очищаємо |
455 | matrix_l.setBrightness(brightness_58); |
456 | matrix_r.setBrightness(brightness_58); |
457 | matrix_l.drawBitmap(0, 0, myBitmap[0], 32,8, colors_t[1]); |
458 | matrix_r.drawBitmap(0, 0, myBitmap[1], 32,8, colors_t[3]); |
459 | matrix_l.show(); |
460 | matrix_r.show(); |
461 | } |
462 | //-------------------------------------- |
463 |
464 | // СТОП - моргають дві матриці, червоним |
465 | void mods_54(){ |
466 | uint32_t currentMillis = millis(); // текущее время в миллисекундах |
467 | matrix_l.clear(); // Очищаємо |
468 | matrix_r.clear(); // Очищаємо |
469 | matrix_l.setBrightness(brightness_54); |
470 | matrix_r.setBrightness(brightness_54); |
471 | matrix_l.setTextColor(colors_t[0]); |
472 | matrix_r.setTextColor(colors_t[0]); |
473 | matrix_l.setCursor(5, 0); |
474 | matrix_r.setCursor(5, 0); |
475 | if (currentMillis - previousMillis_54 > interval_54) { |
476 | // сохраняем последний момент, когда менялось состояние светодиода |
477 | previousMillis_54 = currentMillis; |
478 | if (ledState_54 == LOW) { |
479 | //matrix_l.print(slogans[2]); |
480 | //matrix_r.print(slogans[2]); |
481 | matrix_l.print(slogans[2]); |
482 | matrix_r.print(slogans[2]); |
483 | matrix_l.show(); |
484 | matrix_r.show(); |
485 | ledState_54 = HIGH; |
486 | } else { |
487 | matrix_l.clear(); |
488 | matrix_r.clear(); |
489 | matrix_l.show(); |
490 | matrix_r.show(); |
491 | ledState_54 = LOW; |
492 | } |
493 | } // millis |
494 | } // void mods_54 |
495 | //-------------------------------------- |
496 |
497 | // Світяться габарити, на двох матрицях, червоним |
498 | void mods_rf (){ |
499 | matrix_l.clear(); // Очищаємо |
500 | matrix_r.clear(); // Очищаємо |
501 | matrix_l.setBrightness(brightness_rf); |
502 | matrix_r.setBrightness(brightness_rf); |
503 | matrix_l.drawBitmap(0, 0, myBitmap[3], 32,8, colors[3]); |
504 | matrix_r.drawBitmap(0, 0, myBitmap[4], 32,8, colors[6]); |
505 | matrix_l.show(); |
506 | matrix_r.show(); |
507 | } |
508 | //-------------------------------------- |
509 | // Тестова підпрограма |
510 | void mods_11 (){ |
511 | //uint8_t pass = 0; |
512 | matrix_l.setBrightness(brightness); |
513 | matrix_r.setBrightness(brightness); |
514 | matrix_l.fillScreen(0); // Обнуление матрицы |
515 | matrix_r.fillScreen(0); // очищаем экран при каждом выполнении цикла |
516 | // закрашиваем матрицу в красный цвет |
517 | //matrix.fillScreen(matrix.Color(255, 0, 0)); |
518 | matrix_l.setCursor(x_l, 0); |
519 | //matrix.print(F("UARNet - Good Internet!")); |
520 | //matrix.println(utf8rus("Тест")); |
521 | //matrix_l.print(utf8rus(F("Привiт з Хелма!"))); // // width - 90 |
522 | //matrix_l.print(F("Test")); |
523 | //matrix_l.print(F("Dziekuje.")); // width - 50 |
524 | //matrix_l.print(F("Przepraszam.")); // width - 70 |
525 | //matrix_l.print(F("Usmiechnij sie, a zycie bedzie lepsze!")); // width - 225 |
526 | //matrix_l.print(names[4]); // width - 225 |
527 | //matrix_l.print(utf8rus(names[3])); |
528 | //matrix_l.print(utf8rus(names[0])); |
529 | //matrix_l.print(F("UARNet Red Green Blue Red Green Blue!")); |
530 | matrix_l.println(utf8rus7(names[7])); |
531 | //matrix_l.print(F("<<<<<")); |
532 | // matrix_l.drawBitmap(0, 0, myBitmap[3], 32,8, colors[pass]); |
533 | //matrix_l.drawBitmap(0, 0, myBitmap[3], 32,8, colors[pass]); |
534 | //matrix_l.print(F("<<<<<")); |
535 | //matrix_l.print(slogans[0]); |
536 | //matrix_l.print(slogans[0]); |
537 | //if(currentMillis - previousMillis > interval) { |
538 | // сохраняем последний момент, когда менялось состояние светодиода |
539 | //previousMillis = currentMillis; |
540 | if (millis() - time_text > speed_text){ // Вместо 10000 подставьте нужное вам значение паузы |
541 | time_text = millis(); |
542 | if (--x_l < -260) { // width |
543 | x_l = matrix_l.width(); |
544 | if (++pass_l >= 7) {pass_l = 0;} |
545 | matrix_l.setTextColor(colors_t[pass_l]); |
546 | } |
547 | } // millis |
548 | matrix_l.show(); |
549 | //matrix_r.show(); |
550 | } // void mods_11 |
551 | //-------------------------------------- |
01 | //////////// ----------------------------//////////// |
02 |
03 | //---------------------------------------------------------------------------- |
04 | /* Recode russian fonts from UTF-8 to Windows-1251 */ |
05 | // String utf8rus (источник строки) |
06 |
07 | #define maxString 21 |
08 | char target[maxString + 1] = "" ; |
09 |
10 | char *utf8rus7( char *source) |
11 | { |
12 | int i,j,k; |
13 | unsigned char n; |
14 | char m[2] = { '0' , '\0' }; |
15 |
16 | strcpy(target, "" ); k = strlen(source); i = j = 0; |
17 |
18 | while (i < k) { |
19 | n = source[i]; i++; |
20 |
21 | if (n >= 0xC0) { |
22 | switch (n) { |
23 | case 0xD0: { |
24 | n = source[i]; i++; |
25 | if (n == 0x81) { n = 0xA8; break ; } |
26 | if (n >= 0x90 && n <= 0xBF) n = n + 0x30; |
27 | break ; |
28 | } |
29 | case 0xD1: { |
30 | n = source[i]; i++; |
31 | if (n == 0x91) { n = 0xB8; break ; } |
32 | if (n >= 0x80 && n <= 0x8F) n = n + 0x70; |
33 | break ; |
34 | } |
35 | } |
36 | } |
37 |
38 | m[0] = n; strcat(target, m); |
39 | j++; if (j >= maxString) break ; |
40 | } |
41 | return target; |
42 | } |
43 | //---------------------------------------------------------------------------- |
44 | ------------------------------------- |
В зависимости от прихода сигнала на пини, от задних фонарей автомобиля, загораются разние знаки на матрицах. Все работает. Но не расчитано на входной импульсний сигнал от ламп поворотов. Если давать постояяний смгнал (когда лапми поворотов просто светятся), то все работает. Нужно чтоби пока идут импульси на вход сигнала от ламп поворотов, то побпрограма моргания исполнялась. как-бы сказать.... Ну пока идут импульси с частотой 0.5-1 секунда, то подпрограма выполняется, как только в течении 1 секунди нет изменение на входном пине, от лампи поворотов, то подпрограма моргания прекращала свою работу. И не смейтесь и не судите строго ))))))
В зависимости от прихода сигнала на пини, от задних фонарей автомобиля, загораются разние знаки на матрицах. Все работает. Но не расчитано на входной импульсний сигнал от ламп поворотов. Если давать постояяний смгнал (когда лапми поворотов просто светятся), то все работает. Нужно чтоби пока идут импульси на вход сигнала от ламп поворотов, то побпрограма моргания исполнялась. как-бы сказать.... Ну пока идут импульси с частотой 0.5-1 секунда, то подпрограма выполняется, как только в течении 1 секунди нет изменение на входном пине, от лампи поворотов, то подпрограма моргания прекращала свою работу. И не смейтесь и не судите строго ))))))
я же тебе написал этот кусок, в начале loop, (строки 170 - 180) не уж то не работает?
Скажу чесно, не обратил внимания, взавтра попробую. Благодарствую. (Невнимательний, весь в работе, здесь, за бугром)