Paso 3: Código de fuente
#include < 18F458.h >#device ADC = 8
#fuses HS, NOWDT, NOPROTECT, NOLVP
#use delay(clock=8000000)
#use rs232 (baud = 9600, xmit = PIN_C6, rcv = PIN_C7)
#define GLCD_WIDTH 128
#define GLCD_E PIN_E0 / / habilitar
#define GLCD_DI PIN_B5
#define GLCD_CS1 PIN_A1 / / Chip de selección 1
#define GLCD_CS2 PIN_B0
#define SERVO PIN_A3
#include < HDM64GS12.c >
#include < graphics.c >
#include < math.h >
char mensaje [] = "EndtaS RaDaR";
flotador de theta = 0, ytheta;
void main() {}
INT1 enbas;
Letras de mesafe int;
int car1, sayac, a;
Int16 servopos;
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
Enbas:
glcd_init(ON);
glcd_fillScreen(OFF);
glcd_text57 (30, 0, mensaje, 1, 1);
glcd_circle (29, 37, 26, 0, 1);
glcd_pixel (29, 37, ON);
Theta = 7.85;
Servopos = 550;
printf("Scan_START\r\n");
mientras {}
Letras de Mesafe = read_adc();
printf ("th: %f -> %u \r\n\n",theta, Letras de mesafe);
ytheta = theta;
sayac = 1;
Si (enbas == TRUE) {}
sayac = 50;
}
para (a = 0; a < sayac; a ++) {}
output_high(servo);
delay_us(Servopos);
output_low(servo);
delay_us (20000 - servopos);
}
Si (enbas == TRUE) {}
glcd_circle (29, 37, 25, 1, 0);
glcd_pixel (29, 37, ON);
printf("Scan_START\r\n");
delay_ms(300);
}
Si (ytheta > = 4.51) {}
ytheta-=. 02;
Servopos += 12;
Enbas = FALSE;
}
Else {}
glcd_circle (29, 37, 25, 1, 0);
ytheta = 7.85;
Servopos = 550;
glcd_pixel (29, 37, ON);
Enbas = TRUE;
printf("Scan_COMPLETE\r\n");
}
glcd_pixel (28+(int)(car1*sin(-theta)+.5), 38-(int)(car1*cos(theta)+.5), OFF);
glcd_pixel (28+(int)(car1*sin(-theta-1)+.5), 38-(int)(car1*cos(theta-1)+.5), OFF);
Theta = ytheta;
CAR1 = Letras de mesafe / 8;
glcd_pixel (28+(int)(car1*sin(-theta)+.5), 38-(int)(car1*cos(theta)+.5), ON);
delay_ms(10);
}
}