/*
Bu program ortak anot bağlantılı RGB LED için yazılmıştır.
Ortak katot bağlantılı RGB LED için program içerisinde
değişiklikler yapılmalıdır.
*/
// LED bağlantılarını tanımlıyoruz.
int rpin = 11;
int gpin = 10;
int bpin = 9;
// Ton değerini tanımlıyoruz.
float h = 0;
// Renk değerlerini tanımlıyoruz.
int r = 0;
int g = 0;
int b = 0;
void setup() {
// Pin modları burada belirtilmeli (Kitapta bu kısım eksik bırakılmış olabilir)
pinMode(rpin, OUTPUT);
pinMode(gpin, OUTPUT);
pinMode(bpin, OUTPUT);
}
void loop() {
// Ton değerini 1 değerine ulaşana kadar her seferinde arttırıyoruz.
h = h + 0.001;
if (h >= 1.0) {
h = 0;
}
h2rgb(h, r, g, b);
// Ortak anot RGB LED kodları
analogWrite(rpin, 255 - r);
analogWrite(gpin, 255 - g);
analogWrite(bpin, 255 - b);
delay(50);
}
void h2rgb(float H, int& R, int& G, int& B) {
int var_i;
float V = 1, S = 1, var_1, var_2, var_3, var_r, var_g, var_b, var_h;
if (S == 0) {
R = V * 255;
G = V * 255;
B = V * 255;
} else {
var_h = H * 6;
if (var_h == 6) var_h = 0;
var_i = int(var_h);
var_1 = V * (1 - S);
var_2 = V * (1 - S * (var_h - var_i));
var_3 = V * (1 - S * (1 - (var_h - var_i)));
if (var_i == 0) {
var_r = V;
var_g = var_3;
var_b = var_1;
} else if (var_i == 1) {
var_r = var_2;
var_g = V;
var_b = var_1;
} else if (var_i == 2) {
var_r = var_1;
var_g = V;
var_b = var_3;
} else if (var_i == 3) {
var_r = var_1;
var_g = var_2;
var_b = V;
} else if (var_i == 4) {
var_r = var_3;
var_g = var_1;
var_b = V;
} else {
var_r = V;
var_g = var_1;
var_b = var_2;
}
R = (var_r) * 255;
G = (var_g) * 255;
B = (var_b) * 255;
}
}
Bu program ortak anot bağlantılı RGB LED için yazılmıştır.
Ortak katot bağlantılı RGB LED için program içerisinde
değişiklikler yapılmalıdır.
*/
// LED bağlantılarını tanımlıyoruz.
int rpin = 11;
int gpin = 10;
int bpin = 9;
// Ton değerini tanımlıyoruz.
float h = 0;
// Renk değerlerini tanımlıyoruz.
int r = 0;
int g = 0;
int b = 0;
void setup() {
// Pin modları burada belirtilmeli (Kitapta bu kısım eksik bırakılmış olabilir)
pinMode(rpin, OUTPUT);
pinMode(gpin, OUTPUT);
pinMode(bpin, OUTPUT);
}
void loop() {
// Ton değerini 1 değerine ulaşana kadar her seferinde arttırıyoruz.
h = h + 0.001;
if (h >= 1.0) {
h = 0;
}
h2rgb(h, r, g, b);
// Ortak anot RGB LED kodları
analogWrite(rpin, 255 - r);
analogWrite(gpin, 255 - g);
analogWrite(bpin, 255 - b);
delay(50);
}
void h2rgb(float H, int& R, int& G, int& B) {
int var_i;
float V = 1, S = 1, var_1, var_2, var_3, var_r, var_g, var_b, var_h;
if (S == 0) {
R = V * 255;
G = V * 255;
B = V * 255;
} else {
var_h = H * 6;
if (var_h == 6) var_h = 0;
var_i = int(var_h);
var_1 = V * (1 - S);
var_2 = V * (1 - S * (var_h - var_i));
var_3 = V * (1 - S * (1 - (var_h - var_i)));
if (var_i == 0) {
var_r = V;
var_g = var_3;
var_b = var_1;
} else if (var_i == 1) {
var_r = var_2;
var_g = V;
var_b = var_1;
} else if (var_i == 2) {
var_r = var_1;
var_g = V;
var_b = var_3;
} else if (var_i == 3) {
var_r = var_1;
var_g = var_2;
var_b = V;
} else if (var_i == 4) {
var_r = var_3;
var_g = var_1;
var_b = V;
} else {
var_r = V;
var_g = var_1;
var_b = var_2;
}
R = (var_r) * 255;
G = (var_g) * 255;
B = (var_b) * 255;
}
}