Опрераторы
- Войдите на сайт для отправки комментариев
Вс, 28/01/2018 - 19:54
Такой вопрос, написал скетч, создал оператор FOR с циклом в нем и там же создал оператор IF, в котором прерывание BREAK. Собственно в чем вопрос, Функция BREAK подействует на FOR, через IF???
Такой вопрос, написал скетч, создал оператор FOR с циклом в нем и там же создал оператор IF, в котором прерывание BREAK. Собственно в чем вопрос, Функция BREAK подействует на FOR, через IF???
Функция BREAK подействует на FOR, через IF???
"Функция BREAK", если она здорова и нормально тренируется, должна пробить FOR через IF. Мы будем за неё болеть!
Два вопроса:
1. Что мешает проверить самому?
2. Код "совершенно секретный" или "особой важности", что здесь его показать нельзя?
Такой вопрос, написал скетч, создал оператор FOR с циклом в нем и там же создал оператор IF, в котором прерывание BREAK. Собственно в чем вопрос, Функция BREAK подействует на FOR, через IF???
Если лень попробовать, напиши на всякий случай BREAK 2 раза, один для IF, второй для FOR.
напиши на всякий случай BREAK 2 раза, один для IF, второй для FOR.
+100500! И как я не додумался?
А их нужно последовательно писать или параллельно для увеличения пробивной силы?
фигня ваш брейк! return круче на порядок! И кстати включать его можно где угодно! Выход - гарантирован.
GOTO разделывает ваш return как бог черепаху.
Лошадью ходи!https://www.youtube.com/watch?v=2N5bNkfmOTA
GOTO разделывает ваш return как бог черепаху.
прости меня Господи, GOTO
А що Ви имеете супротив goto?
А що Ви имеете супротив goto?
Ну, знаете-ли, грешно это, к запрещенным приемчикам прибегать. Не-по-па-нятиям! Вас ни разу к ответу за , прости меня Господи, GOTO не призывали?
Да призывали как-то. Послал их jmp в ассемблерных листингах считать.
А их нужно последовательно писать или параллельно для увеличения пробивной силы?
Нужно написать цикл для многократного вызова BREAK :)
2 причины) Он капец какой длинный строк под 600))) и проблема в IRremout, то есть ик приемник не хочет работать как надо. Да и я один раз сюда выкладывал скетч, сайт мне его перевел, вот теперь думаю как бы 2 раз не накосячить) А по поводу проверки, я чет уже туплю после бесчисленных попыток решить проблему выхода из цикла и выполнить указанное действие при появлении данных на ик приемнике. Я попробую сейчас его выложить. Если не затупит)))
#include "IRremote.h" // Подключаем библиотеку IRremote.h для работы я ик датчиком IRrecv irrecv(12); // Вывод для подключения ик датчика decode_results results; // Переменная для получения данных с ик двтчика #include <EEPROM.h> // Подключаем библиотеку сохранения переменных в память ардуино #include <Wire.h> #include <LiquidCrystal_I2C.h> // Подключаем библиотеку для LCD дисплея LiquidCrystal_I2C lcd(0x3F, 20, 4); // Указываем адрес, количество ячеек, количество строк #include <iarduino_NeoPixel.h> // Подключаем библиотеку iarduino_NeoPixel для работы со светодиодами NeoPixel iarduino_NeoPixel led(5,20); // Объявляем объект LED указывая (№ вывода Arduino к которому подключён модуль NeoPixel, количество используемых светодиодов) uint8_t j; // Объявляем переменную для хранения значения сдвига спектра цветов для всех светодиодов (от 0 до 255) uint8_t k; // Объявляем переменную для хранения положения сдвига спектра цвета для каждого светодиода на спектре j (зависит от количества светодиодов) uint8_t r, g, b; // Объявляем переменную для хранения цветов RGB для каждого светодиода const uint8_t zy=5; int diod = 20; // Количество светодиодов в цепи int prew = 6; // Вывод кнопки PREW int next = 7; // Вывод кнопки NEXT int chl = 11; // Вывод кнопки CH+ int chr = 10; // Вывод кнопки CH- int f=0; // Значение переменной для работы с эффектами int x = EEPROM[0]; // Восстановление переменной цвета из цыкла int y = EEPROM[1]; // Восстановление переменной из цыкла int z = 0; int x1 = EEPROM[2]; // Восстановление переменной эффекта из цыкла int y1 = EEPROM[3]; // Восстановление переменной из цыкла int zz = 0; // Переменная для обновления дисплея int pul = 0; // Преременная для эффекта дорожка int R = 0; // Переменная для работы с красным цветом int G = 0; // Переменная для работы с зеленым цветом int B = 0; // Переменная для работы с синим цветом int timer = EEPROM[4]; // Восстановление переменной для временной паузы int xxx = 1; // Переменная для отключения яркости дисплея int zumer = 13; // Вывод для подключения зумера для звукового уведомления int power = 2; // Вывод для подключения мосфета в цепь питания int tx = 0; // Переменная для отключения всей схемы int ty = EEPROM[5]; // Переменная для сравненя с переменной в цикле отключения int c = 1; int aaa = 0xFFA25D; int bbb = 0xFFE21D; int ccc = 0xFF629D; int ddd = 0xFF22DD; int eee = 0xFF02FD; int fff = 0xFFA857; int ggg = 0xFFE01F; int hhh = 0xFF906F; int iii = 0xFF9867; int jjj = 0xFFB04F; void setup(){ Serial.begin(9600); irrecv.enableIRIn(); // запускаем прием lcd.begin(); // Инициируем работу с модулем LCD дисплея led.begin(); // Инициируем работу с модулем NeoPixel led.setColor(NeoPixelAll, 0, 0, 0); // Выключаем случайно включенные светодиоды led.write(); // Отправляем данные о выключении pinMode(zumer, OUTPUT); // Указываем пин зумера как выход pinMode(power, OUTPUT); // Указываем пин мосфета как выход digitalWrite(power, HIGH); // Даем сигнал на мосфет для замыкания цепи питания digitalWrite(zumer, HIGH); // Даем сигнал на зумер для уведомления о выполнении работы с мосфетом delay(150); // Ожидание для удобства digitalWrite(zumer, LOW); delay(50); digitalWrite(zumer, HIGH); // Даем сигнал на зумер для уведомления о выполнении работы с мосфетом delay(150); // Ожидание для удобства digitalWrite(zumer, LOW);// Выключаем зумер pinMode(prew, INPUT); // Указываем пин prew как вход pinMode(next, INPUT); // Указываем пин next как вход pinMode(chl, INPUT); // Указываем пин chl как вход pinMode(chr, INPUT); // Указываем пин chr как вход lcd.setCursor(9,0); // Выставляем курсор lcd.print("HI"); // Выводим текст delay(1000); // Ожидание lcd.setCursor(0,1); // Выставляем курсор lcd.print("THIS IS GABARIT LEDS"); // Выводим текст delay(1000); // Ожидание lcd.setCursor(5,2); // Выставляем курсор lcd.print("ANGEL EYES"); // Выводим текст delay(5000); // Ожидание lcd.clear(); // Очищаем дисплей } void loop(){ NEW: if(digitalRead (next) == HIGH){ delay(500); zz = 0; x1 ++; dr1: if(digitalRead (next) == HIGH){ delay(50); goto dr1; } goto NEW; } if(digitalRead (prew) == HIGH){ delay(500); zz = 0; x1 --; dr2: if(digitalRead (next) == HIGH){ delay(50); goto dr2; } goto NEW; } if(digitalRead (chr) == HIGH){ delay(500); zz = 0; x ++; dr3: if(digitalRead (next) == HIGH){ delay(50); goto dr3; } goto NEW; } if(digitalRead (chl) == HIGH){ delay(500); zz = 0; x --; dr4: if(digitalRead (next) == HIGH){ delay(50); goto dr4; } goto NEW; } if ( irrecv.decode( &results )) { if(results.value == 0xFFA25D || results.value == 0xFFE21D || results.value == 0xFF629D || results.value == 0xFF22DD || results.value == 0xFF02FD || results.value == 0xFFA857 || results.value == 0xFFE01F || results.value == 0xFF906F || results.value == 0xFF9867 || results.value == 0xFFB04F){ Serial.println("A"); Serial.println(results.value); switch ( results.value ) { case 0xFFA25D: x --; zz = 0; break; case 0xFFE21D: x ++; zz = 0; break; case 0xFF629D: if(x == 0){ x = random (1, 14); x1 = random (1, 8); } else{ x = 0; x1 = 0; } zz = 0; break; case 0xFF22DD: x1 --; zz = 0; break; case 0xFF02FD: x1 ++; zz = 0; break; case 0xFFA857: timer +=10; zz = 0; break; case 0xFFE01F: timer -=10; zz = 0; break; case 0xFF906F: if(xxx == 0){ xxx = 1; lcd.backlight(); delay(100); } else{ xxx = 0; lcd.noBacklight(); delay(100); } break; case 0xFF9867: ty -= 10; if(ty <= 10){ ty = 10; } tx = ty; zz = 0; break; case 0xFFB04F: ty += 10; if(ty >= 990){ ty = 990; } tx = ty; zz = 0; break; } } irrecv.resume(); // принимаем следующую команду } EEPROM[0] = x; EEPROM[1] = y; EEPROM[2] = x1; EEPROM[3] = y1; EEPROM[4] = timer; EEPROM[5] = ty; if(x == 0){ x1 = 0; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); }else{ tx = ty; c = 1; } if(timer <= 10){ timer = 10; } if(timer >= 250){ timer = 250; } if(zz == 0){ tx = ty; zz = 1; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); } if(x == 0){ lcd.setCursor(3,3); lcd.print("NO"); } if(x>=15){ x=3; } if(x<=0){ x=0; } switch(x){ case 0: R = 0; G = 0; B = 0; AllLow(); break; case 1: lcd.setCursor(3,2); lcd.print("RANDOM"); R = random(0, 255); G = random(0, 255); B = random(0, 255); break; case 2: lcd.setCursor(3,2); lcd.print("WHITE"); R = 200; G = 200; B = 200; break; case 3: lcd.setCursor(3,2); lcd.print("RED"); R = 255; G = 0; B = 0; break; case 4: lcd.setCursor(3,2); lcd.print("ORANGE"); R = 255; G = 127; B = 0; break; case 5: lcd.setCursor(3,2); lcd.print("YELLOW"); R = 255; G = 255; B = 0; break; case 6: lcd.setCursor(3,2); lcd.print("GREEN-1"); R = 127; G = 255; B = 0; break; case 7: lcd.setCursor(3,2); lcd.print("GREEN-2"); R = 0; G = 255; B = 0; break; case 8: lcd.setCursor(3,2); lcd.print("GREEN-3"); R = 0; G = 255; B = 127; break; case 9: lcd.setCursor(3,2); lcd.print("BLUE-1"); R = 0; G = 255; B = 255; break; case 10: lcd.setCursor(3,2); lcd.print("BLUE-2"); R = 0; G = 127; B = 255; break; case 11: lcd.setCursor(3,2); lcd.print("BLUE-3"); R = 0; G = 0; B = 255; break; case 12: lcd.setCursor(3,2); lcd.print("PURPLE"); R = 127; G = 0; B = 255; break; case 13: lcd.setCursor(3,2); lcd.print("PINK-1"); R = 255; G = 0; B = 255; break; case 14: lcd.setCursor(3,2); lcd.print("PINK-2"); R = 255; G = 0; B = 127; break; } if(x > 0){ if(x1>=9){ x1=9; } if(x1<=0){ x1=0; } switch(x1){ case 0: lcd.setCursor(3, 3); lcd.print("HIGH"); break; case 1: lcd.setCursor(3, 3); lcd.print("H -L"); break; case 2: lcd.setCursor(3, 3); lcd.print("H>-L"); break; case 3: lcd.setCursor(3, 3); lcd.print("H>-L>"); break; case 4: lcd.setCursor(3, 3); lcd.print("H>-L<"); break; case 5: lcd.setCursor(3, 3); lcd.print("RAND-BACK"); R = random(0, 255); G = random(0, 255); B = random(0, 255); break; case 6: lcd.setCursor(3, 3); lcd.print("RAND-PIXE"); R = random(0, 255); G = random(0, 255); B = random(0, 255); break; case 7: lcd.setCursor(3, 3); lcd.print("RUN"); break; case 8: lcd.setCursor(3, 3); lcd.print("RADUGA"); R = 255; G = 0; B = 255; break; case 9: lcd.setCursor(3, 3); lcd.print("POLICE"); R = 255; G = 0; B = 255; break; } } if(zz == 0){ zz = 1; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); } switch(x1){ case 0: for(f = 0; f<diod; f++){ // влк if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println("D"); Serial.println(results.value); goto back0; } } if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back0; } led.setColor(f, R,G,B); led.write(); delay(timer); } back0: break; case 1: led.setColor(NeoPixelAll, R, G, B); led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back2; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println("E"); Serial.println(results.value); goto back2; } } led.setColor(NeoPixelAll, 0, 0, 0); led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back2; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println("F"); Serial.println(results.value); goto back2; } } back2: break; case 2: for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println(results.value); break; } } } f = 0; led.setColor(NeoPixelAll, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); break; case 3: for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back3; } } } f = 0; for(f = 0; f<diod; f++){ led.setColor(f, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back3; } } } back3: break; case 4: for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back4; } } } for(f = diod; f>=0; f--){ led.setColor(f, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back4; } } } back4: break; case 5: if(f < diod){ for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back5; } } } }else{ for(f = diod; f>=0; f--){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back5; } } } } back5: break; case 6: f = random(0, diod); led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(50); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back6; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back6; } } back6: break; case 7: j++; // Смещаем спектр цветов для всех светодиодов for(uint16_t i=0; i<led.count(); i++){ // Проходим по всем светодиодам k=((uint16_t)(i*256/led.count())+j); // Определяем положение очередного светодиода на смещённом спектре цветов if(k<85){ if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back7; } } b=0; r=k*3; g=255-r; } else // Перелив от зелёного к красному, через жёлтый if(k<170){ if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back7; } } if ( irrecv.decode( &results )) { // если данные пришли goto back7; } k-=85; g=0; b=k*3; r=255-b; } else{ // Перелив от красного к синему , через фиолетовый if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back7; } } k-=170; r=0; g=k*3; b=255-g; } // Перелив от синего к зелёному, через голубой led.setColor(i, r,g,b); // Устанавливаем выбранный цвет для очередного светодиода } led.write(); // Записываем цвета всех светодиодов delay(timer); // Устанавливаем задержку back7: break; case 8: led.setColor(NeoPixelAll, R,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back8; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back8; } } led.setColor(NeoPixelAll, 0,0,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back8; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ goto back8; } } back8: break; case 9: if(pul < 0){ pul = diod; } for(f = 0; f < pul; f ++){ led.setColor(f, R, G, B); led.write(); led.setColor(f, 0, 0, 0); led.write(); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ pul = diod; break; } if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ pul = diod; goto back9; } } delay(timer); } led.setColor(f, R, G, B); pul --; back9: break; } } void AllLow(){ lcd.setCursor(3, 2); lcd.print("LOW"); if(c == 1){ //выкл for(f=0; f<diod; f++){ if ( irrecv.decode( &results )) { // если данные пришли Serial.println("B"); Serial.println(results.value); if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println("B"); Serial.println(results.value); break; } } if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ break; } led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); c = 0; } } else{ tx --; delay(500); if ( irrecv.decode( &results )) { // если данные пришли if(results.value == aaa || results.value == bbb || results.value == ccc || results.value == ddd || results.value == eee || results.value == fff || results.value == ggg || results.value == hhh || results.value == iii || results.value == jjj){ Serial.println("C"); Serial.println(results.value); goto back; } } if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH){ goto back; } delay(500); if(tx == 0){ digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(power, LOW); } } back:; }Собственно проблема в том, этот скетч для ангельских глазок на диодах WS2812B, а дело в том, что инфра красный приемник если не устанавливать IF с отсечением ненужных сигналов, не выполняет вычитание сложение, и т. п., но видно по меганию диодов, что он видит пульт, а работает с отсечение и всеми положенными ему операциями, только в основном цикле loop. А если дописать отсечение в другой ветке цикла допустим nam3 (); там он вообще не реагирует.
У Вас пиццот раз встречается
517if( irrecv.decode( &results )) {// если данные пришли518if(results.value == aaa || results.value == bbb ||519results.value == ccc || results.value == ddd ||520results.value == eee || results.value == fff ||521results.value == ggg || results.value == hhh ||522results.value == iii || results.value == jjj)думаю, стоило бы вынести это в функцию, код станет более читабельным.
Конструкция
094NEW:095096if(условие){...;...;105gotoNEW;106}по идее должна быть записана как
094while(условие){
...;
...;
}
GOTO разделывает ваш return как бог черепаху.
Меня возмущает отсутствие gosub
В великом языке INTERCAL была полная противоположность GOTO - оператор COMEFROM ("получить управление ИЗ"). Вот его мне иногда реально не хватает :))))
Собственно проблема в том, этот скетч для ангельских глазок на диодах WS2812B, а дело в том, что инфра красный приемник если не устанавливать IF с отсечением ненужных сигналов, не выполняет вычитание сложение, и т. п., но видно по меганию диодов, что он видит пульт, а работает с отсечение и всеми положенными ему операциями, только в основном цикле loop. А если дописать отсечение в другой ветке цикла допустим nam3 (); там он вообще не реагирует.
Собственно крупные проблемы у вас в delay(), насиловании EEPROM (он еще жив?) и субпространственных прыжках внутри switch() с помощью GOTO. Ну и мелких не счесть.
Он капец какой длинный строк под 600)))
Здесь скетчи на 5 тысяч строк выкладывают: http://arduino.ru/forum/proekty/transistor-tester-arduino
А по поводу проверки, я чет уже туплю после бесчисленных попыток решить проблему выхода из цикла и выполнить указанное действие при появлении данных на ик приемнике.
Операторы goto back0; не нужны, вместо них можно сразу писать break;
Информация из справочника на сайте: http://arduino.ru/Reference/Break
вот это неправильно
047intaaa = 0xFFA25D;048intbbb = 0xFFE21D;049intccc = 0xFF629D;050intddd = 0xFF22DD;051inteee = 0xFF02FD;052intfff = 0xFFA857;053intggg = 0xFFE01F;054inthhh = 0xFF906F;055intiii = 0xFF9867;056intjjj = 0xFFB04F;тип не соответствует константам. Лучше замени это и это
144if( irrecv.decode( &results )) {145if(results.value == 0xFFA25D || results.value == 0xFFE21D ||146results.value == 0xFF629D || results.value == 0xFF22DD ||147results.value == 0xFF02FD || results.value == 0xFFA857 ||148results.value == 0xFFE01F || results.value == 0xFF906F ||149results.value == 0xFF9867 || results.value == 0xFFB04F){на
const long IRCodesArray[] = { 0xFFA25D, 0xFFE21D, 0xFF629D, 0xFF22DD, 0xFF02FD, 0xFFA857, 0xFFE01F, 0xFF906F, 0xFF9867, 0xFFB04F }; short getIRCodeIndex(long value) { short size = sizeof(IRCodesArray) / sizeof(long); for (short i = 0; i < size; i++) { if (IRCodesArray[i] == value) return i; } return -1; }если вернулся индекс меньше 0, код в массиве не найден, если больше или равно - строй свои switch-и с case-ами.
А вапще говнокод, канешна, жуткий....
Оператов break, на мой взгляд, в любом языке означает (дословно) прервать. Это как бы подразумевает выход либо из while/for, либо из switch/case.
Тут складывается впечатление, что автор копипасту сунул без минимальных знаний в программировании. Даже 30 минут пожалел на просмотр видео уроков с Youtube.
Он выведен по подному разу в каждом отдельном действии, я мог бы его вывесть в основной цикл, или один раз в цикле, тогла очень сложно будет попасть в момент, когда нужно нажать кнопку. В этоим проблема тоже)))
EEPROM работает) delay я применяю на уровне своих знаний) зная что задержку можно только так сделать) Я не углублялся в познания программирования, для меня это муть, вс со временем, чем дальше иду, тем больше нового узнаю.
А можно пожалуйста поподробнее, или ссылочку или название, с чем придется работать, тяжело когда не понятно) А очень хочется знать.
EEPROM работает)
Ничего страшного, не перживайте, это скоро пройдёт.
break выдает ошибку, говорит могу выйти только из циклов While for Do. из If не могу. Сорян
Хотя я чуть подзаморочусь и подумаю в чем пробл. Спасибо. за ссылку.
Я уйму видео пересмотрел в ютубе, да, умом и знаниями, я не блещу, тяжело, когда не у кого спросить. Для меня, главное что работате. Откуда может выбросить break, я в курсе, изза многочисленных несостыковок, он ошибку выдает. По этому пока так.
И можно собственно обозначать ошибки, а не говорить что все стрвшно и плохо, я за этим сюда и пришел, что все плохо, я и так знаю, мне факты нужны!!!
И можно собственно обозначать ошибки, а не говорить что все стрвшно и плохо, я за этим сюда и пришел, что все плохо, я и так знаю, мне факты нужны!!!
Вы даже основ не знаете. Какие вам факты ещё нужны?
Ну естественно я не прогаммист, мне дано железо, могу из говна и палом что то сделать, программирование для меня муть страшная, но интересная. По этому я спрашиваю. Какие основы?
Вот хороший курс по программированию Arduino. Там уроков 12. Может больше. Все смотреть не обязательно, но половины будет достаточно.
С моим IQ == 56 он был осознан легко. Рекомендую.
И можно собственно обозначать ошибки, а не говорить что все стрвшно и плохо, я за этим сюда и пришел, что все плохо, я и так знаю, мне факты нужны!!!
Вам крупно повезет, если кто-то возьмется Ваш код править, тем более , что описание ТЗ Вы не предоставили. А из ваших не совсем каноничных записей понять предполагаемую логику работы устройства затруднительно. Я так думаю(с)
Ну естественно я не прогаммист
не знаю, что в этом естесственного? Для человека, занимающегося микроконтроллерами - естесственно быть программистом - если не по должности, то хотя бы в душе. А тем. кто в душе "непрограммист" - тут вообще делать нечего, имхо.
СПАСИБО БОЛЬШОЕ!!! Рад что есть люди, которые прошли весь путь программирования и помогают) Больше бы таких) Еще раз спасибо!
SSSRMaster. Вы что тупой. Есть две книги- http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf и https://vk.com/doc16756779_228187070?hash=88e5b6ccd4f822602c&dl=ccc12f550fe4ac896f
Вот их надо знать как закон Ома. А потом уже садиться за поектирования более менее сложных систем. Скачайте, купите и читайте по полного просветления. Считайте что это Старый и Новый Завет . И у вас не будет goto , там где достаточно return.
Ух как бомбит) Ладно, будем раздираться с проблемой как получится) Спасибо за помощь)
Да и собственно проблема не переходах, а в том, что пульт не определяется в циклических процесах, я не могу понять почему, и как это исправить, может много разделов для определения пульта сделал, может не правильное отсечение ненужной инфы, а то не хочется, чтобы заного все делал.
Да, чего вы все к гоуту привязались? То им делэй не нравится, то гоуту - что за дискриминация?!?
Пошёл писать устав "Общества защиты прав операторов перехода!"
Да и собственно проблема не переходах, а в том, что пульт не определяется в циклических процесах, я не могу понять почему
написали же выше - константы кодов пульта заданы неправильно, они и не будут определяться - ни в циклах, ни снаружи.
Ну и вообще весь код можно сократить строк на 200 - тогда и ошибки будет легче искать.
Какую функцию выполняет число после return X ? Вот полазил, не нашел.
расходимся ....
Какую функцию выполняет число после return X ? Вот полазил, не нашел.
Полазьте ещё. Под диваном посмотрите.
Хотя, ... форма допуска у Вас какая? А то функция секретная, её кому попало не раскрывают.
Это был самый первый план, который я написал, исправил местами на return, проблема снова в том, что при работе в цикле эффектов, это разделы num1 num2 num3 num4 и т.д., он видит пульт, светодиоды на несколько миллисекунд замирают и снова продолжает крутить эту же функцию и лишь в тот момент когда она закончилась или началась, он понимает пульт и меняет что требую. Простые кнопки, которые подключены к плате он видит всегда, и делале что нужно. #include "IRremote.h" // Подключаем библиотеку IRremote.h для работы я ик датчиком IRrecv irrecv(12); // Вывод для подключения ик датчика decode_results results; // Переменная для получения данных с ик двтчика #include <EEPROM.h> // Подключаем библиотеку сохранения переменных в память ардуино #include <Wire.h> #include <LiquidCrystal_I2C.h> // Подключаем библиотеку для LCD дисплея LiquidCrystal_I2C lcd(0x3F, 20, 4); // Указываем адрес, количество ячеек, количество строк #include <iarduino_NeoPixel.h> // Подключаем библиотеку iarduino_NeoPixel для работы со светодиодами NeoPixel iarduino_NeoPixel led(5,10); // Объявляем объект LED указывая (№ вывода Arduino к которому подключён модуль NeoPixel, количество используемых светодиодов) uint8_t j; // Объявляем переменную для хранения значения сдвига спектра цветов для всех светодиодов (от 0 до 255) uint8_t k; // Объявляем переменную для хранения положения сдвига спектра цвета для каждого светодиода на спектре j (зависит от количества светодиодов) uint8_t r, g, b; // Объявляем переменную для хранения цветов RGB для каждого светодиода const uint8_t zy=5; int diod = 20; // Количество светодиодов в цепи int prew = 6; // Вывод кнопки PREW int next = 7; // Вывод кнопки NEXT int chl = 11; // Вывод кнопки CH+ int chr = 10; // Вывод кнопки CH- int set = 8; int f=0; // Значение переменной для работы с эффектами int x = EEPROM[0]; // Восстановление переменной цвета из цыкла int y = EEPROM[1]; // Восстановление переменной из цыкла int z = 0; int x1 = EEPROM[2]; // Восстановление переменной эффекта из цыкла int y1 = EEPROM[3]; // Восстановление переменной из цыкла int zz = 0; // Переменная для обновления дисплея int pul = 0; // Преременная для эффекта дорожка int c = 1; int rel = 0; int R = 0; // Переменная для работы с красным цветом int G = 0; // Переменная для работы с зеленым цветом int B = 0; // Переменная для работы с синим цветом int timer = EEPROM[4]; // Восстановление переменной для временной паузы int xxx = 1; // Переменная для отключения яркости дисплея int zumer = 13; // Вывод для подключения зумера для звукового уведомления int power = 2; // Вывод для подключения мосфета в цепь питания int tx = 0; // Переменная для отключения всей схемы int ty = EEPROM[5]; // Переменная для сравненя с переменной в цикле отключения void setup(){ irrecv.enableIRIn(); // запускаем прием lcd.begin(); // Инициируем работу с модулем LCD дисплея led.begin(); // Инициируем работу с модулем NeoPixel led.setColor(NeoPixelAll, 0, 0, 0); // Выключаем случайно включенные светодиоды led.write(); // Отправляем данные о выключении pinMode(zumer, OUTPUT); // Указываем пин зумера как выход pinMode(power, OUTPUT); // Указываем пин мосфета как выход digitalWrite(power, HIGH); // Даем сигнал на мосфет для замыкания цепи питания digitalWrite(zumer, HIGH); // Даем сигнал на зумер для уведомления о выполнении работы с мосфетом delay(150); // Ожидание для удобства digitalWrite(zumer, LOW); delay(50); digitalWrite(zumer, HIGH); // Даем сигнал на зумер для уведомления о выполнении работы с мосфетом delay(150); // Ожидание для удобства digitalWrite(zumer, LOW); // Выключаем зумер pinMode(prew, INPUT); // Указываем пин prew как вход pinMode(next, INPUT); // Указываем пин next как вход pinMode(chl, INPUT); // Указываем пин chl как вход pinMode(chr, INPUT); // Указываем пин chr как вход pinMode(set, INPUT); // Указываем пин menu как вход lcd.setCursor(9,0); // Выставляем курсор lcd.print("HI"); // Выводим текст delay(1000); // Ожидание lcd.setCursor(0,1); // Выставляем курсор lcd.print("THIS IS GABARIT LEDS"); // Выводим текст delay(1000); // Ожидание lcd.setCursor(5,2); // Выставляем курсор lcd.print("ANGEL EYES"); // Выводим текст delay(5000); // Ожидание lcd.clear(); // Очищаем дисплей } void loop(){ NEW:; if(zz == 0){ zz = 1; tx = ty; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); if(rel == 0){ lcd.setCursor(0,0); lcd.print("C~A~"); } else{ lcd.setCursor(0,0); lcd.print("TIME"); } } if(digitalRead (set) == HIGH){ delay(150); if(rel == 0){ rel = 1; zz = 0; goto NEW; } if(rel == 1){ rel = 0; zz = 0; goto NEW; } } switch(rel){ case 0: if(digitalRead (next) == HIGH){ delay(150); zz = 0; x1 ++; goto NEW; } if(digitalRead (prew) == HIGH){ delay(150); zz = 0; x1 --; goto NEW; } if(digitalRead (chr) == HIGH){ delay(150); zz = 0; x ++; goto NEW; } if(digitalRead (chl) == HIGH){ delay(150); zz = 0; x --; goto NEW; } break; case 1: if(digitalRead (next) == HIGH){ delay(150); zz = 0; timer += 10; if(timer >= 250){ timer = 250; } goto NEW; } if(digitalRead (prew) == HIGH){ delay(150); zz = 0; timer -= 10; if(timer <= 10){ timer = 10; } goto NEW; } if(digitalRead (chr) == HIGH){ delay(150); zz = 0; ty += 10; if(ty >= 990){ ty = 990; } tx = ty; goto NEW; } if(digitalRead (chl) == HIGH){ delay(150); zz = 0; ty -= 10; if(ty <= 10){ ty = 10; } tx = ty; goto NEW; } break; } EEPROM[0] = x; EEPROM[1] = y; EEPROM[2] = x1; EEPROM[3] = y1; EEPROM[4] = timer; EEPROM[5] = ty; if(x == 0){ x1 = 0; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); if(rel == 0){ lcd.setCursor(0,0); lcd.print("C~A~"); } else{ lcd.setCursor(0,0); lcd.print("TIME"); } if(tx == 0){ digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(power, LOW); } }else{ tx = ty; c = 1; } if(x == 0){ lcd.setCursor(3,3); lcd.print("NO"); } if(x>=15){ x=3; } if(x<=0){ x=0; } switch(x){ case 0: R = 0; G = 0; B = 0; allLOW(); break; case 1: lcd.setCursor(3,2); lcd.print("RANDOM"); R = random(0, 255); G = random(0, 255); B = random(0, 255); break; case 2: lcd.setCursor(3,2); lcd.print("WHITE"); R = 200; G = 200; B = 200; break; case 3: lcd.setCursor(3,2); lcd.print("RED"); R = 255; G = 0; B = 0; break; case 4: lcd.setCursor(3,2); lcd.print("ORANGE"); R = 255; G = 127; B = 0; break; case 5: lcd.setCursor(3,2); lcd.print("YELLOW"); R = 255; G = 255; B = 0; break; case 6: lcd.setCursor(3,2); lcd.print("GREEN-1"); R = 127; G = 255; B = 0; break; case 7: lcd.setCursor(3,2); lcd.print("GREEN-2"); R = 0; G = 255; B = 0; break; case 8: lcd.setCursor(3,2); lcd.print("GREEN-3"); R = 0; G = 255; B = 127; break; case 9: lcd.setCursor(3,2); lcd.print("BLUE-1"); R = 0; G = 255; B = 255; break; case 10: lcd.setCursor(3,2); lcd.print("BLUE-2"); R = 0; G = 127; B = 255; break; case 11: lcd.setCursor(3,2); lcd.print("BLUE-3"); R = 0; G = 0; B = 255; break; case 12: lcd.setCursor(3,2); lcd.print("PURPLE"); R = 127; G = 0; B = 255; break; case 13: lcd.setCursor(3,2); lcd.print("PINK-1"); R = 255; G = 0; B = 255; break; case 14: lcd.setCursor(3,2); lcd.print("PINK-2"); R = 255; G = 0; B = 127; break; } if(zz == 0){ tx = ty; zz = 1; lcd.clear(); lcd.setCursor(17,0); lcd.print(tx); lcd.setCursor(13,0); lcd.print("OFF"); lcd.setCursor(14,1); lcd.print("- VL +"); lcd.setCursor(0,1); lcd.print("T~"); lcd.setCursor(3,1); lcd.print(timer); lcd.setCursor(0,2); lcd.print("C~"); lcd.setCursor(14,2); lcd.print("- CH +"); lcd.setCursor(0,3); lcd.print("A~"); lcd.setCursor(14,3); lcd.print("|<<>>|"); if(rel == 0){ lcd.setCursor(0,0); lcd.print("C~A~"); } else{ lcd.setCursor(0,0); lcd.print("TIME"); } } if(x > 0){ if(x1>=9){ x1=9; } if(x1<=0){ x1=0; } switch(x1){ case 0: lcd.setCursor(3, 3); lcd.print("HIGH"); LHIGH(); break; case 1: lcd.setCursor(3, 3); lcd.print("H -L"); nam1(); break; case 2: lcd.setCursor(3, 3); lcd.print("H>-L"); nam2(); break; case 3: lcd.setCursor(3, 3); lcd.print("H>-L>"); nam3(); break; case 4: lcd.setCursor(3, 3); lcd.print("H>-L<"); nam4(); break; case 5: lcd.setCursor(3, 3); lcd.print("RAND-BACK"); R = random(0, 255); G = random(0, 255); B = random(0, 255); nam5(); break; case 6: lcd.setCursor(3, 3); lcd.print("RAND-PIXE"); R = random(0, 255); G = random(0, 255); B = random(0, 255); nam6(); break; case 7: lcd.setCursor(3, 3); lcd.print("RUN"); nam8(); break; case 8: lcd.setCursor(3, 3); lcd.print("RADUGA"); R = 255; G = 0; B = 255; raduga(); break; case 9: lcd.setCursor(3, 3); lcd.print("POLICE"); R = 255; G = 0; B = 255; nam7(); break; } } } void allLOW(){ lcd.setCursor(3, 2); lcd.print("LOW"); if(c == 1){ //выкл for(f=0; f<diod; f++){ if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); c = 0; } } else{ tx --; delay(500); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } delay(500); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } if(tx == 0){ digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(zumer, HIGH); delay(250); digitalWrite(zumer, LOW); delay(500); digitalWrite(power, LOW); } } } void LHIGH(){ for(f = 0; f<diod; f++){ if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } led.setColor(f, R,G,B); led.write(); delay(timer); } } void nam1(){ led.setColor(NeoPixelAll, R, G, B); led.write(); delay(timer); led.setColor(NeoPixelAll, 0, 0, 0); led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } void nam2(){ for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } f = 0; led.setColor(NeoPixelAll, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); } void nam3(){ for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } f = 0; for(f = 0; f<diod; f++){ led.setColor(f, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } } void nam4(){ for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } for(f = diod; f>=0; f--){ led.setColor(f, 0,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } } void nam5(){ if(f < diod){ for(f = 0; f<diod; f++){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } }else{ for(f = diod; f>=0; f--){ led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } } } void nam6(){ f = random(0, diod); led.setColor(f, R,G,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(50); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } void raduga(){ j++; // Смещаем спектр цветов для всех светодиодов for(uint16_t i=0; i<led.count(); i++){ // Проходим по всем светодиодам k=((uint16_t)(i*256/led.count())+j); // Определяем положение очередного светодиода на смещённом спектре цветов if(k<85){ if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } b=0; r=k*3; g=255-r; } else // Перелив от зелёного к красному, через жёлтый if(k<170){ if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } k-=85; g=0; b=k*3; r=255-b; } else{ // Перелив от красного к синему , через фиолетовый if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } k-=170; r=0; g=k*3; b=255-g; } // Перелив от синего к зелёному, через голубой led.setColor(i, r,g,b); // Устанавливаем выбранный цвет для очередного светодиода } led.write(); // Записываем цвета всех светодиодов delay(zy); // Устанавливаем задержку } void nam7(){ led.setColor(NeoPixelAll, R,0,0); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } led.setColor(NeoPixelAll, 0,0,B); // Устанавливаем красный цвет для 0 светодиода (0,R,G,B) led.write(); delay(timer); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } } void nam8(){ if(pul < 0){ pul = diod; } for(f = 0; f < pul; f ++){ led.setColor(f, R, G, B); led.write(); led.setColor(f, 0, 0, 0); led.write(); if(digitalRead(chl) == HIGH || digitalRead(chr) == HIGH || digitalRead(prew) == HIGH || digitalRead(next) == HIGH || digitalRead(set) == HIGH){ return; } if ( irrecv.decode( &results )) { // если данные пришли pult(); return; } delay(timer); } led.setColor(f, R, G, B); pul --; } void pult(){ if(results.value == 0xFFA25D || results.value == 0xFFE21D || results.value == 0xFF629D || results.value == 0xFF22DD || results.value == 0xFF02FD || results.value == 0xFFA857 || results.value == 0xFFE01F || results.value == 0xFF906F || results.value == 0xFF9867 || results.value == 0xFFB04F){ switch ( results.value ) { case 0xFFA25D: x --; zz = 0; break; case 0xFFE21D: x ++; zz = 0; break; case 0xFF629D: if(x == 0){ x = random (1, 14); x1 = random (1, 8); } else{ x = 0; x1 = 0; } zz = 0; break; case 0xFF22DD: x1 --; zz = 0; break; case 0xFF02FD: x1 ++; zz = 0; break; case 0xFFA857: timer +=10; if(timer >= 250){ timer = 250; } zz = 0; break; case 0xFFE01F: timer -=10; if(timer <= 10){ timer = 10; } zz = 0; break; case 0xFF906F: if(xxx == 0){ xxx = 1; lcd.backlight(); delay(100); } else{ xxx = 0; lcd.noBacklight(); delay(100); } break; case 0xFF9867: ty -= 10; if(ty <= 10){ ty = 10; } tx = ty; zz = 0; break; case 0xFFB04F: ty += 10; if(ty >= 990){ ty = 990; } tx = ty; zz = 0; break; } } irrecv.resume(); // принимаем следующую команду }Просьба на коментарии в цикле не обращайте внимание, они левые.
Все
gotoNEW;надо поменять на return; программу это не исправит но идиотизм уменьшится.А как сделать тпк, чтобы он вернулся сразу к началу? Что то мне подсказывает что он не возвращается назад