Paso 15: Programa principal
/*Usado para exhibición del temp de color personalizado
Noviembre de 2013
Rayo McQueen
Salida serie para 74hc374
Mostrar espacios en blanco
Espacio en blanco principal 0
Temp mínima es 0
Pantalla temp varias veces luego de hacer un divertido flash
Temp de nivelación para evitar grandes saltos temporales
*/
//
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; azul 3 dígitos
const int blue_clk2 = 9; dígito 2 azul
const int blue_clk1 = 8; 1er dígito azul
const int red_clk3 = 7; rojo 3 dígitos
const int red_clk2 = 6; dígitos 2 º rojo
const int red_clk1 = 5; 1er dígito rojo
const int green_clk3 = 4; verde 3 dígitos
const int green_clk2 = 3; dígitos 2 º verde
const int green_clk1 = 2; 1er dígito verde
//
int dig_it1 = 0; Primer dígito de la pantalla
int dig_it2 = 0; Segundo dígito del display
int dig_it3 = 0; Tercer dígito de la pantalla
//
int data_1 = 0; / / cuentan de datos primeros 100
int data_2 = 0; / / cuentan de datos segundo 10
int data_3 = 0; / / cuentan de datos tercera 1
//
int test_test = 0; / / guardar número para la prueba
int tmprtr = 0; / / para la lectura de temperatura
int tmprtr_old = 0; / / última lectura de temperatura
int tmprtr_new = 0; / / esta temp leer
Float tmprtr_read = 0; / / inicial lectura hacer las matemáticas
//
//
int [] dígitos = {}
252 12, 182, 158, 78, 218, 122, 140, 254, 206, 0
}; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, espacio en blanco
//
//
segmentos de int [] = {}
255, 1, 128, 64, 32, 16, 8, 4, 2, 0
}; Todo en lugar Decimal, centro de la parte superior, izquierda parte superior,
Centro inferior, parte inferior derecha, inferior izquierda, parte superior derecha,
Medio centro, espacio en blanco
//
//
int del_short = 75; / / corto retardo para circundar leds
int del_long = 1000; / retardo largo
Círculo de int = 0; / / tiempo para circundar
//
void setup() {}
pinMode (blue_data, salida); definir como salida
pinMode (red_data, salida); definir como salida
pinMode (green_data, salida); definir como salida
pinMode (blue_clk3, salida); definir como salida
pinMode (blue_clk2, salida); definir como salida
pinMode (blue_clk1, salida); definir como salida
pinMode (red_clk3, salida); definir como salida
pinMode (red_clk2, salida); definir como salida
pinMode (red_clk1, salida); definir como salida
pinMode (green_clk3, salida); definir como salida
pinMode (green_clk2, salida); definir como salida
pinMode (green_clk1, salida); definir como salida
//
//
EN BLANCO TODOS LOS DÍGITOS
//
data_1 = 10; / / primera datos 10 = en blanco
data_2 = 10; / / segundo de datos 10 = en blanco
data_3 = 10; / / tercer datos 10 = en blanco
//
blue_shift(); / / cuando claro toda pantalla que sólo necesita
para llamar a un cambio de color porque todo el color cambia de claro
cualquier otro color antes de mostrar a ellos mismos. blue_shift
se utiliza aquí, pero puede ser cualquiera de los cambios de color.
//
//
}
//
void loop() {}
//
//
para (círculo = 0; círculo < 60; círculo ++) {}
get_tmprtr(); / / lee el LM335 y convertir a la temperatura
temp_lvlr(); / / evita grandes saltos temporales
Convert(); / / romper la temp para correcta visualización
color_2_display(); / / elegir el color que quieras
Delay(del_long); / / Delay
}
fun_ky_flash(); / do rato parpadea antes de hacer otra vez temperatura.
//
//
** FIN DE BUCLE PRINCIPAL **
//
//
}
//
//
//
void blue_shift() {}
//
Borra todos los demás dígitos de color primero... caso de justin.
Esto es para cambiar de puesto hacia fuera para el azul en la pantalla
//
dig_it1 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it2 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it3 = 0; / / 0 no = 0000 0000 ningún LED encendido
//
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() {}
//
Borra todos los demás dígitos de color primero... caso de justin.
Se trata de cambiar a rojo en la pantalla
//
dig_it1 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it2 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it3 = 0; / / 0 no = 0000 0000 ningún LED encendido
//
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() {}
//
Borra todos los demás dígitos de color primero... caso de justin.
Se trata de cambiar a verde en la pantalla
//
dig_it1 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it2 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it3 = 0; / / 0 no = 0000 0000 ningún LED encendido
//
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() {}
//
Borra todos los demás dígitos de color primero... caso de justin.
Esto es para cambiar de puesto amarillo en la pantalla
//
dig_it1 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it2 = 0; / / 0 no = 0000 0000 ningún LED encendido
dig_it3 = 0; / / 0 no = 0000 0000 ningún LED encendido
//
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() {}
//
Configura el color Mostrar
//
Si (tmprtr < = 49) {}
blue_shift(); / / pantalla en azul
}
//
Si (tmprtr > = 50 & & tmprtr < = 59) {}
yellow_shift(); / / Mostrar en amarillo
}
//
Si (tmprtr > = 60 & & tmprtr < = 79) {}
green_shift(); / / Mostrar en verde
}
//
Si (tmprtr > = 80 & & tmprtr < = 89) {}
yellow_shift(); / / Mostrar en amarillo
}
//
Si (tmprtr > = 90) {}
red_shift(); / / Mostrar en rojo
}
//
}
//
//
void get_tmprtr() {}
//
Medir la temperatura y que sea útil
//
tmprtr_read = analogRead(A0);
tmprtr_read = (((tmprtr_read * (5.0/1024.0)) * 100) - 273) * 1.8) + 32);
tmprtr = (tmprtr_read);
//
Si la temperatura es demasiado baja dejarlo en 0
Si (tmprtr_read < = 0) {}
tmprtr = 0;
}
//
}
//
//
//
//
void temp_lvlr() {}
//
Niveles a las lecturas de temperatura un poco
Una nueva lectura es comparada con la última lectura
Si son diferentes se determina que la
temperatura sólo puede aumentar o disminuir en 1 grado
por la lectura.
Esto dejará grandes saltos temporales
//
tmprtr_new = tmprtr; / / obtener una copia de la lectura más reciente
Verifique si la temperatura es mayor
Si (tmprtr_new > tmprtr_old) {}
tmprtr = (tmprtr_old + 1) ;//
tmprtr_old = tmprtr; / /
}
Verifique si la temperatura es más baja
Si (tmprtr_new < tmprtr_old) {}
tmprtr = (tmprtr_old -1) ;//
tmprtr_old = tmprtr; / /
}
Si la temperatura es demasiado baja hacer 0
Si (tmprtr < = 0) {}
tmprtr = 0;
}
//
}
//
//
//
//
convert() vacío {}
//
Convertir la lectura en algo que puede utilizar esta pantalla
//
test_test = tmprtr; //copy contenido test_test para la prueba
Prueba 100s
data_1 = 0; / / borrar el primer dígito 0XX
mientras que (test_test > = 100) {}
test_test = test_test - 100;
data_1 ++; / / primer dígito
}
data_2 = 0; / / borrar el segundo dígito X0X
mientras que (test_test > = 10) {}
test_test = test_test - 10;
data_2 ++; / / segundo dígito
}
data_3 = test_test; / / todo sobrado XX0
Prueba para ver si de 0 y en blanco.
Si (data_1 == 0) {}
data_1 = 10; / / 10 = espacio en blanco en la tabla
}
Si (data_2 == 0) {}
data_2 = 10; / / 10 = espacio en blanco en la tabla
}
//
La prueba final
El número almacenado en test_test está roto
en tres registros
data_1 / / 100
data_2 / / 10
data_3 / / 1
//
}
//
//
//
//
void fun_ky_flash() {}
lazo aquí
Este es mi favorito :)
para (círculo = 0; círculo < 10; círculo ++) {}
//
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk2, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk1, LSBFIRST, segments[2]); Arriba
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (red_data, red_clk2, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (green_data, green_clk1, LSBFIRST, segments[3]); Parte superior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (red_data, red_clk2, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (green_data, green_clk1, LSBFIRST, segments[4]); Parte inferior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[5]); Parte inferior
shiftOut (red_data, red_clk2, LSBFIRST, segments[5]); Parte inferior
shiftOut (green_data, green_clk1, LSBFIRST, segments[5]); Parte inferior
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (red_data, red_clk2, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (green_data, green_clk1, LSBFIRST, segments[6]); Parte inferior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (red_data, red_clk2, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (green_data, green_clk1, LSBFIRST, segments[7]); Parte superior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk3, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk2, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk1, LSBFIRST, segments[2]); Arriba
//
//
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk1, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk3, LSBFIRST, segments[2]); Arriba
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (red_data, red_clk1, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (green_data, green_clk3, LSBFIRST, segments[3]); Parte superior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (red_data, red_clk1, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (green_data, green_clk3, LSBFIRST, segments[4]); Parte inferior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[5]); Parte inferior
shiftOut (red_data, red_clk1, LSBFIRST, segments[5]); Parte inferior
shiftOut (green_data, green_clk3, LSBFIRST, segments[5]); Parte inferior
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (red_data, red_clk1, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (green_data, green_clk3, LSBFIRST, segments[6]); Parte inferior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (red_data, red_clk1, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (green_data, green_clk3, LSBFIRST, segments[7]); Parte superior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk2, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk1, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk3, LSBFIRST, segments[2]); Arriba
//
//
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk3, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk2, LSBFIRST, segments[2]); Arriba
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (red_data, red_clk3, LSBFIRST, segments[3]); Parte superior izquierda
shiftOut (green_data, green_clk2, LSBFIRST, segments[3]); Parte superior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (red_data, red_clk3, LSBFIRST, segments[4]); Parte inferior izquierda
shiftOut (green_data, green_clk2, LSBFIRST, segments[4]); Parte inferior izquierda
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[5]); Parte inferior
shiftOut (red_data, red_clk3, LSBFIRST, segments[5]); Parte inferior
shiftOut (green_data, green_clk2, LSBFIRST, segments[5]); Parte inferior
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (red_data, red_clk3, LSBFIRST, segments[6]); Parte inferior derecha
shiftOut (green_data, green_clk2, LSBFIRST, segments[6]); Parte inferior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (red_data, red_clk3, LSBFIRST, segments[7]); Parte superior derecha
shiftOut (green_data, green_clk2, LSBFIRST, segments[7]); Parte superior derecha
Delay(del_short); //
shiftOut (blue_data, blue_clk1, LSBFIRST, segments[2]); Arriba
shiftOut (red_data, red_clk3, LSBFIRST, segments[2]); Arriba
shiftOut (green_data, green_clk2, LSBFIRST, segments[2]); Arriba
//
//
}
//
}