domingo, 29 de agosto de 2010

Comunicacion Serial - Envio de un String

unsigned rx1;

void printHandler(char c) //Esta función ayuda a enviar un string
{ //Caracter por caracter
Uart2_Write_char(c);
}

void main() {

TRISD=0; //Inicializamos el puerto D como info aux.

Uart2_Init(115200);
while(1){
//A continuación se envían los strings para la tarjeta SSC-32
PORTDbits.RD1=1;
printout(printHandler, "#0P1750#1P1280#2P2000#3P1100T2000\r");
delay_ms(3000);
PORTDbits.RD1=0;
printout(printHandler, "#0P1550#1P1500#2P1520#3P1500T2000\r");
delay_ms(3000);
PORTDbits.RD1=1;
printout(printHandler, "#0P1200#1P1840#2P1300#3P2000T2000\r");
delay_ms(3000);
PORTDbits.RD1=0;
printout(printHandler, "#0P1550#1P1500#2P1520#3P1500T2000\r");
delay_ms(3000);
}
}

Comunicacion Serial - Envio de un Caracter

unsigned rx1;

void main() {
TRISB=0;
Uart2_Init(115200);
while(1){
PORTBbits.RB0=1;
delay_ms(100);
Uart2_Write_Char('s');
PORTBbits.RB0=0;
delay_ms(100);
}

}

Envio del PWM

unsigned int i;

unsigned int duty_50;

void main(){

ADPCFG = 0xFFFF;
PORTB = 0xAAAA;
TRISB = 0;
TRISE = 0;

TRISDbits.TRISD3=0;
TRISDbits.TRISD1=0;
PORTDbits.RD3=1;
PORTDbits.RD1=0;

while(1){

duty_50 = Pwm_Mc_Init(3000,1,0x06,0);
Pwm_Mc_Set_Duty(i = duty_50,1);

Pwm_Mc_Set_Duty(i = (duty_50*2),2);

Pwm_Mc_Start();
Delay_ms(1000);
}

}

Lectura LED

void main() {

TRISB=0;

while(1)
{
PORTBbits.RB0=1;
delay_ms(3000);

PORTBbits.RB0=0;
delay_ms(3000);
}

}

Lectura Brujula

unsigned rx1;

void printHandler(char c)
{
Uart2_Write_char(c);
}

void main() {
int x=0, grados=0, contador=0;
ADPCFG |= 0xFFFF;
TRISD=0;
Uart2_Init(115200);

while(1){
x=adc_Read(0);
if(x>=500){
while(x>=500){
x=adc_Read(0);
contador++;
delay_ms(1);
}
grados = contador*10;
printout(printHandler, "--%iº", grados);
delay_ms(800);
contador=0;
}
}

}

Lectura del sensor de distancia optico SHARP

void main() { //Este programa lee el valor recibido del lector optico SHARP
int x=0;
TRISE=0; //Se declara el puerto E como salida.
ADPCFG |= 0xFFFF; //Se activan todos los ADC

x=adc_Read(0);

while(1)
{
x=adc_Read(0); //Se lee el puerto ADC 0
if(x<125){ //Si el valor es menos a 125 se enciende el led conectado al
PORTEbits.RE0=1; //puerto E0
delay_ms(500);
}
if(x>=125){ //En caso contrario se apaga
PORTEbits.RE0=0;
//delay_ms(500);
}
}

}

Codigo - Activacion Electroimanes

void main() { //Este programa su unica funcion es la de mandar 5v al puente H
TRISB=0; //Activa puertos B y D como salidas.
TRISD=0;

PORTDbits.RD0=1;
PORTDbits.RD1=1;
PORTDbits.RD2=1;
PORTDbits.RD3=1;

while(1) //Ciclo de activacion desactivacion
{
PORTBbits.RB0=1;
PORTBbits.RB1=1;
delay_ms(2000);

PORTBbits.RB0=0;
PORTBbits.RB1=0;
delay_ms(2000);
}

}