помогите разобраться с кодом.
- Войдите на сайт для отправки комментариев
Втр, 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;