Ir ao conteúdo
  • Cadastre-se

Fervolt

Membro Pleno
  • Posts

    335
  • Cadastrado em

  • Última visita

posts postados por Fervolt

  1. Olá, o programa abaixo recebe dados pela serial, quando recebe o valor 249 (0xF9), entende que é o inicio da recepção de uma string de caracteres, quando recebe 254 (0xFE) entende que o byte seguinte será um comando para ser enviado ao LCD. 

    A string de caracteres é enviada ao LCD caracter por caracter conforme vai recebendo, então, caso queira armazenar, será preciso criar um array.

     

    Dúvidas retorne.

     

    Programa de recepção:

    #include <main.h>#include <lcd.h>#define LIGA output_high#define DESLIGA output_low#define PWM2 PIN_C3#byte RCSTA = 0X18#byte RCREG = 0x1A //posição que contém dado recebido pela serial//Variáveis globaisint1 bComandoLcd, bRecebeCmd, bR;int iValor, iComando, iDado, iSLcd;int16 iCont;#int_RDA //Interrupção de dado na serialvoid  RDA_isr(void){       iDado = RCREG;      if(iDado == 249 && !bR){      //bR - Flag q habilita recepção de uma string de caracteres      bR = 1;      iDado = 0;      return;   }      if(iDado == 249 && bR){      bR = 0;      iDado = 0;      return;   }      if(bR){      iSLcd = iDado;      iDado = 0;      return;   }         //Se receber 254 (0xFE) liga flag de recepção de comando p LCD   if(iDado == 254 && !bRecebeCmd){      iValor = iDado;      iDado = 0;      bRecebeCmd = 1;      return;   }      //Recebe o comando a ser enviado ao LCD   If(iValor == 254 && bRecebeCmd){      bRecebeCmd = 0;      iValor = 0;      iDado = 0;      bComandoLcd = 1;      iComando = RCREG;      return;   }         }void main(){    enable_interrupts(INT_RDA);   enable_interrupts(GLOBAL);      lcd_ini();    limpa_tela();   cursor(1);     bComandoLcd = 0;   iComando = 0;   iValor = 0;   iCont = 0;        for(;{            if(bComandoLcd){         bComandoLcd = 0;         lcd_envia_byte(0, iComando);         iComando = 0;      }               if(iSLcd && bR){         if(iSLcd >= 32 && iSLcd <= 126){             printf(lcd_escreve, "%c", iSLcd);                     }         iSLcd = 0;      }           }}

    Programa de transmissão:

    #include <628TX.h>#include <teclas.h>int iTeclaAtu;void main(){      for(;{            iTeclaAtu = teclas();            if(iTeclaAtu == 1){         putc(249);         printf("Teste");         putc(249);         iTeclaAtu = 0;      }               if(iTeclaAtu == 2){         putc(0xFE);         putc(1);         iTeclaAtu = 0;      }   }}
    • Curtir 1
  2. Olá,

    Tenho um desse, mesmo modelo.

    Recomendo que veja se o filamento está aceso como a colega acima citou, caso esteja, verifique o potenciometro de brilho.

    Verifique tambem o +B que chega no fly-back.

    O meu ja deu defeito em 2 potenciometros (e na chave x5) não era o do brilho mas acredito que tenham a mesma qualidade.

     

    Att,

  3. Olá,

    Veio a calhar este tópico, pois, estou no caminho das pedras com minha plaquinha ARM (STM32F103VC). gravador J-TAG J-LINK "clone".

    Instalei o CooCox e o Keil, estão funcionando, compilei "led blink"(rs) nos 2, gravei e funcionou.

    Venho dos PICs com compilador predominante CCS C, mas sei programar em assembly.

    O que posso dizer até agora é que, fazendo uma analogia grotesca, se o PIC é um carro popular, o ARM é um onibus espacial em termos de recursos.

    Está muito difícil assimilar tudo o que ele tem.

    Estabeleci algumas metas para meu aprendizado, assim como comecei com PIC, fazer programas simples para explorar os periféricos separadamente, como I/O, Timers, Interrupções, comunicações(USART, I2C, SPI, etc) e depois fazer um projeto integrando vários.

    Vou acompanhar o tópico, com certeza será de muito proveito.

     

    Parabéns pela iniciativa.

     

    Fervolt

  4. Olá,

    Geralmente não é difícil de consertar, o +5v que vai para as portas USB tem proteção que pode ser um indutor(bobina) ou resistor de 0 ohm, em caso de curto circuito, esses componentes "abrem" evitando que o curto siga.

    Tente seguir a linha de 5 volts da porta que queimou e procure por componentes em série com essa trilha, ou tente encontrar o manual de serviço que contenha o esquema elétrico da máquina, aí fica fácil.

     

    Att,

    Fervolt

    • Curtir 1
  5. MatheusLPS,

    Eu fiz um desses, posso tirar uma fotos se quiser, é bem caseiro mesmo.

    Usa um "tapperware" de R$ 1,99, um cooler 12V e um umidificador ultrasonico igual a este http://www.ebay.com/itm/Mist-Maker-Fogger-Humidifier-Water-Pond-Fountain-12-LED-/261234352365?pt=LH_DefaultDomain_0&hash=item3cd2c7e0ed

    Para alimentar, um trafo 12+12 2A, funciona com AC direto, liguei os 2 enrolamentos em série para obter 24VAC.

    Usei por meses direto e funciona muito bem, melhor até que alguns de mercado.

    Att,

  6. Bom sou novo no forum...meu primeiro post la vai em 3, 2, 1..

    Sou tecnico em eletronica ha 6 anos e agora me surgiu uma vontade de fazer alguns projetos em PIC. Mas antes eu dei uma olhada no CREA se eu tinha como atribuiçao fazer projetos. Me decepcionei quando vi que meu diploma diz que sou projetista em eletronica e no crea diz que tecnico nao pode fazer projetos.

    Lendo esses posts senti a necessidade de informalos que fazer projetos sem ser habilitado para tal pode dar algumas dores de cabeça se for pego.

    Segue o link do CONFEA para ler o que um TECNICO JA FORMADO pode fazer:

    http://normativos.confea.org.br/ementas/visualiza.asp?idEmenta=310&idTipoEment

    Bom dia a todos,

    dantas.roberto, sabe me dizer que o curso tecnico eletroeletronica do senai entra nessa parte da legislação? Não entendi quando diz "técnico de 2° grau".

    Terminei o curso no final do ano passado, 1200 horas presencial.

    Tenho, por enquanto, como hobby fazer circuitos com microcontroladores, também imaginava que com esse curso poderia projetar equipamentos comerciais.

    Att,

  7. Boa tarde,

    Na minha opinião, 1 PIC só faz isso tranquilo.

    Estou terminando um projeto que tem display gráfico 128x64, teclado de 8 teclas com bip, conversor A/D (2 canais), faz cáculo de leitura de um PT100 por calendar van-dusen, monitora 6 entradas digitais e controla 8 saídas.

    O teclado é multiplexado com o bus de dados do GLCD.

    Uso um PIC18F4550 clock do núcleo 16MHz.

    Até agora, está sendo usados 20% da RAM e 42% da ROM no CCS, tem muitas "strings" e elas ocupam bastante a ROM.

    Funciona muito bem e rápido, não perde sequer 1 pressionamento de qualquer tecla.

    Pretendo implementar USB para enviar o valor da temperatura para o PC.

    Att,

  8. Olá,

    Pode também procurar pelo 2N2219 ou 2N2222 (menor potência).

    No lugar do trimmer você pode colocar um capacitor ceramico de valor fixo, compre vários na faixa de 5 a 20pF e vá testando. A frequencia neste caso pode ser ajustada na bobina, ao "espaçar" as espiras aumenta a frequencia, ao comprimir diminui.

    Para testar, coloque um rádio perto em uma frequencia livre e tente espaçar ou comprimir a bobina até que o "chiado" desapareça, quando o rádio ficar mudo é sinal que você está conseguindo transmitir o sinal da portadora.

    Quando eu fazia transmissor eu fazia assim, fica mais estável, muitos dos trimmer que são vendidos hoje não tem boa qualidade o que prejudica a estabilidade do transmissor.

    Abç

    • Curtir 1
  9. Olá,

    Depois que comecei usar o CCS, por várias vezes tentei migrar para o mikroc mas acabo sempre voltando pro CCS, tive problemas com GLCD, depois que consegui adaptar minha própria biblioteca para um modelo de GLCD que não funcionava com a biblioteca GLCD do CCS não usei mais o mikroC.

    Gosto do CCS porque as bibliotecas estão disponíveis, você pode altera-las a sua necessidade, no mikroC que eu sei não tem como.

    Muitos dizem que o mikroC gera o código "melhor" que o CCS, não sei dizer, pois, a maioria das minhas aplicações não são críticas e trabalho com folga em recursos de hardware.

    Quando a aplicação é crítica, faço em assembly.

    Abç

    • Curtir 1
  10. Bom dia,

    Segue um vídeo que fiz ontem do meu propeller.

    Arquivo propeller.h (somente cabeçalho)

    #include <16F628A.h>

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES INTRC_IO //Internal RC Osc, no CLKOUT
    #FUSES PUT //Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES NOBROWNOUT //No brownout reset
    #FUSES MCLR //Master Clear pin enabled
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection
    //#FUSES RESERVED //Used to set the reserved FUSE bits

    #use delay(clock=4000000)

    Arquivo graphics.c (adaptado do próprio ccs)

    /////////////////////////////////////////////////////////////////////////
    //// Defines a 5x7 font
    /////////////////////////////////////////////////////////////////////////
    const int8 FONT[51][5] ={0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
    0x00, 0x00, 0x5F, 0x00, 0x00, // !
    0x00, 0x03, 0x00, 0x03, 0x00, // "
    0x14, 0x3E, 0x14, 0x3E, 0x14, // #
    0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
    0x43, 0x33, 0x08, 0x66, 0x61, // %
    0x36, 0x49, 0x55, 0x22, 0x50, // &
    0x00, 0x05, 0x03, 0x00, 0x00, // '
    0x00, 0x1C, 0x22, 0x41, 0x00, // (
    0x00, 0x41, 0x22, 0x1C, 0x00, // )
    0x14, 0x08, 0x3E, 0x08, 0x14, // *
    0x08, 0x08, 0x3E, 0x08, 0x08, // +
    0x00, 0x50, 0x30, 0x00, 0x00, // ,
    0x08, 0x08, 0x08, 0x08, 0x08, // -
    0x00, 0x60, 0x60, 0x00, 0x00, // .
    0x20, 0x10, 0x08, 0x04, 0x02, // /
    0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
    0x00, 0x04, 0x02, 0x7F, 0x00, // 1
    0x42, 0x61, 0x51, 0x49, 0x46, // 2
    0x22, 0x41, 0x49, 0x49, 0x36, // 3
    0x18, 0x14, 0x12, 0x7F, 0x10, // 4
    0x27, 0x45, 0x45, 0x45, 0x39, // 5
    0x3E, 0x49, 0x49, 0x49, 0x32, // 6
    0x01, 0x01, 0x71, 0x09, 0x07, // 7
    0x36, 0x49, 0x49, 0x49, 0x36, // 8
    0x26, 0x49, 0x49, 0x49, 0x3E, // 9
    0x00, 0x36, 0x36, 0x00, 0x00, // :
    0x00, 0x56, 0x36, 0x00, 0x00, // ;
    0x08, 0x14, 0x22, 0x41, 0x00, // <
    0x14, 0x14, 0x14, 0x14, 0x14, // =
    0x00, 0x41, 0x22, 0x14, 0x08, // >
    0x02, 0x01, 0x51, 0x09, 0x06, // ?
    0x3E, 0x41, 0x59, 0x55, 0x5E, // @
    0x7E, 0x09, 0x09, 0x09, 0x7E, // A
    0x7F, 0x49, 0x49, 0x49, 0x36, // B
    0x3E, 0x41, 0x41, 0x41, 0x22, // C
    0x7F, 0x41, 0x41, 0x41, 0x3E, // D
    0x7F, 0x49, 0x49, 0x49, 0x41, // E
    0x7F, 0x09, 0x09, 0x09, 0x01, // F
    0x3E, 0x41, 0x41, 0x49, 0x3A, // G
    0x7F, 0x08, 0x08, 0x08, 0x7F, // H
    0x00, 0x41, 0x7F, 0x41, 0x00, // I
    0x30, 0x40, 0x40, 0x40, 0x3F, // J
    0x7F, 0x08, 0x14, 0x22, 0x41, // K
    0x7F, 0x40, 0x40, 0x40, 0x40, // L
    0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
    0x7F, 0x02, 0x04, 0x08, 0x7F, // N
    0x3E, 0x41, 0x41, 0x41, 0x3E, // O
    0x7F, 0x09, 0x09, 0x09, 0x06, // P
    0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
    0x7F, 0x09, 0x09, 0x09, 0x76};// R

    const int8 FONT2[44][5]={0x26, 0x49, 0x49, 0x49, 0x32, // S
    0x01, 0x01, 0x7F, 0x01, 0x01, // T
    0x3F, 0x40, 0x40, 0x40, 0x3F, // U
    0x1F, 0x20, 0x40, 0x20, 0x1F, // V
    0x7F, 0x20, 0x10, 0x20, 0x7F, // W
    0x41, 0x22, 0x1C, 0x22, 0x41, // X
    0x07, 0x08, 0x70, 0x08, 0x07, // Y
    0x61, 0x51, 0x49, 0x45, 0x43, // Z
    0x00, 0x7F, 0x41, 0x00, 0x00, // [
    0x02, 0x04, 0x08, 0x10, 0x20, // \
    0x00, 0x00, 0x41, 0x7F, 0x00, // ]
    0x04, 0x02, 0x01, 0x02, 0x04, // ^
    0x40, 0x40, 0x40, 0x40, 0x40, // _
    0x00, 0x01, 0x02, 0x04, 0x00, // `
    0x20, 0x54, 0x54, 0x54, 0x78, // a
    0x7F, 0x44, 0x44, 0x44, 0x38, // b
    0x38, 0x44, 0x44, 0x44, 0x44, // c
    0x38, 0x44, 0x44, 0x44, 0x7F, // d
    0x38, 0x54, 0x54, 0x54, 0x18, // e
    0x04, 0x04, 0x7E, 0x05, 0x05, // f
    0x08, 0x54, 0x54, 0x54, 0x3C, // g
    0x7F, 0x08, 0x04, 0x04, 0x78, // h
    0x00, 0x44, 0x7D, 0x40, 0x00, // i
    0x20, 0x40, 0x44, 0x3D, 0x00, // j
    0x7F, 0x10, 0x28, 0x44, 0x00, // k
    0x00, 0x41, 0x7F, 0x40, 0x00, // l
    0x7C, 0x04, 0x78, 0x04, 0x78, // m
    0x7C, 0x08, 0x04, 0x04, 0x78, // n
    0x38, 0x44, 0x44, 0x44, 0x38, // o
    0x7C, 0x14, 0x14, 0x14, 0x08, // p
    0x08, 0x14, 0x14, 0x14, 0x7C, // q
    0x00, 0x7C, 0x08, 0x04, 0x04, // r
    0x48, 0x54, 0x54, 0x54, 0x20, // s
    0x04, 0x04, 0x3F, 0x44, 0x44, // t
    0x3C, 0x40, 0x40, 0x20, 0x7C, // u
    0x1C, 0x20, 0x40, 0x20, 0x1C, // v
    0x3C, 0x40, 0x30, 0x40, 0x3C, // w
    0x44, 0x28, 0x10, 0x28, 0x44, // x
    0x0C, 0x50, 0x50, 0x50, 0x3C, // y
    0x44, 0x64, 0x54, 0x4C, 0x44, // z
    0x00, 0x08, 0x36, 0x41, 0x41, // {
    0x00, 0x00, 0x7F, 0x00, 0x00, // |
    0x41, 0x41, 0x36, 0x08, 0x00, // }
    0x02, 0x01, 0x02, 0x04, 0x02};// ~
    /////////////////////////////////////////////////////////////////////////

    Arquivo propeller.c (programa principal)

    #include "propeller.h"
    #include "graphics.c"

    int8 letra[5];

    void texto57(char* textptr, int posicao){
    int8 h;
    h = 0;

    textptr += posicao;

    if(*textptr < 'S')
    memcpy(letra, FONT[*textptr - ' '], 5);
    else if(*textptr <= '~')
    memcpy(letra, FONT2[*textptr - 'S'], 5);
    else
    memcpy(letra, FONT[0], 5);

    }

    //****************** Rotina principal ******************//
    void main(){
    int8 n, m, inicio, fim, atual, tamanho, comeco;

    char texto[] = " Feliz 2012 a todos do Forum Clube do Hardware!! ";

    *cmcon = 0x07;
    atual = 0;
    m=0;
    tamanho = sizeof(texto)-2;

    output_b(255);
    output_bit(pin_a6, 1);
    output_bit(pin_a7, 1);

    delay_ms(3000); //Acende todos os leds por 3 segundos, para teste

    while(1){
    if(!input(PIN_A0)){
    delay_ms(5);

    for(inicio = 0; inicio < 17; inicio++){

    if(fim+inicio < tamanho){
    texto57(texto, fim+inicio);
    }else{
    fim = 0;
    }

    for(n = 0; n < 5; n++){

    output_bit(pin_a6, bit_test(letra[n], 4));
    output_bit(pin_a7, bit_test(letra[n], 6));

    output_b(letra[n]);
    delay_us(180);

    output_low(pin_a6);
    output_low(pin_a7);

    output_b(0);
    delay_us(230);
    }
    delay_us(320);
    }
    m++;
    if(m == 2){
    atual++;
    fim++;
    m = 0;
    }
    }
    }

    //*********** FIM LOOP PRINCIPAL *************
    }

    O programa foi desenvolvido por mim, peguei a tabela de caracteres pronta do ccs (um dos motivos que prefiro o ccs ao mikroc :D). Acredito que da pra melhorar esse código, minha intenção era implementar um controle IR para editar a frase mas não tive mais tempo.

    Se alguém tiver alguma dúvida é só perguntar.

    Att,

    Fervolt

    post-254226-13884961536386_thumb.jpg

    • Curtir 3
  11. Bom dia,

    Bem legal seu propeller, parabéns!!

    Eu tenho um também, nem lembrava mais, só que o meu é mais simples, usa 2 baterias CR2016 onboard e é tipo "AXIAL", programado em C (ccs) e consegue escrever até 16 caracteres rotacionando. Se você permitir posso postar uma foto.

    Abraço

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!