Ir ao conteúdo
  • Cadastre-se

Tarcisio Zewe Duarte

Membro Pleno
  • Posts

    87
  • Cadastrado em

  • Última visita

Tudo que Tarcisio Zewe Duarte postou

  1. Bom dia pessoal, estou tendo um problema em um código que estou desenvolvendo para um contador de display matricial de leds, com cinco displays 5x7 para contar de 0 à 999. Um breve resumo do programa: Ele pega a função “millis” , divide por 1000, e depois grava este valor na variavel inteira “numero”. depois ele executa um laço “for”, onde pega esta variavel, divide por outra variavel inteira “fator”, e divide o resultado desta operação por “BASE”, a qual foi definida no inicio do programa por como sendo 10, e atribui este resultado a uma variável denominada “valor”. E ainda dentro deste laço “for”, ele compara por meio da condição “if” numero correpondente aos cinco digitos do display, e chama uma função para que transfere em um array do tipo “byte” chamado “led”, o caractere correspondente, dos caracteres correspondentes gravados no array do tipo “char matriz”. Despois uma outra função é chamada para pegar cada array “led” e transferir para o um array maior do tipo char 40x7 denominado “máscara” , com a sua devida posição de acordo com a contagem, e por último uma função é chamada para enviar os dados deste ultimo array 40x7 para cinco circuitos integrados 74HC595 registradores de deslocamento, os quais mandam a informação de suas saidas para as colunas dos cinco displays 5x7. Esta mesma função gera ainda os pulsos de clock e reset para um circuito integrado 4017, o qal faz a contagem das linhas e completa a multiplexagem dos display. Ao compilar este código, ele compila normalmente e não aparece nenhum erro. só que os cinco displays simplesmente não acendem. Não se trata de um problema de hardware, pois testei os cinco displays em um outro programa e eles funcionaram normalmente, igualmente com os circuitos integrados 74HC595. Ja o circuito integrado 4017 retirei de um outo circuito que havia montado e também esta funcionando normalmente. Abaixo segue em anexo o código, se alguem tiver tempo de analisar e me ajudar, agradeço: #define ZERO {B01110000,B10001000,B10011000,B10101000,B11001000,B10001000,B01110000} #define UM {B00100000,B01100000,B00100000,B00100000,B00100000,B00100000,B01110000} #define DOIS {B01110000,B10001000,B00001000,B00010000,B00100000,B01000000,B11111000} #define TRES {B01110000,B10001000,B00001000,B01110000,B00001000,B10001000,B01110000} #define QUATRO {B00010000,B00110000,B01010000,B10010000,B11111000,B00010000,B00010000} #define CINCO {B11111000,B10000000,B11110000,B00001000,B00001000,B10001000,B01110000} #define SEIS {B00110000,B01000000,B10000000,B11110000,B10001000,B10001000,B01110000} #define SETE {B11111000,B00001000,B00001000,B00010000,B00100000,B00100000,B00100000} #define OITO {B01110000,B10001000,B10001000,B01110000,B10001000,B10001000,B01110000} #define NOVE {B01110000,B10001000,B10001000,B01111000,B00001000,B00010000,B01100000} #define ESPACO {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000} int latchPin = 10; int clockPin = 13; int dataPin = 11; int clock = 9; int Reset = 8; const int numCaracteres = 10; char matriz[numCaracteres][7][8] = {ZERO, UM, DOIS, TRES, QUATRO, CINCO, SEIS, SETE, OITO, NOVE}; byte led0[8][7]; byte led1[8][7] = {ESPACO}; byte led2[8][7]; byte led3[8][7] = {ESPACO}; byte led4[8][7];// columns x rows char mascara[40][7]; int num_digitos = 3; int BASE = 10; void setup() { Serial.begin(9600); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clock, OUTPUT); pinMode(Reset, OUTPUT); digitalWrite(Reset, HIGH); digitalWrite(Reset, LOW); } void loop() { int numero = millis() / 1000; int fator = 1; for (int digito = num_digitos - 1; digito >= 0; digito = digito - 1) { int valor = (numero / fator) % BASE; Serial.println(valor); if (digito == 2) { selecionaMatriz_2(valor); } if (digito == 1) { selecionaMatriz_1(valor); } if (digito == 0) { selecionaMatriz_0(valor); } fator = fator * BASE; } alocaDigito (); for (int i = 0; i < 2000; i++) { escreveMatriz(); } } void selecionaMatriz_2(int pos) { Serial.println(pos); for (int i = 0; i <= 7; i++) { for (int j = 0; j <= 6; j++) { led0[j] = matriz[pos][j]; } } } void selecionaMatriz_1(int pos) { for (int i = 0; i <= 7; i++) { for (int j = 0; j <= 6; j++) { led2[j] = matriz[pos][j]; } } } void selecionaMatriz_0(int pos) { for (int i = 0; i <= 7; i++) { for (int j = 0; j <= 6; j++) { led4[j] = matriz[pos][j]; } } } void alocaDigito () { for (int j = 0; j <= 6; j++) { for (int i = 0; i <= 7; i++) { mascara[j] = led0[j]; } } for (int j = 0; j <= 6; j++) { for (int i = 8; i <= 15; i++) { mascara[j] = led1[i - 8][j]; } } for (int j = 0; j <= 6; j++) { for (int i = 16; i <= 23; i++) { mascara[j] = led2[i - 16][j]; } } for (int j = 0; j <= 6; j++) { for (int i = 24; i <= 31; i++) { mascara[j] = led3[i - 24][j]; } } for (int j = 0; j <= 6; j++) { for (int i = 32; i <= 39; i++) { mascara[j] = led4[i - 32][j]; } } } void escreveMatriz() { for (int m = 0; m <= 6; m++) { for (int n = 0; n <= 39; n++) { mascara[n][m] = ~mascara[n][m]; } } for (int linha = 0; linha <= 6; linha++) { digitalWrite(clock, LOW); digitalWrite(latchPin, LOW); for (int coluna = 0; coluna <= 39; coluna++) { digitalWrite(clockPin, LOW); if (mascara[coluna][linha] == 1) { digitalWrite(dataPin, HIGH); } else { digitalWrite(dataPin, LOW); } digitalWrite(clockPin, HIGH); } digitalWrite(clockPin, LOW); digitalWrite(latchPin, HIGH); digitalWrite(clock, HIGH); if (linha == 6) { digitalWrite(Reset, HIGH); digitalWrite(Reset, LOW); } } }
  2. Bom dia, alguém já fez ou tem alguma ideia de como fazer um código para cascatear vários displays de LED 5x7 com o registrador de deslocamento 74HC595, e o contador CD4017
  3. Como programar o arduino para fazer aquele efeito inclinado ou italico em caracteres, em display matricial de led 5x7?
  4. Obrigado pela resposta! adicionado 0 minutos depois @Mestre88 obrigado, muito boa sua resposta!
  5. Tanto o tacometro (conta giros), como um velocímetro digital, eu acredito que os mesmos devem funcionar de forma bem semelhante: Uma roda envia pulsos de clock por meio de um transdutor, para flip flops contadores digitais, os quais posteriormente enviam este sinal de contagem para um decidificador, o qual exibe o numero de voltas ou a velocidade num display de sete segmentos. Porém minha dúvida é: numa situação de velocidade constante, como acinfirmação numérica é "congelada" no display, visto que o contador continua a receber pulsos de um transdutor para realizar contagem, e como o contador consegue distinguir uma velocidade constante, de variaçôes na velocidade?
  6. Acho que nós dois não estávamos nos entendendo antes, pois quando eu dizia "potência dissipada", estava me referindo a potência que era produzida para um determinado valor de resistência e tensão aplicada, e você estava se referindo a "potência" produzida pela resistência dos fios, pois segundo as leis de Newton, para toda força aplicada, existe uma força contraria, gerada pela resistência e pelo atrito, provindo da mecânica, mas que pode ser aplicado na elétrica, acho que era isto que você estava tentando dizer.
  7. Bom dia, primeiramente gostaria de expor duas coisas relacionadas ao aquecimento de condutores elétricos: a primeira delas é em relação a quantidade de corrente que passa por um condutor, quanto maior a corrente, maior será o atrito, e maior será a potência dissipada na forma de calor, isto é fato, a segunda esta em relação a área da seção transversal de um condutor, quanto menor esta área, maior também será o atrito, e maior será a potência na forma de calor. Esta segunda "lei", esta amarrada com a primeira, pois para se gerar atrito, é necessário ter corrente elétrica, caso contrário, o fio mais fino do mundo nunca aquecerá se não tiver passando por ele nenhuma corrente, ou um corrente muito baixa. Com base nestas hipóteses minha dúvida é a seguinte, dois fios, um fino e um grosso, mas de mesmo comprimento, submetidos a mesma tensão, e alimentando uma carga de igual impedância, mas mais fino aquecendo mais que o mais grosso, passará por eles a mesma corrente? Caso a resposta seja negativa, ou seja, pelo mais fino passar menor corrente, como pode este fio fino aquecer, visto que, apesar da sua área de seção ser menor, proporionando um maior atrito, se sua corrente diminuiu, o atrito também não diminui, e por consequencia a temperatura do condutor não cai?
  8. Se eu ligar uma das pontas de um fio, conectado a uma lâmpada para 9V, à um dos polos de uma bateria de 9V, e a outra ponta deste fio ligar à terra, esta lâmpada acenderá?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!