Ir ao conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Mostrando resultados para as tags ''PIC''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Categorias

  • Armazenamento
  • Áudio
  • Energia
  • Entrada
  • Feiras e Eventos
  • Gabinetes
  • Memória
  • Museu
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Rádio CdH
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Armazenamento
  • Áudio
  • Câmeras
  • Computadores
  • Consoles
  • Eletrônicos
  • Energia
  • Entrada
  • Gabinetes
  • Impressão
  • Jogos
  • Memória
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Livros disponíveis
  • Livros esgotados

Fóruns

  • Mensagens do Clube do Hardware
    • Regras gerais
    • Boletins do Clube do Hardware
    • Notícias da administração
  • Hardware
    • Recomendações de computadores
    • Placas de vídeo
    • Placas-mãe e chipsets
    • Processadores
    • Problemas de gargalo e desempenho
    • Memórias
    • Armazenamento
    • Refrigeração e superaquecimento
    • Fontes e energia
    • Gabinetes e casemods
    • Placas de som e áudio on-board
    • Periféricos
    • Mac
    • Overclock
    • Hardware - outros
  • Computação móvel
    • Notebooks
    • Tablets
    • Smartphones e apps
  • Redes e Internet
    • Redes e Internet
    • Hospedagem de sites e registro de domínios
  • Segurança da informação
    • Remoção de malware
    • Dúvidas sobre invasões e infecções
    • Programas de proteção
  • Programação e desenvolvimento
    • Java
    • C/C#/C++
    • Pascal/Delphi
    • .NET
    • Bancos de dados
    • Programação web
    • Programação - iniciantes
    • Programação de microcontroladores
    • Programação - outros
  • Software
    • Jogos
    • Pacotes de escritório
    • Computação distribuída (Folding@Home, Bitcoin etc.)
    • Virtualização
    • Design, animação e tratamento de imagens
    • Edição de áudio e vídeo
    • Programas
  • Sistemas Operacionais
  • Eletrônicos
  • Outros
  • Clube do Hardware

Categorias

  • Hardware
  • Redes
  • Eletrônica
  • Sistemas operacionais

Encontrar resultados em...

Encontrar resultados que...


Data de criação

  • Iniciar

    FIM


Última atualização

  • Iniciar

    FIM


Filtrar pelo número de...

Data de registro

  • Iniciar

    FIM


Grupo


Caixas de som

Encontrado 158 registros

  1. Boa tarde amigos! É minha primeira participação nesse forum de microcontroladores. Estou inciando meus estudos com PIC e CCS e fiz esse circuito: Funcionou, fiquei contente! Mas sou admirador de LCD display. Alguém poderia me ajudar com um código simples para escrever no LCD (16x2) a palavra "LED 1" ou "LED 2" quando acionado os botôes? E aproveitando, vi outros exemplos de estudo com apenas um botão e não dois. Cada pressionado, acende um led apenas.Dá para mudar esse? Usei esse código para o teste: // PIC16F84A LED blink example // https://simple-circuit.com/ // electronnote@gmail.com #include <16F84A.h>; #fuses HS,NOWDT,PUT,NOPROTECT #use delay(crystal=8000000) void main(){ while(TRUE){ // Endless loop if(input(PIN_B0) == 0){ // If RB0 button is pressed output_toggle(PIN_A0); // Toggle RA0 LED status delay_ms(500); // Wait 500 ms } if(input(PIN_B1) == 0){ // If RB1 button is pressed output_toggle(PIN_A1); // Toggle RA1 LED status delay_ms(500); // Wait 500 ms } } }
  2. Qual o método para usar um ADC (0 a 255) com POT de 10K,mas que o centro do cursor do POT represente o valor 127?
  3. Olá amigos, tudo bem? Tenho uma dúvida que gostaria de tirar com vocês, poderiam me ajudar? Gostaria de fazer comunicação USB com o dspic33F, estou me baseando num artigo do Newton C Braga onde ele usa o PIC18F4550 https://www.newtoncbraga.com.br/index.php/microcontrolador/141-microchip-pic/9938-comunicacao-usb-com-pic18f4550-e-interface-grafica-em-c-col133 Nesse artigo, as saídas USBD+ e USBD- serão conectadas respectivamente nas portas RC4/D-/VM (pino 23) e RC5/D+/VP (pino 24). As respetivas descrições são: USB differential minus line (input/output) e USB differential plus line (input/output) Quando olho o dspic33F, não encontro saídas com a mesma nomenclatura, também não encontro nenhuma saída cuja descrição mencione USB, estou na dúvida sobre qual pino devo utilizar para fazer essa ligação. Também preciso da opinião de vocês quanto a seguinte questão: trata-se de um projeto onde preciso reconhecer alguns periféricos como RFID, leitor de barras e impressora, seria possível efetuar isso com esse conector USB? Ou existe alguma diferença entre um USB para comunicação e um USB para plug-and-play? Datasheet do dspic33F http://ww1.microchip.com/downloads/en/DeviceDoc/70165d.pdf Datasheet do PIC18F4550 https://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf
  4. Pessoal, preciso fazer o controle do pic18f4550 por bluetooth obrigatóriamente usando MPLab e CCS. Não entendo muito disso e não acho nada na internet em português
  5. Eu criei um programa aparentemente simples. Fiz simulações no Isis Proteus e funciona, mas quando gravo no PIC 16f84A não funciona do mesmo jeito. No circuito há 2 chaves: Chave (1). Tem 3 posições, no qual tem 3 terminais + um comum Chave (2). Tem duas posições, no qual tem 2 terminais + um comum o que fiz foi usar if e else. 1 passo: Quando chave (1) está na posição 1 e chave (2) está recebendo nível lógico 0v PORTB = 0b11000111; 2 passo: Quando chave (1) está na posição 1 e chave (2) está recebendo nível lógico 5v PORTB = 0b11000111; Ou seja, Tanto faz se Chave (2) receber nível lógico 0v ou 5v os Port's não mudará. 3 passo: Quando chave (1) está na posição 2 e chave (2) está no nível logico 0v PORTB = 0b00111111; 4 passo: Quando chave (1) está na posição 2 e chace (2) está no nível lógico 5v PORTB = 0b00111011; 5 passo: Quando chave (1) está na posição 3 e chave (2) está no nível lógico 0v PORTB = 0b00111000; 6 passo. Quando chave (1) está na posição 3 e chave (2) está no nível lógico 5v PORTB = 0b00111100; Estou usando o Copilador Mikro C e PIC 16F84A iniciei o programa: #define CLN RA0_bit #define ORG RA1_bit #define RED RA2_bit // Botões #define NRM RA3_bit void main() { TRISA = 0xFF; //PORT's "A" são entradas TRISB = 0x00; // PORT's "B" são saídas PORTA = 0xFF; //PORTA's iniciam em nível lógico 1 PORTB = 0x00; //PORTB's iniciam em nível lógico 0 adicionado 5 minutos depois while (1) { if (ORG == 0x00 && NRM == 0x00) // Se PORTA1 e PORTA3 estiverem nível lógico 0 { PORTB = 0b00111111; delay_ms(100); } else if (ORG == 0x00 && NRM == 0x01) // Se PORTA1 estiver em nível lógico em 0 e e PORTA3 nível lógico 1 { PORTB = 0b00111011; delay_ms(100); } if (CLN == 0x00 && NRM == 0x00) // Se PORTA0 e PORTA3 estiverem nível lógico 0 { PORTB = 0b11000111; delay_ms(100); } else if (CLN == 0x00 && NRM == 0x01) // Se PORTA0 estiver no nível lógico 0 e PORTA3 estiver nível lógico 1 { PORTB = 0b11000111; delay_ms(100); } if (RED == 0x00 && NRM == 0x00) // Se PORTA2 e PORTA3 estiverem nível lógico 0 { PORTB = 0b00111000; delay_ms(100); } else if (RED == 0x00 && NRM == 0x01) // Se PORTA2 estiver no nível lógico 0 e PORTA3 estiver ível lógico 0 { PORTB = 0b00111100; delay_ms(100); } } } adicionado 20 minutos depois no Isis funciona que é uma beleza. Mas na protoboard os relés ficam abrindo e fechando. Pensei q era problema com o microcontrolador, mas fiz uma programação acendendo LEDs nos port's e estão funcionando normal. Acho que como estou usando a variável NRM. Mas estou tendo dificuldade pra solucionar.
  6. Gostaria de saber como faço para endereçar, a nível de cluster, trilha e cilindro, um dado no HD ou SSD com um microcontrolador, podendo esse ser PIC, Arduino ou Raspberry. Inicialmente, pensei no Hd via IDE, mas gostaria de saber também para SATA. A aplicação desse conhecimento espero utilizar para a criação de um equipamento microcontrolado que salve dados diretamente em um HD/SSD, podendo futuramente ler esse dado também. Mas é bom lembrar que não espero utilizar o PC, quero conectar o HD diretamente em um PIC.
  7. Bom dia, estou tentando fazer uma chave seletora digital de 9 posições utilizando relés para chavear a posição que for selecionada, poderiam me dar dicas para fazer essa programação no mplab. A chave vai funcionar assim: com 3 botões touch, um para incrementar, outro para decrementar e um como enter, selecionando a posição desejada, dou o comando de enter e o relé referente á essa posição vai acionar algum componente ou operação em uma máquina. <> #include<P18F4550.h> #include<delays.h> // Configurações #pragma config PLLDIV = 5 // PLL para 20MHz #pragma config CPUDIV = OSC1_PLL2 // PLL desligado #pragma config FOSC = HS // Fosc = 20MHz Tcy = 200ns #pragma config WDT = OFF // Watchdog desativado #pragma config PBADEN = OFF // Pinos do PORTB começam como //digitais #pragma config LVP = OFF // Desabilita gravação em baixa //tensão #pragma config DEBUG = ON // Habilita debug // Definições de hardware #define INC PORTBbits.RB0 // Botão incrementa #define DEC PORTBbits.RB1 // Botão decrementa #define TRV PORTBbits.RB2 // Chave libera trava "um pulso // por toque" #define DISP2 PORTEbits.RE0 // DISP2 #define DISP1 PORTEbits.RE2 // DISP1 #define DISPLAY PORTD // Segmentos do display ligados em PORTD void main(void){ int i = 0, valor; unsigned char dezena, unidade, aux0=0, aux1=0, aux=0; unsigned char tempo = 70; // tabela de dígitos do display - matriz de segmentos char table[] = {0b11110011, // P }; char table2[] = {0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00000111, // 7 0b01111111, // 8 0b01101111, // 9 }; // *** Inicialização ADCON1 = 0x0F; // Procurar no datasheet DDRD = 0x00; // Configura port D como saída DDREbits.RE0 = 0; // Configura RE0 como saída (DISP2) DDREbits.RE2 = 0; // Configura RE2 como saída (DISP1) DDRBbits.RB0 = 1; // Configura RB0 como entrada (INC) DDRBbits.RB1 = 1; // Configura RB0 como entrada (DEC) DDRBbits.RB2 = 1; // Configura RB0 como entrada (TRV) DISP1 = 0; // DISP1 desligado DISP2 = 1; // DISP2 desligado INTCON2bits.RBPU = 0; // Ativa pull-ups do portB for(;;){ if(!INC && !aux0){ // Incrementa i if(i < i++; if(TRV) aux0=1; // Para incremento de "um em um" } if(INC) aux0=0; if(!DEC && !aux1){ // Decrementa i if(i > 0) i--; if(TRV) aux1=1; // Para decremento de "um em um" } if(DEC) aux1=0; valor = i; // Transferindo i para a variável valor // Separando o valor em dígitos dezena = valor / 10; // Separa inteiro da dezena unidade = valor % 10; // Recupera resto da dezena // que é a unidade DISPLAY = table[dezena]; // Transfere para o display (PORT D) DISP1 = 0; // DISP1 desligado DISP2 = 1; // DISP2 ligado Delay1KTCYx(tempo); // Tempo que o display fica aceso DISP2 = 0; // DISP2 desligado DISPLAY = table2[unidade]; // Transfere para o display (PORT D) DISP1 = 1; // DISP1 ligado DISP2 = 0; // DISP2 desligado Delay1KTCYx(tempo); // Tempo que o display fica aceso DISP1 = 0; // DISP1 desligado } }
  8. Bom dia , estou tendo problemas ao implementar um código par ao Pic12F683 onde tenho que pegra a leitura de um sensor em milivolts e fazer acionar uma porta quando esta leitura estiver entre 31mV e 37mV , eu iria usar um amop em histerese , mas como tenho problema de espaço resolvi usar o microcontrolador q tenho aqui, no caso de uma tensão baixa eu teria q amplificá-la antes ou leria diretamente do sensor ? Obs.: Estou usando a linguagem c e o CCS. Segue o código abaixo: #include <AlarmeAnalisadorOxigenio.h> void main() { setup_adc_ports(sAN0 |VSS_VDD); setup_adc(ADC_CLOCK_INTERNAL); float analogico ; while(TRUE) { SET_ADC_CHANNEL(0) ; delay_us(100); analogico = READ_ADC (); delay_ms(10); if (analogico >=7 && analogico <= 100) { output_low(pin_a5); output_low(pin_a4); output_low(pin_a2); output_low(pin_a1); } else { output_high(pin_a4); output_low(pin_a5); output_low(pin_a2); output_low(pin_a1); } } }
  9. ola boa noite, sou novato no site , e estou comecando a aprender sobre programacao pic. e estou precisando de fazer um circuito que um botao ao pressionar acenda o led, e ao pressionar novamente apague o mesmo, ate ai consegui, so que no projeto contem 5 botões e 5 leds um para cada. e nao consegui fazer funcionar, se alguem puder me ajudar agradeco muito. pic 16f628a. 4mhz char variavel = 0; //DECLARA UMA VARIÁVEL DE VALOR 0 void main() { TRISB.B0 = 1;//DEFINE O PINO RB0 COMO ENTRADA TRISB.B1 = 0;//DEFINE O PINO RB1 COMO SAÍDA PORTB.B1 = 0;//DEFINIMOS UM VALOR INICIAL PARA A SAÍDA RB1 0 while(1)// LOOP INFINITO OU LAÇO INFINITO { if (PORTB.B0 == 1)// SE O BOTÃO FOI PRECIONADO { variavel = 1; //INDICA QUE O BOTÃO FOI PRECIONADO } if( PORTB.B0 == 0 && variavel == 1)//SOLTEI O BOTÃO { PORTB.B1 =~ PORTB.B1;//INVERTE O ESTADO DA SAÍDA variavel = 0;//VARIAVEL RETORNA AO VALOR 0 } } }
  10. fiz um projeto bem simples: pic 12f675 fonte tipo celular 1 LED 1 botão pushbutton e resistores de pudown 1 capacitor 100nf Regulador de tensão comum 7805 ========= a cada pressionada do botão o led muda de estado. (isso funciona perfeitamente). no botão tem o resistor de pulldown e ao pressionar manda 5v para o pino correspondente. O pic está com o capacitor de 100nf entre seus terminais de alimentação. A energia vem da fonte tipo de celular e passa pelo regulador de 5v. O problema é que percebi que quando aguem acende uma luz na casa o circuito muda o estado do LED. parece alguma interferência via rede... Alguma ideia do que pode ser? Não á outros capacitores no circuito. tenho que adicionar algum? de quanto? Obrigado.
  11. Olá pessoal, tudo bem? Sou novo aqui no fórum e estou passando por um grande problema. Pra ser sincero, eu nunca mexi com nada no ramo, só fiz poucas práticas bem simples com Arduíno e nada mais, preciso de um auxilio para encontrar um microprocessador mais adequado, segue abaixo o problema. ' Trata-se de um circuito que comanda uma catraca eletrônica, o comando é a partir de um PIC 18F4620. A comunicação é via rede e tem algumas entradas, tipo: - Biometria; - Leitor de código de barras e QR code; - Sensor de giro; - Teclado. ' As saídas são: - Display LCD; - 3 relés. ' Essa é a configuração atual com velocidade em 9600bps ' Preciso fazer alguns upgrades, preciso de um microprocessador com mais velocidade e essas outras funcionalidades: - Duas portas USB; - Dois sensores de proximidade; - Mais um sensor biométrico. - Se possível uma parte na placa com I/O's disponíveis numa eventual emergência. ' Pelo que pesquisei até então e pelo que conversei com profissionais do ramo, todos me indicaram utilizar um Raspberry. Saberiam me dizer qual o microprocessador mais indicado? Desde já, agradeço pelo apoio!
  12. Bom dia, estou embarcando em eletrônica agora, e estou com dificuldade para fazer a programação da comunicação do módulo hc-05 com o pic18f. Essa programação seria para que através de um app pudesse acionar os eixos x,y e z e fazer os motores avançarem e recuarem.
  13. Bom dia Galera Estou editando um bootloader do Tiny Bootloader para meu projeto. Ele usa um pic18F4620 com clock interno e PLL ligado que dá uma velocidade de 8 x 4 = 32Mhz. A comunicacção deve ser de 115200 bps. O problema é que quando eu coloco a instrução para ele ligar o PLL ocorre erro de CRC durante a gravação do firmware. Vou postar meu projeto Se alguém conseguir tirar esse erro de CRC ou tiver um código pronto eu agradeço. Obrg. Nera 01 - Bootloader PIC18F4620.rar
  14. Sou iniciante no fórum, caso haja algum erro, me perdoem, irei arrumar. Pessoal, me deparei com a seguinte questão, necessito usar um sensor de temperatura infravermelho junto de um PIC18F4685. Através do arduino (com bibliotecas) encontrei diversos exemplos, tanto com I2C ou usando a biblioteca do sensor. O problema é que preciso "passar" esse código do arduino para o PIC18F4586, porém ainda sou iniciante e estou com alguns problemas para entender como funciona etc. O código usado em I2C no arduino foi o seguinte: /** * Infrared Thermometer MLX90614 * by Jaime Patarroyo * based on 'Is it hot? Arduino + MLX90614 IR Thermometer' by bildr.blog * * Returns the temperature in Celcius and Fahrenheit from a MLX90614 * Infrared Thermometer, connected to the TWI/I²C pins (on the Wiring v1 * board 0 (SCL) and 1 (SDA) and on Wiring S board 8 (SCL) and 9 (SDA)). */ #include <i2cmaster.h> int deviceAddress = 0x5A<<1; // From MLX906114 datasheet's, 0x5A is // the default address for I²C communication. // Shift the address 1 bit right, the // I²Cmaster library only needs the 7 most // significant bits for the address. float celcius = 0; // Variable to hold temperature in Celcius. float fahrenheit = 0; // Variable to hold temperature in Fahrenheit. void setup() { Serial.begin(9600); // Start serial communication at 9600bps. i2c_init(); // Initialise the i2c bus. PORTC = (1 << PORTC4) | (1 << PORTC5); // Enable pullups. } void loop() { celcius = temperatureCelcius(deviceAddress); // Read's data from MLX90614 // with the given address, // transform's it into // temperature in Celcius and // store's it in the Celcius // variable. fahrenheit = (celcius*1.8) + 32; // Converts celcius into Fahrenheit // and stores in Fahrenheit variable. Serial.print("Celcius: "); // Prints both readings in the Serial Serial.println(celcius); // port. Serial.print("Fahrenheit: "); Serial.println(fahrenheit); delay(1000); // Wait a second before printing again. } float temperatureCelcius(int address) { int dev = address; int data_low = 0; int data_high = 0; int pec = 0; // Write i2c_start_wait(dev+I2C_WRITE); i2c_write(0x07); // Read i2c_rep_start(dev+I2C_READ); data_low = i2c_readAck(); // Read 1 byte and then send ack. data_high = i2c_readAck(); // Read 1 byte and then send ack. pec = i2c_readNak(); i2c_stop(); // This converts high and low bytes together and processes temperature, // MSB is a error bit and is ignored for temps. double tempFactor = 0.02; // 0.02 degrees per LSB (measurement // resolution of the MLX90614). double tempData = 0x0000; // Zero out the data int frac; // Data past the decimal point // This masks off the error bit of the high byte, then moves it left // 8 bits and adds the low byte. tempData = (double)(((data_high & 0x007F) << 8) + data_low); tempData = (tempData * tempFactor)-0.01; float celcius = tempData - 273.15; // Returns temperature un Celcius. return celcius; } Acredito que a partir dessa base consigo com alguma ajuda a programar para o PIC. Agradeço se alguém puder me dar umas dicas e quais o detalhes preciso me atentar. O sensor utilizado é o MLX90614 (Datasheet em PDF). No datasheet tem alguns detalhes para a comunicação como endereçamento e tal, mas como usar com o I2C? Acabei não compreendendo da melhor forma o datasheet. Agradeço desde já quem puder me dar uma luz, e em caso de alguma infração, assim que avisado eu arrumo (li as regras, mas mesmo assim pode acontecer). MLX90614_rev001.pdf
  15. Boa tarde, Estou desenvolvendo o meu primeiro utilizando um microcontrolador PIC16F628A. Quero fazer um sistema básico de alarme. Ouvi falar, também pesquisei e vi que várias pessoas dizem que não se pode confiar (muito) no oscilador interno dos PIC, porém a minha necessidade seria apenas para detectar o sinal de sensores de presença, contar alguns segundos e disparar a sirene por alguns minutos. Como não dependo de muita precisão na contagem do tempo, posso utilizar o oscilador interno e abrir mão de utilizar um cristal externo de clock? Corro o risco de interferências externas "crasharem" o meu programa e o PIC parar de rodar o programa corretamente? Desde já agradeço quem puder me ajudar.
  16. Prezados Estou começando a trabalhar com motor de passo. Elaborei o código em assembly. Mas o motor só gira para o sentido anti-horário, mesmo invertendo a sequencia das bobinas. Estou disponibilizando o código e o esquema elétrico. Deste já agradeço a ajuda. <;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LIST P=16F877 ;Definição do PIC #INCLUDE <P16F877.INC> ;Variaveis das definições do PIC __CONFIG _CP_OFF & _DEBUG_ON & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _CPD_OFF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; VARIAVEL_DO_TEMPORIZADOR SET 0x20 T1 equ 0x21 ;variável para temporizador T2 equ 0x22 ;variável para temporizador T3 equ 0x23 ;variável para temporizador T4 equ 0x24 ;variável para temporizador AUX equ 0x25 ;variável para dado recebido RESET ORG 0X000 ;Area de Reset do PIC NOP ;Requerido para o ICD configuração banksel TRISC ;Muda para o BANK 1 bcf TRISC,2 ;Configura apenas a PORTC1 como saida ;FIO LARANJA bcf TRISC,3 ;Configura apenas a PORTC3 como saida ;FIO ROSA bcf TRISC,4 ;Configura apenas a PORTC4 como saida ;FIO MARROM bcf TRISC,1 ;Configura apenas a PORTC5 como saída ;FIO AMARELO movlw b'00000111' ;Configura as portas A/D movwf ADCON1 banksel PORTC ;Volta para o BANK 0 INICIO ;PRIMEIRO PASSO bsf PORTC,1 ;FIO AMARELO call TEMPORIZADOR bcf PORTC,1 ;FIO AMARELO call TEMPORIZADOR ;call _1000ms ;aguarda 1 segundo CICLO ;SEGUNDO PASSO bsf PORTC,2 ;FIO LARANJA call TEMPORIZADOR bcf PORTC,2 ;FIO LARANJA call TEMPORIZADOR ;call _1000ms ;aguarda 1 segundo ;TERCEIRO PASSO bsf PORTC,4 ;FIO MARROM call TEMPORIZADOR bcf PORTC,4 ;FIO MARROM call TEMPORIZADOR ;call _1000ms ;aguarda 1 segundo ;QUARTO PASSO bsf PORTC,3 ;FIO ROSA call TEMPORIZADOR bcf PORTC,3 ;FIO ROSA call TEMPORIZADOR goto INICIO TEMPORIZADOR movwf VARIAVEL_DO_TEMPORIZADOR TEMPORIZADOR_0 decfsz VARIAVEL_DO_TEMPORIZADOR,F goto TEMPORIZADOR_1 return TEMPORIZADOR_1 addlw .1 btfss STATUS,Z goto TEMPORIZADOR_1 goto TEMPORIZADOR_0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end>
  17. Boa noite a todos, preciso de uma ajuda para criar um programa básico no LDMicro, em linguagem ladder para o acionamento de um pequeno motor de passo, tenho conhecimento nessa linguagem, porém essa rotina não sei como fazer. Basicamente o motor será acionado por um botão funcionará até o acionamento de um sensor, para por um minuto e funciona até o acionamento do sensor. Alguém pode me dar uma orientação ? Desde já agradeço.
  18. Então mu povo, estou precisando gravar um dado na EEPROM do 4550, mas esse dado é um numero flutuante, e to querendo saber como eu gravo ele na eeprom, ja que ela tem a limitação de 1 byte por endereço e estou querendo gravar 4 byts, que no caso é a leitura de uma bateria, tipo 14.89 e salva ele na eeprom adicionado 26 minutos depois Ou se não, eu to querendo fazer o seguinte, tenho lá minha leitura sendo mostrada no lcd e pá, só que eu quero poder ajusta ela, tipo, caso pegar um multímetro e ver que a leitura está errada, em vez de eu ter que po um trimpot pra ajusta ela até bate com a do multímetro, eu simplesmente vou em um nemeu que ja criei e ajusto a leitura por lá. Eu estou fazendo assim: .... q1 = (media/8); p1 =(q1*5)/1023.0; q2 = p1*7.6; q2 = q2+Ajust; ..... //BATERIA CONFIGURAÇÕES// else if(BatConfig){ lm = 0x01; Ajust+=00.01; } .... no caso eu tenho que colocar esses zeros, porque se não ele muda a casa dos Milhares, e eu quero só mudar a casa das Unidades, Eu poderia salva só o valor de Ajust (1,2,3,4,5...)Sem os zeros(00.0(Ajust)) e soma ele na casa das unidades de Q2, mas não sei como fazer isso também. E preciso que Ajust seja salvo na EEPROM pelo simples fato de que, se o sistema desligar por algum motivo ele manter o ajuste que foi feito.
  19. Pessoal, estou procurando alguém para desenvolver um programa pequeno para PIC. O PIC deverá fazer o seguinte: Quando uma chave on-off estiver na posição off deverá acender o led1 e um servo motor deverá se movimentar para o angulo 0º, devendo ficar lá. Quando a chave estiver na posição on deverá acender o led2 e o servo motor deverá se movimentar para o angulo 45º, devendo ficar lá. Alguém pode me ajudar?
  20. Bom dia Preciso fazer um relógio programável usando o PIC16F877A Funcionamento padrão do relógio: Por padrão deve aparecer na primeira linha do display LCD a palavra “Relógio” e na segunda linha o horário. O formato do horário é: HH:MM:SS, onde HH indica hora com dois dígitos, MM minutos com dois dígitos e SS segundo com dois dígitos. A hora deverá variar de 00 a 23, os minutos de 00 a 59 e segundos de 00 a 59. Modo de programação do relógio: Para entrar no modo de programação deve-se pressionar o botão F (serigrafia do botão na placa) (botão inferior direito do teclado 4x4). Assim que entrar neste modo a primeira linha do display LCD mudará para a palavra “Programação”. Na segunda linha aparecerá o horário no mesmo formato que o padrão: HH:MM:SS. Porém será possível mudar os valores em cada uma das posições do horário. Estas posições são descritas como: 1 - Dezena hora; 2 - Unidade hora; 3 - Dezena minuto; 4 - Unidade minuto; 5 - Dezena segundo; 6 - Unidade segundo; O cursor começará na posição 1 e poderá ser movimentada até a posição 6. Para avançar a programação deve-se pressionar o botão B do teclado, caso deseje voltar para o item anterior a ser programado deve-se pressionar o botão A. Não é possível voltar além do item 1 e também não é possível avançar além do item 6. Se pressionar algum número válido do teclado 4x4, haverá a troca do valor da respectiva posição pelo número pressionado. Para finalizar o modo de configuração, deve-se pressionar o botão F. Voltando para o modo padrão. A cada hora: No início de cada hora (mudança de 59 para 00) o buzzer deve fazer um som curto (de até um segundo), indicando que passou a hora. PORÉM EU TENTEI MONTAR OS COMANDOS NO MPLAB X IDE v3.65 ESTÁ APARECENDO SEGUINTE ERRO (IMAGEM ANEXO), GOSTARIA DE SABER OS COMANDOS CORRETOS E PORQUE APARECE ESTE ERRO ? GRATO
  21. Bom dia... Retirei um PIC12F675 de um aparelho velho e resolvi ler o conteúdo dele através do PICKIT3. Imaginei que não poderia ler o conteúdo por ser protegido... mas tudo bem eu ia reutilizar o componente mesmo... mas o componente não é reconhecido pelo pickit... (outros de mesmo modelo funcionam normalmente)... Verifiquei com o multímetro e parece ter um curto entre os pinos 4 e 8... (GP4/MCLR/VPP e VSS) Será que é algum tipo de proteção ou o componente está queimado mesmo? obrigado.
  22. Olá! Sou novo no fórum. Sou o César e sou português, vivo no norte de Portugal (em Ponte de Lima). Nunca participei em nenhum fórum – perdoe-se, portanto, a minha falta de experiência. Vim a este fórum à procura de respostas para uma questão complexa e agradeço a bondade de quem me esclareça. Eis o meu problema: Tenho necessidade de usar um interface para comandar dois aparelhos. Há uns anos montei um interface que funciona pela porta paralela (LPT) e o software foi criado por mim em Visual Basic 6 (VB6) – funciona perfeitamente. Contudo, como toda a gente sabe, a porta paralela já não se usa e a porta série está quase extinta. Por isso, há dois anos decidi “migrar” para a porta USB – ou, seja, montar um interface com conexão USB. Depois de pesquisar, decidi usar o PIC18F4550. Mas, o que parecia uma tarefa simples, tornou-se uma aventura (melhor, um pesadelo). 1 – Montei uma placa de desenvolvimento bastante simples, para estudar o projecto. 2 – Baixei da Internet um bootloader (tive a preocupação de escolher um preparado para 20 MHZ) e o driver para Windows. 3 – Gravei o bootlader com o gravador JDM (usei o IcProg) 4 – Coloquei o PIC na placa de desenvolvimento e liguei à porta USB. Verifiquei que o bootloader funcionava (os leds piscavam na sequência indicada…) 5 – O PC detectava um periférico desconhecido. Ao tentar actualizar o controlador (driver) começaram os problemas. O PC não aceita nenhum driver e acaba por instalar um driver genérico de “dispositivo de introdução de texto”. 6 – Editei o ficheiro “inf” (dos drivers), confirmando o PID e ID do periférico (neste caso, do PIC); segui os procedimentos para instalar drivers “sem assinatura digital” e… não funcionava. 7 – Desisti. 8 – Recentemente – em Outubro, retomei o projecto. Segui todos os procedimentos anteriores… não consegui que o PC reconhecesse a minha placa de desenvolvimento PIC18F4550, a não ser como um “dispositivo de introdução de texto”. 9 - Então iniciei uma maratona: verifiquei toda a montagem que havia feito – solduras, suportes, continuidades, componentes… experimentei com consensadores de 22pf, 20pf, 19pf e 15pf … tudo igual. Experimentei com alimentação externa (sem usar os 5V USB), com alimentador, com bateria… tudo igual. Descarreguei da Internet mais de uma dezena de versão do Bootloader (acho que não há mais disponíveis), todos os drivers que encontrei… não consegui pôr a funcionar. Experimentei os diferentes bootloader e drivers em diferentes sistemas operativos: XP, win7 – 32bits; Win7 – 64 bits, Win8.1 e Win10 (não experimentei Linux)… nada. Nunca consegui estabelecer uma conexão entre o PIC e o PC, nenhum programa consegue detectar, ler ou programar o PIC, via bootloader. 10 – Depois de 2 meses de trabalho incessante, desisti definitivamente. Assumo que, a facilidade com que se vê, nos vídeos da Internet, a conexão do PIC com o PC via USB, é mentira, é fake! Apesar disso, inscrevi-me neste fórum a tentar encontrar uma resposta a estas perguntas (se alguém fizer o favor de me explicar): O que é que eu estava a fazer de errado? Por que razão não consegui instalar os divers para conexão com o PIC, como vi em dezenas de vídeos da Internet, nomeadamente do youtube? O que está no youtube é tudo fake ou é o só o meu que não funciona? Nota: enverei por um ESP8266 e tenho o projecto praticamente acabado. Mas o PIC18F4550 ficou-me “atravessado na garganta!”.
  23. Gostaria de converter esse código de uma tecnologia retrogada que é o Arduíno kkkkk kkkkk para a linguagem C da IDE PCW CCS C Compiler kkkkk Controlando um LED RGB com o PIC16F628A Autor: Tiago Henrique */ Controlando um LED RGB com o PIC16F628A Autor: Tiago Henrique */ sbit Led_R at PORTB.B5; sbit Led_G at PORTB.B6; sbit Led_B at PORTB.B7; typedef struct { char R; char G; char B; }Colors; Colors RGB = { 127, 127, 250 }; char i = 0; void Interrupt() { if ( TMR1IF_bit ) { if( i <= RGB.R ) LED_R = 1; else LED_R = 0; if( i <= RGB.G ) LED_G = 1; else LED_G = 0; if( i <= RGB.B ) LED_B = 1; else LED_B = 0; i++; TMR1IF_bit = 0; TMR1H = 0xff; TMR1L = 0x37; } } void InitTimer1() { T1CON = 0x01; TMR1IF_bit = 0; TMR1H = 0xff; TMR1L = 0x37; TMR1IE_bit = 1; INTCON = 0xC0; } char flag = 0; void main() { InitTimer1(); TRISB = 0x0F; while(1) { if( PORTB.B0 ) flag.B0 = 1; if( PORTB.B1 ) flag.B1 = 1; if( PORTB.B2 ) flag.B2 = 1; if( !PORTB.B0 && flag.B0 ) { RGB.R += 2; flag.B0 = 0; } if( !PORTB.B1 && flag.B1 ) { RGB.G += 2; flag.B1 = 0; } if( !PORTB.B2 && flag.B2 ) { RGB.B += 2; flag.B2 = 0; } } }
  24. Olá a todos. Então, resolvi uma coisa e fui passa pra outra, e isso mesmo, treta. É o seguinte, eu consigo enviar dados pela UART do PIC24FJ256GB106, mas não consigo enviar nada para ele, não vai, no proteus dar a seguinte mensagem: [PIC24 UART1] A leitura do RXREG quando o FIFO está vazio retorna o valor anterior. [U3]. o codigo que estou usando é esse ja que o da biblioteca do Mikroc nessa família 24f é a mesma coisa q nada: void uart_setup(void) { /*Enable UART interrupts*/ IEC0bits.U1RXIE = 1; // interrupt on reception allowed IEC0bits.U1TXIE = 0; // no interrupt on transmition IEC4bits.U1ERIE = 1; // interrupts on errors allowed IPC2bits.U1RXIP = 5; // interrupt level of reception IPC16bits.U1ERIP = 6; // interrupt level on errors U1STAbits.URXISEL = 0; // interrupt when any character is received /* Initialize UART1 */ U1BRG = 25; //Baud rate set to 9600 U1MODEbits.STSEL = 0; // 1 stop bit U1MODEbits.PDSEL = 0; //8 bit data, no parity U1MODEbits.BRGH = 0; //Standard speed mode U1MODEbits.RXINV = 0; //UxRX idle state is '1' U1MODEbits.ABAUD = 0; //Auto-Baud disabled U1MODEbits.LPBACK = 0; //Loopback disabled U1MODEbits.WAKE = 1; //Wake up on start bit detect U1MODEbits.UEN = 0; //UTx and URx enabled U1MODEbits.IREN = 0; //IrDA disabled U1STAbits.ADDEN = 0; //Adress detec mode disabled SRXMPT_bit = 1; IC1CON1 = 0x1C00; //U1RX_Clear_Intr_Status_Bit; //clear RX interrupt falg U1MODEbits.UARTEN = 1; //UART enable } long t; void main() { //---------------- PORT's ----------------// TRISB = 0xFF; PORTB = 0x0000; TRISC = 0x00; PORTC = 0x00; TRISD = 0x0000; PORTD = 0x0000; TRISE = 0x00; PORTE = 0x00; TRISF = 0xFFFF; PORTF = 0xFFFF; TRISG = 0x00; PORTG = 0x00; // BLUETOOTH uart_setup(); RPOR5bits.RP11R=3; //TX RPOR5bits.RP10R=4; //RX Delay_ms(100); while(1) { t++; U1TXREG = t; // ta bagunçado e se sentindo porque é só pra fazer uns teste pra ver se ta indo ou não. tt = U1RXREG; switch(tt) { case '1': led = 1;break; case '2': led = 0;break; case '3': led1 = 1;break; case '4': led1 = 0;break; }//END Bluetooth_RD. led2 = 1; Delay_ms(100); led2 = 0; Delay_ms(100); } Alguém pode me ajudar a configurar a UART dele? A ideia principal é apenas receber dados, e trata eles em um Switch, Nem preciso que ele envie dados, só cloquei pra enviar por motivos de testes. Muito obrigado pela atenção de todos.
  25. Bom dia pessoal, já estou trabalhando com os PICs faz tempinho, mas ainda na parte digital... gostaria de trabalham com a parte analógica... (para os que possuem esta função). Desconfio que esta parte funciona da seguinte maneira: Se eu inserir uma tensão no pino de entrada ele poderá distinguir por código se eu inseri 3 ou 4 ou 5 volts... ele saberá a tensão que eu inseri... Da mesma forma se eu mandar sair 3v em algum pino de saida ele deverá mandar 3v e se eu mandar que saia 5v então ele deve mandar 5v... e assim por diante... é mais ou menos isso? obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!