Sunday, July 10, 2016

DIY Seven Segment Breakout Board project

Doing Micro controller project is to expensive. A simple LED breakout board can cost a lot for hobbyist or for student if it is ordered online but if you have lots of junk PCB board with LED you can make your own LED breakout board. A single LED is easy to build, what if , if  you want to build your own  seven segment display breakout board, by the way Seven segment display is made of LED's,  the solution is dig your junk , find  scrap  that is suited to your project.  Here I found the old Communication Port, I    pull out the pin headers, to be used as header pin for seven segment display breakout board.  The seven segment is already in my box, I know I can use it in the future's project so I kept it before.  The procedure! you can see it in the picture below.   Later I'll update this for circuit connection.     











Tuesday, July 5, 2016

Arduino code is used to control the PPI 8255



      The code below is written in arduino IDE. The basic purpose of the program is used to control the Programmable Peripheral Interface 8255.

     Arduino nano is used to control the Control Register of PPI 8255 to select the 8255 PORT's.  I choose A0..A5 analog pin and D8..D9 digital pin of arduino nano to make it as data bus connected to D0..D7  data pin of PPI 8255 and then the D2 to D6 of arduino nano pins are used to control the Control pin of PPI 8255.

The output of the code  below, is just simply changing the status of PPI 8255  PORT's  contentiously from high to low or vice versa.  

Materials:

arduino nano
PPI8255
Breadboard
jumper wires
mini usb
multitester
PC with installed arduino IDE
//varable for PPI 8255
byte PPIPortData ;
const byte PPIPortA = 0;
const byte PPIPortB = 1;
const byte PPIPortC = 2;
const byte PPIctrl = 3;
const int PinA0 = 2;
const int PinA1 = 3;
const int PinRead = 4;
const int PinWrite = 5;
const int PinReset = 6;
byte GroupA = B00000111;
byte GroupB = B01111000;
byte PPIMode0 ;
byte PPIMode1 ;
byte PPIMode2 ;
boolean PPImodeEnable;
byte PortX;
//function to read and write the port of PPI 8255
int ReadPPIPort(int ppiPort)
{
//function to read from 8255 port a,b,c
int result;
return result;
}
//function to select the port of PPI 8255
void SelectPort(byte ppiPort)
{
//function to select port oo 8255 port a,b,c
String StrPort;
Serial.print("Port\t");
switch (ppiPort){
case 0: //port a
StrPort="A";
digitalWrite(PinA0,LOW);
digitalWrite(PinA1,LOW);

break;
case 1: //port b
StrPort="B";
digitalWrite(PinA0,HIGH);
digitalWrite(PinA1,LOW);
break;
case 2: //port c
StrPort="C";
digitalWrite(PinA0,LOW);
digitalWrite(PinA1,HIGH);
break;
case 3: //control register
StrPort ="Reg";
digitalWrite(PinA0,HIGH);
digitalWrite(PinA1,HIGH);
break;
}
Serial.print(StrPort + " is selected \n");
}
//write to PPIPOrt
void PPIWrite(byte Portx,byte DataPort)
{
byte PortB0_1;
//select the PPI8255 port
SelectPort(Portx);
//pulldown the write pin of PPI8255
digitalWrite(PinWrite,LOW);
//preset the D0..D5 of PPI8255 data bus
DDRC = DDRC | B00111111; //preset the direction of atmega328 port c into output direction
PORTC = DataPort; //
//preset the D6..D7 of PPI8255 data bus
PortB0_1 = DataPort >> 6;
DDRB = DDRB | B00000011;
PORTB = PortB0_1;
//pullup the write pin of PPI8255
digitalWrite(PinWrite,HIGH);
Serial.print("Writing in Port ... \n");
}
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
// put your setup code here, to run once:
Serial.print("Initialize PPI8255 Control I/O ....");
pinMode(PinReset,OUTPUT);
pinMode(PinRead,OUTPUT);
pinMode(PinWrite,OUTPUT);
pinMode(PinA0,OUTPUT);
pinMode(PinA1,OUTPUT);
DDRC = DDRC | B00111111;
digitalWrite(PinReset,LOW);
digitalWrite(PinReset,HIGH);
digitalWrite(PinReset,LOW);
digitalWrite(PinRead,HIGH);
digitalWrite(PinWrite,HIGH);
Serial.print("Done \n");
//INIT control register
SelectPort(PPIctrl);
PORTC = B00000000;
digitalWrite(PinWrite,LOW);
digitalWrite(PinWrite,HIGH);
SelectPort(0);
//PORTC = B11111111;
digitalWrite(PinWrite,LOW);
digitalWrite(PinWrite,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
while (Serial.available() > 0 ){
Serial.print("Reading Serial Port\t");
PortX = Serial.parseInt();
SelectPort(PortX);
//Serial.print(PortX );
Serial.print("\t Done \n");
}
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
//SelectPort(0);
//PORTC = B00000000;
//digitalWrite(PinWrite,LOW);
//digitalWrite(PinWrite,HIGH);
PPIWrite(PortX,B11111111);
delay(1000);
//SelectPort(0);
//PORTC = B11111111;
PPIWrite(PortX,B00000000);
//digitalWrite(PinWrite,LOW);
//digitalWrite(PinWrite,HIGH);
delay(1000);
}

Thursday, January 21, 2010

Liquid paper used to PCB masking


I trying to used liquid paper for PCB masking, the result is not good. During PCB etching some line are slowly washout. You see in the image below.        


materials needed
PCB board
Liquid paper
Drill Bit
note: 
updated and edited june 2016

Wednesday, January 20, 2010

Sunday, April 26, 2009

CD-ROM mobot Project - Chassis testing


Chassis test run

tools needed for test are
AC-DC adjustable adaptor 3v -12V
Telephone wire





Saturday, March 28, 2009

CD-ROM mobot Project chassis Third Wheel Assembly

Third wheel from cassette deck roller

tools needed

Pliers used to tighten the Screw
set Screw from for motherboard
Roller from cassette deck



CD-ROM mobot Project - Wheel assembly 2

Rubber wheel made from old unpaired sleeper

tools needed
knife used to cut the sleeper into round shape and paste into capstan






Thursday, March 26, 2009

CD-ROM mobot Project - wheel assembly

wheel base assembly from old cassette player capstan

scrap needed
scrap capstan will be use as base for outer rubber wheel





Wednesday, March 25, 2009

CD-ROM mobot Project- assembly of chassis

next step to assemble the scrap part of CDRom Drive and make into mobot chassis

tools needed
Double adhesive tape for temporary adhering of joint



CD-ROM mobot Projec - Disassembling CDROM Drive

My first project mobot that will be made of junk CDROM drive into simple mobot (mobile bot) control by PIC

tools needed
2 pcs same model CDROM Drive

remove all unnecessary part of CDROM Drive