помогите разобраться с кодом.
- Войдите на сайт для отправки комментариев
Втр, 20/09/2016 - 20:01
Доброго времени суток господа.
Есть скетч управления rgb лентой. схема давно спаяна и все работает. И алгоритм примерно понятен
все бы ничего но любопытсво заело .
в часности непонятно " int* value " " (*value)--; " " (&redVal, 1); "
Обьяснице пожалуйста "на пальцах" как дословно читаются компилятором строки 37-55 !!!
// RGB LED - Automatic Color Cycling // // Matthew L Beckler // matthew at mbeckler dot org int redPin = 12; int bluePin = 10; int greenPin = 9; int redIn = 0; int greenIn = 1; int blueIn = 2; int redVal; int greenVal; int blueVal; void setup() { redVal = 255; greenVal = 255; blueVal = 255; update(); } // This function updates the LED outputs. void update() { analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal); } // This function updates one of the color variables // either getting brighter or getting dimmer. // It also updates the outputs and delays for 10 milliseconds. void color_morph(int* value, int get_brighter) { for (int i = 0; i < 255; i++) { if (get_brighter) (*value)--; else (*value)++; update(); delay(10); } } void loop() { // start out at black (all off) color_morph(&redVal, 1); // transition to red color_morph(&greenVal, 1); // transition to yellow color_morph(&redVal, 0); // transition to green color_morph(&blueVal, 1); // transition to aqua color_morph(&redVal, 1); // transition to white color_morph(&greenVal, 0); // transition to violet color_morph(&redVal, 0); // transition to blue color_morph(&blueVal, 0); // transition to black (all off) }
тема указатели
Для объяснения потребуется курс программирования. Имена и указатели. В функцию передается имя переменной (указатель на нее). Эта переменная в цикле меняется.
*a читается как «данные по адресу a»;
&x читается как «адрес x»;
Само собой разумеется, что *(&b) Есть просто само b.
То есть *(&b) = 456 это тоже самое, что написать b = 456;