Всем привет! Возник такой вопрос: Вот ссылка на страницу http://wiki.amperka.ru/программирование:константы-переменные-арифметика Далее: Пульсирующий маячок. Код с сайта: Код (C++): #define LED_PIN 5 int step = 0; int brightness = 0; int sign; void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { analogWrite(LED_PIN, brightness); step++; sign = (step / 256) % 2; brightness = sign ? brightness + 1 : brightness - 1; delay(5); } Вроде все в порядке, но если прочитать статью, что я и сделал, то может возникнуть вопрос. В статье говорится, что для Код (C++): analogWrite(); вторая переменная должна быть 0-255 тогда зачем здесь: Код (C++): sign = (step / 256) % 2; стоит 256 ??? Заранее спасибо за ответы
Всю статью читали? Делит переменную степ на 256 Т.е любое число от 0 до 255 даст 0 так как оперируем в целых числах. 256/ 256 даст 1 От 256 до 511 / 256 будет давать 1 От 512 до 765 будет 2 И тд
Добрый день. Только начал изучение Ардуинку и споткнулся на этом-же скетче, в начале поста. Помогите, пожалуйста разобраться: sign = (step / 256) % 2; brightness = sign ? brightness + 1 : brightness - 1; если переменная step принимает значение 0 - 255, то и sign принимает значение 0 , и тогда переменная brightness принимает значение brightness -1. И получается, параметр, задающий яркость светодиода принимает отрицательное значение? Спасибо за ответ
конструкция brightness = sign ? brightness + 1 : brightness - 1; это то же самое что и Код (C++): if ( sign == 1 ) { brightness = brightness +1; } else { brightness = brightness -1; } так что да ошибка есть. мы начинаем с sign = 0 правильнее будет brightness = sign ? brightness 1 : brightness + 1;
В кусочке кода :? brightness 1 : между brightness и 1 разве допустим пробел? Получается и переменная и единичка в воздухе "висят" без привязки