Manual
do
Maker
.
com
Essa é uma introdução ao PIC, dessa vez um dos menores em recursos e pinos. O PIC12F675 é um PIC de 8 pinos, dos quais 6 podem ser utilizados para I/O. Ele é um MCU de 8 bits e possui 1 conversor A/D de 4 canais. Ele pode ser ligado a um cristal externo de até 20Mhz, mas ele possui um oscilador interno de 4Mhz e para projetos muito simples que não necessitem velocidade pode ser o ideal.
Ele não possui módulo CCP, portanto não possui portas PWM, o que seria excelente para controlar um LED RGB de 4 pernas. De qualquer forma, há um LED RGB de 2 pernas cujo as cores não podem ser controladas e alternam por intervalos de tempo.
Apesar do hardware minimalístico, existem muitas possibilidades para ele. O primeiro exemplo será (obviamente):
O esquema é o seguinte:
O desenho está em uma protoboard full porque a partir desse modelo vamos expandir um pouco o projeto.
Programar para PIC como escrevi em outro post, não é tão simples quanto programar em Arduino.
Para poder imaginar aplicações para o modelo de PIC escolhido, é necessário conhecer seus recursos. Já nesse pequeno hardware, pode ser necessário conhecer também alguns truques, como multiplexar. Isso será visto em outro post.
Como sempre, utilizando a IDE MikroC para desenvolver, descreverei previamente os recursos dos quais faremos uso no exemplo de código adiante.
O TRISIO é o registrador que configura os pinos como entrada ou saída. Com 0 os pinos ficam em OUTPUT, com 1 os pinos são configurados como INPUT. Claro, os pinos podem ser configurados individualmente em bits, hexa ou deslocamento de bits. Darei os 3 exemplos nesse post mais adiante.
O GPIO configura os pinos como HIGH (1) ou LOW (0). Em grandes PICs, GPIO é chamado PORT. Os bits podem ser setados de duas maneiras; GPIO.Bx para setar o bit x ou ajustando o valor do bit correspondente através dos modos explicados mais adiante.
Para deixar claro; quando o PINO estiver em OUTPUT e HIGH, o LED se acenderá. Muitos recomendam utilizar o pino do PIC para fazer aterramento, então o pino deveria ser configurado para INPUT e LOW e o LED seria aterrado nesse pino.
Existem 4 modos de configurar um pino, utilizando o pino 5 como exemplo:
//Seta o bit do pino 5 para HIGH diretamente.
GPIO.B2 = 1;
//Em hexa, ajustando o valor do bit correspondente
GPIO = 0x04;
//Em binário
GPIO = 0b00000100;
//Deslocamento de bits
GPIO = (1<<2);
Particularmente, deslocar os bits me parece o mais prático dos modos depois de apontar o bit diretamente na variável do pino. Para melhor entendimento, o que esse deslocamento faz é pegar o 1 e deslocá-lo para a esquerda 2 vezes. Se fosse (1<<0), então o primeiro dos 8 bits receberia o valor 1, ficando 00000001. Deslocando 2 para a esquerda ficará 00000100.
Nesse datasheet41190g.pdf pode-se ver que o pino 5 corresponde à porta 2 (GP2), utilizado no exemplo desse post.
O código de funcionamento de um blink com o LED é o seguinte:
void doPorts(void){
TRISIO = 0; //OUTPUT
}
void main(){
doPorts();
while(1){
GPIO = 0x04; //0b0000100; //(1<<2);
Delay_ms(200);
GPIO = 0;
Delay_ms(200);
O regulador de tensão quebrou um bom galho também, porque peguei uma fonte de 9v para alimentar o PIC com 5v, desse modo:
No esquema lá em cima você pode ver melhor a forma de conectar. Basicamente, olhando o regulador de frente:
1 - Entrada (até 19V nesse modelo)
2 - Terra (comum para o circuito e fonte)
3 - Saida 5v.
Farei outros posts com o P12F675 para mostrar um pouco mais do que se pode fazer com um hardware pequeno como esse.
Esse post não merece um video, não é mesmo? :-)
Sugiro também que veja esse artigo sobre controle de LEDs utilizando um shift register 74HC595.
Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.