Издевались над "маячком", напоролись на проблему. Программа проходит один цикл и не повторяется. Суть в чём. Два светодиода (красный и зелёный - для определённости, но это неважно) горят строго попеременно. Если один горит, второй не горит. Причём яркость их изменяется (привязана к значению счётчика), и чем дольше горит светодиод, тем он тусклее. И пока яркость одного нарастает, яркость второго падает. Общая длина одного прохода - примерно постоянна. Текст скетча: Код (C++): #define RED_PIN 9 #define GRN_PIN 10 void setup() { // put your setup code here, to run once: pinMode(RED_PIN, OUTPUT); pinMode(GRN_PIN, OUTPUT); } void loop() { // Цикл по i от 0 до 255 с единичным шагом for(int i = 0; 255; i++) {analogWrite(RED_PIN, i); // первый полупроход цикла - красный горит analogWrite(GRN_PIN, 0); // а зелёный - не горит delay((255 - i ) * 2); // уменьшающаяся задержка analogWrite(RED_PIN, 0); // второй полупроход - наоборот analogWrite(GRN_PIN, (255 - i)); delay(i * 2); // растущая задержка; если сложить оба полупрохода, получим 512 мс. } } Луп не происходит. Программа не повторяется. Может кто-нибудь исправить ошибку, а лучше - объяснить, почему она возникла? Заранее спасибо.
Код (C++): for(int i = 0; 255; i++) Выражение между двумя точками с запятой, т.е. "255" всегда не равно нулю, т.е. всегда истинно. Код (C++): for(int i = 0; i < 255; i++) Нужно просто быть внимательнее. Слева от кнопочки "цитата" есть кнопочка "код", вы лучше ее нажимайте, когда хотите исходник на форум засунуть. А если в Arduino IDE нажимать Ctrl+T, то будет совсем красиво.
Запись for(XXX; YYY; ZZZ) {...} следует читать так: выполнять тело цикла до тех пор, пока истинно выражение YYY. Перед циклом выполнить XXX, а после каждого прохода тела цикла выполнить YYY. Выражения в данном случае могут быть практически любыми - можно и функции вызывать, и сложные формулы писать. Постарайтесь подобным образом расписать логику выполнения всех конструкций языка и наступит просветление.