Código
CÓDIGOS de relógio LED Arduino
Baixe este código e faça upload para o projeto / * display de 4 dígitos e 7 segmentos:http://www.sparkfun.com/products/9483 Datasheet:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment / YSD-439AR6B-35.pdf * /// conexão modificada por niq_ro de http://nicuflorica.blogspot.com// dataseet:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf // Código modificado por BMIAK Basnayaka // http://www.setnfix.comint digit1 =11; dígito interno 2 =10; dígito interno 3 =9; dígito interno 4 =6; dígito interno 5 =5; dígito interno 6 =3; // Pin mapeamento do Arduino para o ATmega DIP28 se você precisar // http://www.arduino.cc/en/Hacking/PinMappingint segA =0; // Exibir pino 11int segB =1; // Exibir pino 7int segC =2; // Exibir pino 4int segD =4; // Exibir pino 2int segE =7; // Exibir pino 1int segF =8; // Exibir pino 10int segG =12; // Exibir pino 5int segDP =13; // Display pin 3 # include #include "RTClib.h" RTC_DS1307 RTC; // Funções de data e hora usando um DS1307 RTC conectado via I2C e Wire lib // esboço original de http://learn.adafruit .com / ds1307-real-time-clock-breakout-board-kit /// adicionar parte com SQW =1 Hz de http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus /// adicionar parte com ajuste manual http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyte SW0 =A0; byte SW1 =A2; byte SW2 =A1; byte SWT =A3; int Adhr =0; int Admnt =0; int D =0; int Z =0; // use para hexa na conversão zecimal ao longo de zh, uh, ore; long zm, um, miniti; void setup () {//Serial.begin(57600); Wire.begin (); RTC.begin (); // RTC.adjust (DateTime (F (__ DATE__), F (__ TIME __))); // se você precisar definir o relógio ... apenas remova // da linha acima deste // código de parte para piscar LEDWire.beginTransmission (0x68); Wire.write (0x07); // move o ponteiro para o endereço SQW // Wire.write (0x00); // desliga o pino SQW Wire.write (0x10); // envia 0x10 (hex) 00010000 (binário) para o registro de controle - ativa a onda quadrada em 1 Hz // Wire.write (0x13); // envia 0x13 (hex) 00010011 (binário) 32kHzWire.endTransmission (); pinMode (segA, OUTPUT); pinMode (segB, OUTPUT); pinMode (segC, OUTPUT); pinMode (segD, OUTPUT); pinMode (segE, OUTPUT); pinMode (segF, OUTPUT); pinMode (segG, OUTPUT); pinMode (segDP, OUTPUT); pinMode (digit1, OUTPUT); pinMode (digit2, OUTPUT); pinMode (digit3, OUTPUT); pinMode (digit4, OUTPUT); pinMode (digit5, OUTPUT); pinMode (digit6, OUTPUT); // Serial.begin (9600); pinMode (SW0, INPUT); // NÃO. botão switchpinMode (SW1, INPUT); // NÃO. botão switchpinMode (SW2, INPUT); // NÃO. botão switchpinMode (SWT, INPUT); // NÃO. botão switchdigitalWrite (SW0, HIGH); // pull-ups ondigitalWrite (SW1, HIGH); digitalWrite (SW2, HIGH); digitalWrite (segDP, LOW);} void loop () {DateTime now =RTC.now (); HR longo =agora.horas () * 1000; long timp =(HR * 10) + now.minute () * 100 + now.second (); Adhr =agora.horas (); Admnt =now.minute (); int DIM =0; if (timp>
=250000) timp =timp-240000; // ---------------------- -------------------------------- // 12/24 horas shitching // --------- --------------------------------------------- if (timp <130000 ) {digitalWrite (segDP, LOW);} if (digitalRead (SWT) ==0) {atraso (300); if (D ==0) {D =1; delay (200);} else {D =0;}} if (D ==0) {if (timp>
=130000) {timp =timp-120000; digitalWrite ( segDP, HIGH);}} if (timp>
=130000) {digitalWrite (segDP, LOW);} if ((D ==1) &(timp <130000)) digitalWrite (segDP, LOW); // --- -------------------------------------------------- - // int timp =(now.minute (), DEC); // displayNumber (12); // este é o número a ser exibido para (int i =100; i> 0; i--) {if (timp>
=100000) displayNumber01 (timp); senão displayNumber02 (timp); } para (int i =100; i> 0; i--) {if (timp>
=100000) displayNumber03 (timp); senão displayNumber04 (timp); } para (int i =100; i> 0; i--) {if (timp>
=100000) displayNumber05 (timp); senão displayNumber06 (timp); } if (digitalRead (SW0) ==0) {delay (100); Z =1; definir tempo(); } // segure a chave para definir o tempo} void set_time () {byte minutes1 =0; byte horas1 =0; byte minutos =0; horas de byte =0; horas =Adhr; minutos =Admnt; if ((horas &0x0f)> 9) horas =horas + 6; se (horas> 0x24) horas =1; // Meio da noite 12h00 será mostrado como 12h00 (com PM LED ligado) ou 24h00 // if (horas> 0x24) horas =1; // Meio da noite 12h00 será exibido como 0h se ((minutos &0x0f)> 9) minutos =minutos + 6; se (minutos> 0x59) minutos =0; while (! (Z ==0)) {// definir o interruptor de tempo deve ser liberado para sair int TST =digitalRead (SW2); while (TST ==0) // definir horas {horas ++; // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; if ((horas &0x0f)> 9) horas =horas + 6; se (horas> 0x24) horas =1; // Meio da noite 12h00 será mostrado como 12h00 (com PM LED ligado) ou 24h00 // if (horas> 0x24) horas =1; // Meio da noite 12h00 será exibido como 0h se (horas <=9) atraso (1); para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } TST =leitura digital (SW2); } while (! (digitalRead (SW1))) // definir minutos {minutos ++; // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } if ((minutos &0x0f)> 9) minutos =minutos + 6; se (minutos> 0x59) minutos =0; se (minutos> =9) atraso (1); } Wire.beginTransmission (0x68); // ativa DS1307 Wire.write (0); // onde começar Wire.write (0x00); // segundos Wire.write (minutos); // minutos Wire.write (0x80 | horas); // horas (24 horas) Wire.write (0x06); // Dia 01-07 Wire.write (0x01); // Data 0-31 Wire.write (0x05); // mês 0-12 Wire.write (0x09); // Ano 00-99 Wire.write (0x10); // O controle 0x10 produz uma onda quadrada de 1 HZ no pino 7. Wire.endTransmission (); // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } atraso (100); //Serial.print(digitalRead(SW0));if (digitalRead (SW0) ==0) Z =0; atraso (300); } // Serial.print (SW2);} void displayNumber01 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto intervalo de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); // digitalWrite (segDP, LOW); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber02 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {case 1:lightNumber (10); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); // digitalWrite (segDP, LOW); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber03 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber04 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {case 1:lightNumber (10); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber05 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber06 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo switch (dígito) {case 1:// digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} // Dado um número, liga esses segmentos // Se número ==10, então desligue numbervoid lightNumber (int numberToDisplay) {// Common Anode ********* ***************** # define SEGMENT_ON HIGH # define SEGMENT_OFF LOW / * Cátodo comum ***************** #define SEGMENT_ON LOW # definir SEGMENT_OFF HIGH * / switch (numberToDisplay) {case 0:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_OFF); pausa; caso 1:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; caso 2:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_OFF); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_ON); pausa; caso 3:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_ON); pausa; caso 4:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 5:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 6:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 7:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; caso 8:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 9:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; // todos os segmentos estão ON caso 10:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_OFF); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; } // Fim da codificação, BUDHUSARANAI, Boa sorte. }