Buenas tardes, soy Facundo y recien ando iniciandome en el mundo del arduino. Paso a comentarles, estoy realizando para el final de curso de mi secundaria (tecnica) un proyecto el cual es un reloj que muestra hora y minutos con 4 display 7 segmentos (2 para hora y 2 para minutos), para los cuales uso multiplexacion para ahorrar pines, y en una pantalla serie muestro datos del dht22(humedad y temperatura) + dia mes y año, los cuales salen de mi RTC(cabe aclarar que la hora que va en los displays tambien sale del dato de mi RTC). el segundero ira a otro pcb conformado por 4017's en cascada para asi ir prendiendo led por led por cada segundo.
Ahora, yo fui programando y probando por bloques, es decir la pantalla y el sensor por una lado, despues el RTC con pantalla y demas. a la hora de juntar el codigo este compila perfectamente pero aun asi no logro hacerlo funcionar en mi PCB(foto del esquematico →
les dejo el codigo que arme. espero que me puedan brindar una ayuda ya que no logro entender porque no funciona cada parte. debajo dejo las librerias adjuntas. Saludos
/* Control de 2 dislpays de siete segmentos CC con arduino
###################### Circuito ######################
Control de 2 dislpays de siete segmentos Catodo Comun con arduino
Pin 2 -> segmento a del dispaly
Pin 3 -> segmento b del dispaly
Pin 4 -> segmento c del dispaly
Pin 5 -> segmento d del dispaly
Pin 6 -> segmento e del dispaly
Pin 7 -> segmento f del dispaly
Pin 8 -> segmento g del dispaly
Pin 9 -> Transistor del display de Hdecenas ( NPN )
Pin 10 -> Transistor del display de Hunidades ( NPN )
Pin 11 -> Transistor del display de Mdecenas ( NPN )
Pin 12 -> Transistor del display de Munidades ( NPN )
######################################################
*/
#include "RTClib.h"
#include <Wire.h>
RTC_DS1307 RTC;
int segmento_a = 2;
int segmento_b = 3;
int segmento_c = 4;
int segmento_d = 5;
int segmento_e = 6;
int segmento_f = 7;
int segmento_g = 8;
int transistor_hdecenas = 9;
int transistor_hunidades = 10;
int transistor_mdecenas = 11;
int transistor_munidades = 12;
int transistor_on = 5;
int hunidad;
int munidad;
int hdecena;
int mdecena;
void setup() {
RTC.begin();
Wire.begin();
Serial.begin(9600);
pinMode(segmento_a, OUTPUT);
pinMode(segmento_b, OUTPUT);
pinMode(segmento_c, OUTPUT);
pinMode(segmento_d, OUTPUT);
pinMode(segmento_e, OUTPUT);
pinMode(segmento_f, OUTPUT);
pinMode(segmento_g, OUTPUT);
pinMode( transistor_hdecenas, OUTPUT);
pinMode( transistor_hunidades, OUTPUT);
pinMode( transistor_mdecenas, OUTPUT);
pinMode( transistor_munidades, OUTPUT);
}
void loop() {
Variableshora();
displays7segmentos();
}
/* ##### Funcion tempozidador en la que unidades se incrementa cada segundo ##### */
void Variableshora() {
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
hdecena=now.hour()/10;
hunidad=now.hour()-(hdecena*10);
mdecena=now.minute()/10;
munidad=now.minute()-(hdecena*10);
}
/* ##### Funcion que muestra los numeros en 2 displays de 7 segmentos ##### */
void displays7segmentos() {
/* Muestra hdecena */
digitalWrite(transistor_hdecenas, HIGH);
tabladisplay(hdecena);
delay(transistor_on);
digitalWrite(transistor_hdecenas, LOW);
/* Muestra hunidad */
digitalWrite(transistor_hunidades, HIGH);
tabladisplay(hunidad);
delay(transistor_on);
digitalWrite(transistor_hunidades, LOW);
/* Muestra mdecena */
digitalWrite(transistor_mdecenas, HIGH);
tabladisplay(mdecena);
delay(transistor_on);
digitalWrite(transistor_mdecenas, LOW);
/* Muestra munidad */
digitalWrite(transistor_munidades, HIGH);
tabladisplay(munidad);
delay(transistor_on);
digitalWrite(transistor_munidades, LOW);
}
/*##### Funcion que asocia el numero con su tabla de display de 7 segmentos Catodo Comun ##### */
void tabladisplay(int variablenumero) {
switch (variablenumero) {
case 0:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, HIGH);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, LOW);
break;
case 1:
digitalWrite(segmento_a, LOW);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, LOW);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, LOW);
digitalWrite(segmento_g, LOW);
break;
case 2:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, LOW);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, HIGH);
digitalWrite(segmento_f, LOW);
digitalWrite(segmento_g, HIGH);
break;
case 3:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, LOW);
digitalWrite(segmento_g, HIGH);
break;
case 4:
digitalWrite(segmento_a, LOW);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, LOW);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, HIGH);
break;
case 5:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, LOW);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, HIGH);
break;
case 6:
digitalWrite(segmento_a, LOW);
digitalWrite(segmento_b, LOW);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, HIGH);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, HIGH);
break;
case 7:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, LOW);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, LOW);
digitalWrite(segmento_g, LOW);
break;
case 8:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, HIGH);
digitalWrite(segmento_e, HIGH);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, HIGH);
break;
case 9:
digitalWrite(segmento_a, HIGH);
digitalWrite(segmento_b, HIGH);
digitalWrite(segmento_c, HIGH);
digitalWrite(segmento_d, LOW);
digitalWrite(segmento_e, LOW);
digitalWrite(segmento_f, HIGH);
digitalWrite(segmento_g, HIGH);
break;
}
return;
}
libraries.zip (27.5 KB)