Ir ao conteúdo
  • Cadastre-se

joelTGA

Membro Júnior
  • Posts

    14
  • Cadastrado em

  • Última visita

Tudo que joelTGA postou

  1. @.if if beleza cara! eu n morri ainda nao kkkk depois de quase dois anos eu voltei pra falar q ainda n consegui se acredita kkkk. Depois desse post q fiz em 2019 eu dei uma pequena evoluida, mais tenho muita duvida mesmo ainda. eu tenho aqui um codigo q fiz mais os caracteres correm para cima ou para baixo na matriz, eu preciso q corra para o lado, e eu também n consegui desenvolver uma funcao que escreve uma frase por exemplo para aparecer em duas matriz (dois max). abaixo vou postar um codigo q ja passei noites e mais noites em claro ,mais n consigo evoluir mano, mais eu nao quero desistir!! ja ate to fazendo um curso na macrogenios para aprender .... Por favor me ajuda se puder sbit MAX7219_CS at GP1_bit; sbit SoftSpi_CLK at GP0_bit; sbit SoftSpi_SDI at GP3_bit;//NO CONECT sbit SoftSpi_SDO at GP2_bit; sbit MAX7219_CS_Direction at TRISIO1_bit; sbit SoftSpi_CLK_Direction at TRISIO0_bit; sbit SoftSpi_SDI_Direction at TRISIO3_bit;//NO CONECT sbit SoftSpi_SDO_Direction at TRISIO2_bit; const unsigned char symbol[10][8] = { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, //Ascii-32 { 56, 68, 68, 68, 124, 68, 68, 68 }, //Ascii-33 { 0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00 }, //Ascii-34 { 0x24,0x7E,0x7E,0x24,0x7E,0x7E,0x24,0x00 }, //Ascii-35 { 0x00,0x24,0x2E,0x6B,0x6B,0x3A,0x12,0x00 }, //Ascii-36 { 0x00,0x66,0x36,0x18,0x0C,0x66,0x62,0x00 }, //Ascii-37 { 0x30,0x7A,0x4F,0x5D,0x37,0x72,0x50,0x00 }, //Ascii-38 { 0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x00 }, //Ascii-39 }; //prototipos de funçoes //void iniciaMax(); void EscreveMax(unsigned char fila, unsigned char valor,unsigned char fila1, unsigned char valor1); void max7219_init(char display,char segmento) { char disp = display; Soft_SPI_Init(); MAX7219_CS_Direction = 0; MAX7219_CS = 0; // SELECT MAX Soft_SPI_Write(0x09); // Disable BCD mode for digit decoding Soft_SPI_Write(0x00); while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; // DESELECT MAX MAX7219_CS = 0; Soft_SPI_Write(0x0A); // Max segment luminosity intensity Soft_SPI_Write(0x0F); while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_Write(0x0B); Soft_SPI_Write(0x07); // Display refresh while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_Write(0x0C); Soft_SPI_Write(0x01); // Turn on the display while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_Write(0X0F);//No test Soft_SPI_Write(0X00); while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_Write(0x00); Soft_SPI_Write(0xFF); // No test (0xFF) Test (0xxF) while(disp >1){ disp --; Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; //Soft_SPI_Write(0x00); // Bypass the 1st Chip MAX7219_CS = 1; } /*const unsigned char letras[3][90] ={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56, 68, 68, 68, 124, 68, 68}, {56, 68, 68, 68, 124, 68, 68, 68}, {56, 68, 68, 68, 124, 68, 68, 68} };*/ void main() { int i,in,l; CMCON = 7; // iniciaMax(); max7219_init(1,8); max7219_init(2,8); while(1) { for(in=1;in<64;in++) { for(i=1;i<9;i++) { EscreveMax(i,symbol[l] [i-1+in], i,symbol[l+1] [i-1+in]); } delay_ms(300); } }//fim while }//fim main ///////////////funçoes///////////////////////////////// void EscreveMax(unsigned char fila, unsigned char valor, unsigned char fila1, unsigned char valor1 ) { char display=2; char disp = display; MAX7219_CS = 0; Soft_SPI_write(fila); Soft_SPI_write(valor); MAX7219_CS = 1; MAX7219_CS = 0; while(disp > 1){ disp--; Soft_SPI_write(fila1); Soft_SPI_write(valor1); Soft_SPI_Write(0x00); Soft_SPI_Write(0x00); } disp = display; MAX7219_CS = 1; }/*void iniciaMax() { Soft_SPI_Init(); MAX7219_CS_Direction = 0; MAX7219_CS = 0; Soft_SPI_write(0x09); Soft_SPI_write(0x00); //Code B MAX7219_CS = 1; //Configura a luminosidade do display(0-15) MAX7219_CS = 0; Soft_SPI_write(0x0a); Soft_SPI_write(0x0f); //maximo MAX7219_CS = 1; //Configura o numero de displays escaneados(0-7) MAX7219_CS = 0; Soft_SPI_write(0x0b); Soft_SPI_write(0x07); //scan limit MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_write(0x0c); Soft_SPI_write(0x01); //ShutDown off MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_write(0x00); Soft_SPI_write(0xff); MAX7219_CS = 1; }*/
  2. gente o profesSor fernando do Microgenios pediu para fazer um exercicio onde mostro no lcd o valor do ADC E USAR também A iNTERRUPÇAO, A parte de amostragem no lcd esta tudo beleza ja, mais a interrupçao nao funciona de maneira nehuma, o Flag (ADIE) so fica em 1 mesmo eu zerando ela. alguem me ajuda a encontrar onde estou errando? estou usando o pic 18f25k20 sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D7 at RB3_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D4 at RB0_bit; sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D7_Direction at TRISB3_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB0_bit; void Interrupt_() { GIE_bit = 1;//Ativa interrupçao global //PEIE_bit = 1;//Interrupções periféricas habilitadas ADIE_bit = 1; ADIF_bit = 0; } void Init_ADC() { ADCON0 = 0B00000001; ADCON1 = 0B00000000; ADCON2 = 0b10101110; } void main() { unsigned int resultADC; unsigned char txt [6]; unsigned char txt1 [6]; TRISA = 1; PORTA = 0; TRISC = 0; PORTC = 0; TRISB = 0; PORTB = 0; C1ON_bit = 0; C2ON_bit = 0; Init_ADC(); Interrupt_(); ADC_Init(); Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); while(1) { resultADC = ADC_read(0);//ResultADC recebe o valor do conversor AD if(ADIF_bit == 1 ) { RC7_bit = ~rc7_bit; ADIF_bit = 0; } WordToStr(ADIF_bit, txt); Lcd_Out(1, 1, txt);//Exibe no lcd o valor do conversor ADC WordToStr(resultADC, txt1); Lcd_Out(2, 7, txt1);//Exibe no lcd o valor do conversor ADC delay_ms(500); } }
  3. @Isadora Ferraz @aphawk entao... se n for pedindo muito mais ja pedindo rsrs eu queria q você me explicasse do 0 como fazer isso. e Isadora eu coonsigo fazer um led piscar ta kkkk consigo exibir uma variavel ou uma frase no display LCD, mais e so isso também ta kkk pois to focado nos videos do Wr Kits para aprender mesmo e to ate pensando em fazer um curso no Microgenios sobre linguagem c para pic, so n comecei ainda porque estou quitando umas contas aqui antes rsrs. bom eu tenho aqui um codigo de uma matris de led de 15 colunas por 7 linhas que baixei da net, fiz umas adaptações no codigo e uma delas foi acrescentar o Ci 595 e por incrivel q pareca funcionou kkk vou postar o codigo aqui e vcs da uma olhada e me diz se ele pode ser melhorado se posso a partir dele fazer um Vu de led com a quantidade de led q eu quiser usar. Ha sim tentei colocar mais matrizes de led funcionou so q quanto mais coluna mais lento as letras correm, mesmo eu tirando o delay porque sera q isso acontece? #define shcp ra0_bit #define ds ra1_bit #define stcp ra2_bit #define b1 button(&portb,4,1,1) #define b2 button(&portb,5,1,1) #define b3 button(&portb,6,1,1) #define b4 button(&portb,7,1,1) #define texto 50 //140max #define espaco 50 //max 105 int longo; // contador do longo do texto int velocidade; //velocidade da rolagem int multiplexacao;// contador de multiplexacao de coluna char longe=2, E=5; // veocidade iniciada em 5 bit bb1, bb2, bb3, bb4; int const filas[texto+espaco]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,1,65,126,64, 0,62,65,65,65,62, 0,127,73,73,73,65, 0,127,1,1,1,1, 0,50,73,73,73,38, 0,62,65,65,65,62, 0,127,16,8,4,127, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; int coluna [17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; void InitTimer0(){ OPTION_REG = 0x81; TMR0 = 6; INTCON = 0xA0; } void Interrupt(){ if (TMR0IF_bit){ TMR0IF_bit = 0; TMR0 = 6; if((b1) && bb1==1) { bb1=0; E++; } if((!b1) && bb1==0) { bb1=1; } if((b2) && bb2==1) { bb2=0; E--; } if((!b2) && bb2==0) { bb2=1; } if((b3) && bb3==1) { bb3=0; longe++; } if((!b3) && bb3==0) { bb3=1; } if((b4) && bb4==1) { bb4=0; longe--; } if((!b4) && bb4==0) { bb4=1; } } } void main() { ansel=0; anselh=0; C1ON_bit = 0; // Disable comparators C2ON_bit = 0; //trise=0x00; //porte=0x00; trisa=0x00; porta=0b00000000; trisb=0b11110001; portb=0b00000000; trisc=0x00; portc=0b00000000; trisd=0x00; portd=0x00; InitTimer0(); while(1) { for(longo=0;longo<texto+20;longo++) { for(velocidade=0;velocidade<E;velocidade++) { for(multiplexacao=0;multiplexacao<15;multiplexacao++) { switch(coluna[multiplexacao]) { case 1:ds=0;shcp=0; shcp=1;stcp=1; stcp=0; break; case 2:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 3:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 4:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 5:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 6:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 7:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 8:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 9:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 10:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 11:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 12:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 13:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 14:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; case 15:ds=1;shcp=0; shcp=1;stcp=1; stcp=0; break; } portd=(filas[longo+multiplexacao]); delay_ms(1); } } } } }
  4. @Poporms ola boa noite!! meu amigo com esse mesmo esquema ai eu posso colocar mais leds@Poporms adicionado 51 minutos depois @aphawk @Poporms posso usar Ci 74hc595 no lugar do 2n@Poporms
  5. @vtrx @vtrx n estou entendendo o soft na hora de conectar um Max ao outro adicionado 6 minutos depois @Isadora Ferraz meu Deus Isadora q coisa linda isso aí é nível hard reprogramação. Usando o 595 eu consegui fazer uma com 3 matriz 7x5 mais ficou um negócio meia boca pois ainda to aprendendo essa há e se fizer com Max quero ver tá quero muito e vou aprender usar
  6. gente eu comprei dois modulo desse com 4 matriz 8x8 e 4 max7219 ligado em cascata, mais n consigo entender o funcionamento dele em cascata ja procurei no google e so acho com arduino. Alguem aqui que entende desse bichinho poderia me da ao menos uma luz
  7. @Isadora Ferraz consegui resolver o problema eu estava usando oscilador interno de 16Mhz eu passei pra 4 ai parou de travar . pensa em uma dor de cabeça que me deu por causa disso kk obrigada pela ajuda
  8. @Ricardov eu usei o 7805 na montagem e 1 capacitor 100n para cada integrado, link do video https://photos.app.goo.gl/jooqTNx4sDSerpDh7
  9. galera é o seguinte eu fiz aqui um codigo com o pic 12f629 usando oscilador interno e comunicacao SPI com o max 7219 e 4 displays 7 segmentos. acontece que tem horas quando ligo ou reseto ele trava com todos os digitos acesos, ai so retirando a alimentacao pra funcionar de novo. alguem me ajuda #define contmais button(&gpio, 4, 1, 0) #define contmenos button(&gpio, 5, 1, 0) // Software SPI module connections sbit SoftSpi_SDI at GP0_bit; sbit SoftSpi_SDO at GPIO; sbit SoftSpi_CLK at GP1_bit; sbit SoftSpi_SDI_Direction at TRISIO0_bit; sbit SoftSpi_SDO_Direction at TRISIO; sbit SoftSpi_CLK_Direction at TRISIO1_bit; //MAX7219 sbit MAX7219_CS at GP2_bit; sbit MAX7219_CS_Direction at TRISIO2_bit; int i; /////////////////////////////////////////////// //////////Funções do MAX7219/////////////////// ////////////////////////////////////////////// //Inicia a comunicacao SPI e configura o chip MAX7219 void MAX7219_Init() { MAX7219_CS_Direction = 0; ///pic12f629/// CMCON = 0x07; ////////////// Soft_SPI_Init(); MAX7219_CS = 0; Soft_SPI_write(0x09); Soft_SPI_write(0xff); //Code B MAX7219_CS = 1; //Configura a luminosidade do display(0-15) MAX7219_CS = 0; Soft_SPI_write(0x0a); Soft_SPI_write(0x0f); //intensity MAX7219_CS = 1; //Configura o numero de displays escaneados(0-7) MAX7219_CS = 0; Soft_SPI_write(0x0b); Soft_SPI_write(0x04); //scan limit MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_write(0x0c); Soft_SPI_write(0x01); //ShutDown MAX7219_CS = 1; MAX7219_CS = 0; Soft_SPI_write(0x00); Soft_SPI_write(0xff); MAX7219_CS = 1; } //Escreve um numero no display void MAX7219_putNumber(char *number) { char i=0,dp=0; char len = strlen(number); MAX7219_CS = 0; Soft_SPI_write(0x09); Soft_SPI_write(0xff); //CodeB MAX7219_CS = 1; for(i=4; i > 0; i--) { MAX7219_CS = 0; Soft_SPI_Write(i); if(number[len-1]=='.') { dp = 0x80; i++; } else if(number[len-1]==' ' || number[len-1]==0 || len==0) { Soft_SPI_Write(0x7f); dp = 0; MAX7219_CS = 1; } else if(number[len-1]=='-') { Soft_SPI_write(10); dp = 0; MAX7219_CS = 1; } else { Soft_SPI_Write((number[len-1] - '0') | dp); dp = 0; MAX7219_CS = 1; } if(len > 0) len--; } } void main() { unsigned int cont=0; char txt[7]; bit flag1, f1; trisio4_bit=1; gp4_bit=0; MAX7219_Init(); while(1) { //----------mais-------------------------- if((contmais) && flag1 ==1) { flag1=0; } if((!contmais) && flag1 ==0) { flag1=1; cont++; }// fim mais /*------------menos------------------------ if((contmenos) && f1 ==1) { f1=0; } if((!contmenos) && f1 ==0) { f1=1; cont--; }//fim menos */ IntToStr(cont, txt); MAX7219_putNumber(txt); } }
  10. joelTGA

    C Matriz de Led 8x8 MikroC

    @Awvis você ja conseguiu? também quero fazer
  11. @Ricardov quero com um botão ou 2 ir mudando os efeitos dos leds, eu fiz aqui mais tenho q pressionar varias vezes o botão para que o pic mude os efeitos dos led. depois de pesquisar na internet descobri que e porque o pic trabalha por pulling, linha por linha... entao pra fazer isso tenho q usar interrupçao ne? que ira tratar p botao com preferência é isso? o que acontece é que nao estou conseguindo usar essa interrupçao do pic 16f886@Isadora Ferraz
  12. @Isadora Ferraz @Isadora Ferraz eu estou querendo fazer com uns 8 leds varios tipos de efeitos diferente, porém quero mudar os efeito usando apenas um botão. eu fizz aqui de um jeito so que as vezes pressiono o botao e nao pula. você poderia me ajudar a resolver esse problema?? esse ai e o codigo que fiz mais ou menos so pra você entender melhor o que quero fazer #define botao1 RC0_bit #define led1 RA4_bit #define botao2 button(&portc, 1, 1, 1) void main() { unsigned int cont=0; bit flagc0, trisb =0b00000000; portb= 0b00000000; trisc= 0b00000001; portc= 0b00000000; TRISA= 0B00000000; PORTA= 0B00000000; while(1) { if((botao1 && flagc0==1)) { flagc0=0; } if((botao1 && flagc0==0)) { flagc0=1; cont++; } if(cont == 1) { rb0_bit=1; delay_ms(80); rb1_bit=1; delay_ms(80); rb2_bit=1; delay_ms(80); rb3_bit=1; delay_ms(80); rb4_bit=1; delay_ms(80); rb5_bit=1; delay_ms(80); } if(cont == 2) { rb5_bit=1; delay_ms(80); rb4_bit=1; delay_ms(80); rb3_bit=1; delay_ms(80); rb2_bit=1; delay_ms(80); rb1_bit=1; delay_ms(80); rb0_bit=1; delay_ms(80); }else{portb=0;} if(cont == 3) { portb=0b00000000; delay_ms(80); portb=0b00100001; delay_ms(80); portb=0b00110011; delay_ms(80); portb=0b00111111; delay_ms(80); portb=0b00000000; delay_ms(80); } } }

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...