📄 lib_cam.c
字号:
// Librairie Cam閞a
// EUROBOT 2009 - Polytech' Grenoble
#include "lib_cam.h"
#include "uart.h"
#include "constante.h"
// Fonction permettant de placer la r閜onse de la cam閞a dans le buffer
void getchaine(char *buffer) {
unsigned int temp, i = 0;
buffer[10] = '\0';
while (i < 50) { // protection pour ne pas d閜asser la taille du buffer
while (!DataRdyUART2());
temp = ReadUART2(); // data word from HW buffer to SW buffer
buffer[i++] = temp;
if (temp == '\r') break;
}
buffer[i] = '\0';
}
// Fonctions d'initialisation
void init_camera(void) {
long int j, k;
InitUART();
do{
putsUART2("a");//reset
}while(1);
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
//
// putsUART2("RM 2\r");//pour ne pas faire envoyer les ACK\r et NCK\r
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
//
// putsUART2("PM 1\r");//1 seul trame de reponse
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
//
// putsUART2("HR 1\r");//1 seul trame de reponse
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
//
// putsUART2("VW 55 21 85 63\r");//fenetre "centr閑"
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
//
// putsUART2("SV 1 60\r");//fenetre "centr閑"
// for(j=0;j<100;j++)for(k=0;k<15000;k++){};
}
void InitUART(void) { // Permet entre autres de vider le tampon
long int j, k;
RPINR19bits.U2RXR=6; //RP6->U2RX
RPOR3bits.RP7R=5; //RP7->U2TX
OpenUART2( UART_EN & UART_IDLE_CON & UART_IrDA_DISABLE & UART_UEN_00 &
UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_BRGH_SIXTEEN &
UART_NO_PAR_8BIT & UART_1STOPBIT,
UART_INT_TX_BUF_EMPTY &
UART_TX_ENABLE & UART_INT_RX_BUF_FUL &
UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR,
(unsigned int)U2BRG_VAL);
//U1MODEbits.BRGH = 0; // Low Speed mode
for(j=0;j<100;j++)for(k=0;k<15000;k++){};
}
// Fonctions retournant 1 si la couleur est d閠ect閑, 0 sinon
int detec_rouge(void) {
return track("TC 200 255 0 30 0 30\r");
}
int detec_vert(void) {
return track("TC 0 50 120 255 0 50\r");
}
int detec_bleu(void) {
return track("TC 0 50 0 50 100 255\r");
}
int track(char *arg) {
long int j, k;
int mot = 0, i;
char tab[50];
InitUART();
putsUART2(arg);
getchaine(tab);
for(i=0;i<strlen(tab);i++) {
if (tab[i] == ' ') mot++;
else if (mot == 1) {
for(j=0;j<100;j++)for(k=0;k<10000;k++){};
if (tab[i] > '0') return 1;
else return 0;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -