Färgskiftande display (15 / 15 steg)
Steg 15: Huvudprogrammet
/*Används för egen färg temp visning
November 2013
Ray McQueen
Seriell utgång till 74hc374
Blanks visning
Tom ledande 0
Lägsta Temp är 0
Display temp flera gånger gör sedan ett roligt flash
Temp utjämning för att förhindra att stora temp hopp
*/
//
CONST int blue_data = 13. 74xx374 pin3
CONST int red_data = 12; 74xx374 pin3
CONST int green_data = 11; 74xx374 pin3
CONST int blue_clk3 = 10; blå 3: e siffran
CONST int blue_clk2 = 9; Blå 2: a siffran
CONST int blue_clk1 = 8; Blue 1: a siffran
CONST int red_clk3 = 7. röd 3: e siffran
CONST int red_clk2 = 6; röd 2: a siffran
CONST int red_clk1 = 5; röd 1: a siffran
CONST int green_clk3 = 4; grön 3: e siffran
CONST int green_clk2 = 3; grön 2: a siffran
CONST int green_clk1 = 2; grön 1: a siffran
//
int dig_it1 = 0; Första siffran i displayen
int dig_it2 = 0; Andra siffran i displayen
int dig_it3 = 0; Tredje siffran i displayen
//
int data_1 = 0; / / första data 100 räkna
int data_2 = 0; / / andra data 10 räkna
int data_3 = 0; / / tredje data 1 räkna
//
int test_test = 0; / / butik nummer för testning
int tmprtr = 0; / / för den temperatur behandlingen
int tmprtr_old = 0; / / Last temp behandlingen
int tmprtr_new = 0; / / denna temp behandlingen
flyta tmprtr_read = 0; / / första behandlingen att göra matten
//
//
int siffror [] = {
252, 12, 182, 158, 78, 218, 122, 140, 254, 206, 0
}; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Tom
//
//
int segment [] = {
255, 1, 128, 64, 32, 16, 8, 4, 2, 0
}; Allt på vänster decimalen, Top Center, överst,
Vänster nedre, längst ner i mitten, längst ner till höger, höger överkant,
Middle Center, Blank
//
//
int del_short = 75. / / kort fördröjning för cirkling lysdioder
int del_long = 1000; / / lång fördröjning
int cirkel = 0; / / gånger för cirkling
//
void setup() {
pinMode (blue_data, produktionen); definiera som utdata
pinMode (red_data, produktionen); definiera som utdata
pinMode (green_data, produktionen); definiera som utdata
pinMode (blue_clk3, produktionen); definiera som utdata
pinMode (blue_clk2, produktionen); definiera som utdata
pinMode (blue_clk1, produktionen); definiera som utdata
pinMode (red_clk3, produktionen); definiera som utdata
pinMode (red_clk2, produktionen); definiera som utdata
pinMode (red_clk1, produktionen); definiera som utdata
pinMode (green_clk3, produktionen); definiera som utdata
pinMode (green_clk2, produktionen); definiera som utdata
pinMode (green_clk1, produktionen); definiera som utdata
//
//
TOM ALLA SIFFROR
//
data_1 = 10; / / First data 10 = Blank
data_2 = 10; / / andra data 10 = Blank
data_3 = 10; / / tredje data 10 = Blank
//
blue_shift(); / / när röjning hela display du behöver bara
att kalla ett färg SKIFT eftersom alla färg skiftar klart
någon annan färg innan själva. blue_shift
används här men det kan vara någon av färgskiftningar.
//
//
}
//
void loop() {
//
//
för (cirkel = 0; cirkel < 60; cirkel ++) {
get_tmprtr(); / / läsa LM335 och konvertera till temperatur
temp_lvlr(); / / förhindrar stora temp hopp
Convert (); / / bryta temp ut för korrekt visning
color_2_display(); / / välja vilken färg du vill visa
Delay(del_long); / / fördröjning
}
fun_ky_flash(); / / göra lite kul blinkande innan du gör temp igen.
//
//
** SLUTET AV MAIN LOOP **
//
//
}
//
//
//
void blue_shift() {
//
Clear all annan färg siffror först... justin fallet.
Detta är att skifta ut för blå på hela displayen
//
dig_it1 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it2 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it3 = 0; / / 0 = 0000 0000 inga lysdioder på
//
shiftOut (red_data, red_clk1, LSBFIRST, dig_it1); //
shiftOut (red_data, red_clk2, LSBFIRST, dig_it2); //
shiftOut (red_data, red_clk3, LSBFIRST, dig_it3); //
shiftOut (green_data, green_clk1, LSBFIRST, dig_it1); //
shiftOut (green_data, green_clk2, LSBFIRST, dig_it2); //
shiftOut (green_data, green_clk3, LSBFIRST, dig_it3); //
//
dig_it1 = (digits[data_1]);
dig_it2 = (digits[data_2]);
dig_it3 = (digits[data_3]);
shiftOut (blue_data, blue_clk1, LSBFIRST, dig_it1); //
shiftOut (blue_data, blue_clk2, LSBFIRST, dig_it2); //
shiftOut (blue_data, blue_clk3, LSBFIRST, dig_it3); //
//
}
//
//
void red_shift() {
//
Clear all annan färg siffror först... justin fallet.
Detta är att skifta ut red på hela displayen
//
dig_it1 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it2 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it3 = 0; / / 0 = 0000 0000 inga lysdioder på
//
shiftOut (blue_data, blue_clk1, LSBFIRST, dig_it1); //
shiftOut (blue_data, blue_clk2, LSBFIRST, dig_it2); //
shiftOut (blue_data, blue_clk3, LSBFIRST, dig_it3); //
shiftOut (green_data, green_clk1, LSBFIRST, dig_it1); //
shiftOut (green_data, green_clk2, LSBFIRST, dig_it2); //
shiftOut (green_data, green_clk3, LSBFIRST, dig_it3); //
//
dig_it1 = (digits[data_1]);
dig_it2 = (digits[data_2]);
dig_it3 = (digits[data_3]);
shiftOut (red_data, red_clk1, LSBFIRST, dig_it1); //
shiftOut (red_data, red_clk2, LSBFIRST, dig_it2); //
shiftOut (red_data, red_clk3, LSBFIRST, dig_it3); //
//
}
//
//
void green_shift() {
//
Clear all annan färg siffror först... justin fallet.
Detta är att skifta ut grön på hela displayen
//
dig_it1 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it2 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it3 = 0; / / 0 = 0000 0000 inga lysdioder på
//
shiftOut (red_data, red_clk1, LSBFIRST, dig_it1); //
shiftOut (red_data, red_clk2, LSBFIRST, dig_it2); //
shiftOut (red_data, red_clk3, LSBFIRST, dig_it3); //
shiftOut (blue_data, blue_clk1, LSBFIRST, dig_it1); //
shiftOut (blue_data, blue_clk2, LSBFIRST, dig_it2); //
shiftOut (blue_data, blue_clk3, LSBFIRST, dig_it3); //
//
dig_it1 = (digits[data_1]);
dig_it2 = (digits[data_2]);
dig_it3 = (digits[data_3]);
shiftOut (green_data, green_clk1, LSBFIRST, dig_it1); //
shiftOut (green_data, green_clk2, LSBFIRST, dig_it2); //
shiftOut (green_data, green_clk3, LSBFIRST, dig_it3); //
//
}
//
//
void yellow_shift() {
//
Clear all annan färg siffror först... justin fallet.
Detta är att skifta ut gul på hela displayen
//
dig_it1 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it2 = 0; / / 0 = 0000 0000 inga lysdioder på
dig_it3 = 0; / / 0 = 0000 0000 inga lysdioder på
//
shiftOut (blue_data, blue_clk1, LSBFIRST, dig_it1); //
shiftOut (blue_data, blue_clk2, LSBFIRST, dig_it2); //
shiftOut (blue_data, blue_clk3, LSBFIRST, dig_it3); //
//
dig_it1 = (digits[data_1]);
dig_it2 = (digits[data_2]);
dig_it3 = (digits[data_3]);
shiftOut (green_data, green_clk1, LSBFIRST, dig_it1); //
shiftOut (red_data, red_clk1, LSBFIRST, dig_it1); //
shiftOut (green_data, green_clk2, LSBFIRST, dig_it2); //
shiftOut (red_data, red_clk2, LSBFIRST, dig_it2); //
shiftOut (green_data, green_clk3, LSBFIRST, dig_it3); //
shiftOut (red_data, red_clk3, LSBFIRST, dig_it3); //
//
}
//
//
//
//
void color_2_display() {
//
Sätter upp för färgen som ska visas
//
om (tmprtr < = 49) {
blue_shift(); / / Visa det i blått
}
//
om (tmprtr > = 50 & & tmprtr < = 59) {
yellow_shift(); / / Visa det i gult
}
//
om (tmprtr > = 60 & & tmprtr < = 79) {
green_shift(); / / Visa det i grönt
}
//
om (tmprtr > = 80 & & tmprtr < = 89) {
yellow_shift(); / / Visa det i gult
}
//
om (tmprtr > = 90) {
red_shift(); / / visas i rött
}
//
}
//
//
void get_tmprtr() {
//
Mäta temperatur och göra det användbart
//
tmprtr_read = analogRead(A0);
tmprtr_read = (((tmprtr_read * (5.0/1024.0)) * 100) - 273) * 1,8) + 32);
tmprtr = (tmprtr_read);
//
Om temp är för låg stannar vid 0
om (tmprtr_read < = 0) {
tmprtr = 0;
}
//
}
//
//
//
//
void temp_lvlr() {
//
Planar ut temp avläsningarna lite
En ny behandling är jämfört med den förra behandlingen
Om de är olika det bestäms att den
Temp kan endast ökar eller minskar med 1 grad
per läsning.
Detta kommer att stoppa stora temp hopp
//
tmprtr_new = tmprtr; / / få en kopia av den senaste behandlingen
Kontrollera om temp är högre
om (tmprtr_new > tmprtr_old) {
tmprtr = (tmprtr_old + 1) ;//
tmprtr_old = tmprtr; / /
}
Kontrollera om temp är lägre
om (tmprtr_new < tmprtr_old) {
tmprtr = (tmprtr_old -1) ;//
tmprtr_old = tmprtr; / /
}
Om temp är för låg gör det 0
om (tmprtr < = 0) {
tmprtr = 0;
}
//
}
//
//
//
//
void Convert () {
//
Konvertera behandlingen till något denna display kan använda
//
test_test = tmprtr; //copy innehållet till test_test för att testa
Test 100s
data_1 = 0; / / rensa första siffran 0XX
medan (test_test > = 100) {
test_test = test_test - 100.
data_1 ++; / / första siffran
}
data_2 = 0; / / rensa andra siffran X0X
medan (test_test > = 10) {
test_test = test_test - 10.
data_2 ++; / / andra siffran
}
data_3 = test_test; / / allt lämnat över XX0
Test för att se om ledande 0's och tom.
om (data_1 == 0) {
data_1 = 10; / / 10 = Blank i tabell
}
om (data_2 == 0) {
data_2 = 10; / / 10 = Blank i tabell
}
//
Slutet testning
Lagras i test_test är nu bruten
ut på tre
data_1 / / 100
data_2 / / 10
data_3 / / 1
//
}
//
//
//
//
void fun_ky_flash() {
loop här
Detta är min favorit en :)
för (cirkel = 0; cirkel < 10; cirkel ++) {
//
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk2, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk1, LSBFIRST, segments[2]); Topp
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (red_data, red_clk2, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (green_data, green_clk1, LSBFIRST, segments[3]); Vänster högst upp
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[4]); Vänster nedre
shiftOut (red_data, red_clk2, LSBFIRST, segments[4]); Vänster nedre
shiftOut (green_data, green_clk1, LSBFIRST, segments[4]); Vänster nedre
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[5]); Botten
shiftOut (red_data, red_clk2, LSBFIRST, segments[5]); Botten
shiftOut (green_data, green_clk1, LSBFIRST, segments[5]); Botten
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (red_data, red_clk2, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (green_data, green_clk1, LSBFIRST, segments[6]); Längst ner till höger
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[7]); Rätten topp
shiftOut (red_data, red_clk2, LSBFIRST, segments[7]); Rätten topp
shiftOut (green_data, green_clk1, LSBFIRST, segments[7]); Rätten topp
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk2, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk1, LSBFIRST, segments[2]); Topp
//
//
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk1, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk3, LSBFIRST, segments[2]); Topp
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (red_data, red_clk1, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (green_data, green_clk3, LSBFIRST, segments[3]); Vänster högst upp
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[4]); Vänster nedre
shiftOut (red_data, red_clk1, LSBFIRST, segments[4]); Vänster nedre
shiftOut (green_data, green_clk3, LSBFIRST, segments[4]); Vänster nedre
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[5]); Botten
shiftOut (red_data, red_clk1, LSBFIRST, segments[5]); Botten
shiftOut (green_data, green_clk3, LSBFIRST, segments[5]); Botten
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (red_data, red_clk1, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (green_data, green_clk3, LSBFIRST, segments[6]); Längst ner till höger
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[7]); Rätten topp
shiftOut (red_data, red_clk1, LSBFIRST, segments[7]); Rätten topp
shiftOut (green_data, green_clk3, LSBFIRST, segments[7]); Rätten topp
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk1, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk3, LSBFIRST, segments[2]); Topp
//
//
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk3, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk2, LSBFIRST, segments[2]); Topp
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (red_data, red_clk3, LSBFIRST, segments[3]); Vänster högst upp
shiftOut (green_data, green_clk2, LSBFIRST, segments[3]); Vänster högst upp
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[4]); Vänster nedre
shiftOut (red_data, red_clk3, LSBFIRST, segments[4]); Vänster nedre
shiftOut (green_data, green_clk2, LSBFIRST, segments[4]); Vänster nedre
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[5]); Botten
shiftOut (red_data, red_clk3, LSBFIRST, segments[5]); Botten
shiftOut (green_data, green_clk2, LSBFIRST, segments[5]); Botten
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (red_data, red_clk3, LSBFIRST, segments[6]); Längst ner till höger
shiftOut (green_data, green_clk2, LSBFIRST, segments[6]); Längst ner till höger
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[7]); Rätten topp
shiftOut (red_data, red_clk3, LSBFIRST, segments[7]); Rätten topp
shiftOut (green_data, green_clk2, LSBFIRST, segments[7]); Rätten topp
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[2]); Topp
shiftOut (red_data, red_clk3, LSBFIRST, segments[2]); Topp
shiftOut (green_data, green_clk2, LSBFIRST, segments[2]); Topp
//
//
}
//
}
//