Pic-man

Pic-man is a development board powered by a 16 bit PIC microprocessor.

Features

  • 16 MIPS, 32 Mhz, 8K RAM
  • 14 IO pins
  • 6 Analog IO pins
  • 8 IO pins that can be used at 3V or 5V logic
  • OLED/LED Screen Output with Library
  • Control up to 4 DC motors or 2 stepper motors
  • PicKit 3 connector
  • Has libraries for various electronic devices

How It's Built

1. Schematics

Step 2

2. Routing

Step 3

3. Printing

Step 3

4. Soldering

Step 4

Libraries

Github link

All the libraries can be found on Github. I use MPLabX and the PicKit3 programmer.

OLED/LED Screen

This library can be used to power a 2 row OLED screen. The board comes with a 5x2 connector that can hook up to common screens bought from Adafruit or Sparkfun.

Functions

  • void init_oled ( void )

    - Sets IO pins and runs through screen start routine.
  • void set_cursor ( int col, int row ) - Set the cursor to the specified row and column.

  • void print ( char* text )

    - Prints a string to the screen.
  • void clear ( void ) - Clears the screen.

  • void home ( void ) - Set the cursor to the first column on the first row.

Stepper Motors

This library can be used to control stepper motors in full or half stepping modes.

Functions

  • void init_stepper (void )

  • void move_deg ( float degrees, float degree )

  • void set_rpm ( float rpm )

  • void stop (void )

Rotary Encoder

This library can be used to handle input from a stadard rotary encoder with a button. It has 3 digital inputs, 2 for the rotary encoder and 1 for the button.

Functions

  • void init_rot ( void )

  • unsigned char get_rot_value ( void )

  • unsigned char get_rot_but_value ( void )

Analog Input

This library can be used to handle analog inputs like a potentiometer or something.

Functions

  • void init_ad ( void )

  • int get_ad_value ( void )

  • unsigned char get_rot_but_value ( void )

Pulse Width Modulation

This library uses the output capture feature of the PIC and can be used to output a PWM signal on a IO pin.

Functions

  • void update_pwm ( int duty_index )