Paso 5: Programas de Avr
1. sensor de control remoto:
#include
#include
#include "remote.h"
Globales volátiles unsigned int tiempo; Contador de tiempo principal, guarda tiempo en 10us, //Updated de ISR(TIMER0_COMP) volátil unsigned char BitNo; Pos de siguiente poco volátiles unsigned char ByteNo; Posición de Byte actual
char sin signo volátiles IrData [4]; Los datos de cuatro Bytes de paquete Ir //2-Byte Dirección 2 bytes datos volátiles unsigned char IrCmdQ [QMAX]; //Final recibió el comando (tampón)
volátiles sin firmar char PrevCmd; Utilizado para repetir
Variables utilizadas para empezar repitiendo solamente después que se pulsa una tecla durante cierto tiempo
char sin signo volátiles repetir; 1 = Si 0 no = volátiles unsigned char RCount; Número de repeticiones
carácter volátil QFront =-1, QEnd =-1;
char sin signo volátil estado; Estado del receptor
char sin signo volátiles borde; Borde de interrupción [levantamiento = cae OR 1 = 0]
parada de volátil int sin signo;
/**********************************************************************************************/ /* F U N C T I O N S S T A R T S */ /**********************************************************************************************/
void RemoteInit() {}
char i; para (i = 0; i < 4; i ++) IrData [i] = 0;
detener = 0; Estado = IR_VALIDATE_LEAD_HIGH; Borde = 0; Repetir = 0;
Configuración Timer1 / /---TCCR0| = ((1<
TIMSK| =(1<
OCR0 = TIMER_COMP_VAL; Set Compare el valor
unsigned char GetRemoteCmd(char wait) {unsigned char cmd;
while(QFront==-1) de if(Wait); if(QFront==-1) demás volver (RC_NONE);
CMD = IrCmdQ [QFront];
if(QFront==QEnd) QFront = QEnd =-1; else {if(QFront==(QMAX-1)) QFront = 0; else QFront ++;}
volver cmd;
}
2. main():
int Main
{
uint8_t cmd = 0; DDRB = 0X08;
DDRD = 0 X 80;
DDR = 0X0F; PORTC = 0 X 00;
mientras que //Infinite (1) bucle activo sensor IR {}
CMD=GetRemoteCmd(1);
{Switch(CMD)}
caso xx: {//BOT se desplaza hacia adelante //Ch+ btn forwardmotor();
rotura; Ambos motores hacia adelante
}
..........................................................
..........................................................
..........................................................
por defecto: PORTC = 0 x 00; break; Detener los motores izquierdos y derecho}
}
} / * Fin de la principal /
....................................................................................................................................
Es un modelo básico, pero podemos usarlo en modo PWM... saludos!!!
/ * ## #Rudra Narayan PAUL ###
M. TECNOLOGÍA (ORDENADOR CIENCIA ENGG.), FUT, ODISHA,
####################################################*/