Ir ao conteúdo
  • Cadastre-se

Programação de Catraca Eletrônica


birimba

Posts recomendados

Olá pessoal, tenho que fazer um projeto para feira de ciências com Pic se possível, pois é o diferencial do meu período. Então procurei na internet e achei um sobre catraca eletrônica. As peças e catraca não são o problema, mas sim a programação do pic, que não estou conseguindo montar. O projeto é fácil de encontrar na net mas estou postando o link para lhes poupar tempo. Se alguém puder me resolver isso iria me ajudar muito já que a feira está quase chegando.

http://www.slideshare.net/GabrielXavier8/catraca-eletrnica

Link para o comentário
Compartilhar em outros sites

Amigo, poste uma base do esquema do seu projeto; dê mais detalhes. Como será o controle? Terá uma catraca física? RFid? Leitor de barras?

Estou aqui para te ajudar no que puder. Já tem ideia do compilador que queres programar? Se você não tem muito conhecimento, sugiro que dê uma pesquisada no MikroC da Mikroeletronika. Crie uma ideia, um esboço do código e assim te ajudarei.

Link para o comentário
Compartilhar em outros sites

Não tenho muito conhecimento de programação mesmo, é um trabalho que eu tenho que dar um jeito de aprender. A ideia é fazer um controle de alunos, como as de academia, os alunos terão um passe(cartão com código de barras), o leitor manda o código do cartão para o computador, que já vai conter todas as informações sobre o mesmo registradas, e então liberará a catraca. Tenho usado o mikroBasic e como já mencionado não tenho muito conhecimento nessa área, todas as informações de que disponho no momento são as que se encontram nesta apostila.

Link para o comentário
Compartilhar em outros sites

Caso o computador disponha de uma porta paralela acredito ser possível montar a catraca sem o uso de microcontroladores. Você pode usar um RFid com conexão USB.

Se você quiser a catraca USB a programação não vai ser simples.

Posso ajudar você em C ou assembly para PIC, AVR e 8051.

Link para o comentário
Compartilhar em outros sites

O circuito está na página 53 da apostila já postada. O desenvolvimento do projeto começa no capítulo3, página 26. Especificações de software para o microcontrolador e para o PC, com fluxogramas explicando o funcionamento do programa, estão mostrados a partir desta página. O fluxograma do software para o microcontrolador está na página 55.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Por enquanto acho que ela ficaria assim:

program Catraca

RCSTA=$90 'Habilita recepção USART

TXSTA=$24 'Seta transmissão USART

SPBRG=129 'Taxa de transmição 9600 baunds

TRISD=%00000000 'Configura todos os pinos da PORTD como saída

main:

Goto START

'Rotina de interrupção

Asm 'inicia um programa em assembly

Interrupção USART 'endereço de interrupção

movwf wsave 'salva registrador W

swapf STATUS,W 'alterna nibbles de STATUS e armazena em W

clrf STATUS 'limpa STATUS

movwf ssave 'salva W em ssave

movf PCLATH,W 'move PCLATH para W

movwf psave 'salva PCLATH

movf FSR,W

movwf fsave 'salva FSR

btfsc PIR1.0 'se houve interrupção por timer

goto TEMPO 'desvia para TEMPO

INT_USART: 'se não, interrupção USART

End Asm 'fim de instrução assembly

Asm

incf_index_in,F 'incrementa index_in

movf_index_in,W 'salva em W

sublw_buffer_size-1 'verifica se index_in é igual ou maior que o tamanho do vetor

btfss STATUS,C

clrf_index_in 'se for, zera index_in

movlw Low_buffer 'pega o endereço da primeira posição do vetor buffer[0]

addwf_index_in,W 'soma o index_in a este indereço

movwf FSR 'e o salva no registro FSR

movf RCREG,W 'armazena em W o caracter recebido pela serial

movwf INDF 'armazena na posição de memória apontada por FSR

End Asm 'fim de instrução assembly

INTCON=0 'desabilita interrupções

index_out=index_out+1 'incrementa index_out

IF(index_out=>buffer_size)Then

index_in=0

index_out=0 'limita tamanho do índice

End If

vetor[index_out-1]=buffer[index_out] 'salva no vetor

'auxiliar o caracter

INTCON=%11000000 'liga Interrupção

TMR1L=0 'zera registrador do Timer1/baixo

TMR1H=0 'zera registrado do Timer1/alto

PIE1.0=1 'flag de interrupção do Timer1

goto SAIDA

Asm

TEMPO:

movlw 0

movwf TMR1L

movlw 0

movwf TMR1H

bcf PIR1.0

End Asm

Asm

SAIDA:

movf fsave,W 'recupera valor de FSR

movwf FSR 'carrega em FSR

movf psave,W 'recupera valor de PCLATH

movwF PCLATH 'carrega em PCLATH

swapf ssave,W 'troca nibbles de ssave

movwf STATUS 'recupera valor de STATUS

swapf wsave,F 'troca nibbles de wsave

swapf wsave,W 'troca novamente e salva em W(restaura valor de W)

retfie 'sai da interrupção

End Asm

START:

Rotina principal:

index_in=0 'zera índice para vetor do código cartão

index_out=0 'zera índice auxiliar

INTCON=%11000000 'habilita interrupções

PIE1.5=1 'liga interrupção USART

GOSUB ZERAR 'zera vetor código do cartão

HIGH TRAVA 'desliga solenóide da catraca

HIGH LED 'apaga LED

TEMPO_LED=0 'inicializa contador de tempo led/solenóide desligados

TMR1L=0 'zera registrador do Timer1/baixo

TMR1H=0 'zera registrado do Timer1/alto

TICON=%00110001 'habilita interrupção Timer1

LCDout $fe,1 'limpa Display

low PIR1.0 'zera flag de interrupção do Timer1

DISPLAY:

B2=ACK 'carrega B2 com ACK(6)

PASSO_1:

........

SERIN2 PORTC.1\PORTC.0,84,500,PASSO_1,[b0,B1,B3,CRC16A_H,CRC16A_L] 'aguarda a chegada de dados pela serial

end.

Por enquanto estou entendendo +/-, sei que nesse pontilhado do passo1 tenho que colocar um endereço de para ativar o timeout caso não haja a chegada de dados, mas não entendo que enderço é esse

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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