Stap 5: Avr-programma 's
1. buitensensor:
#include
#include
#include "remote.h"
GLOBALS vluchtige unsigned int tijd; Belangrijkste timer, slaat op tijd in 10us, //Updated door ISR(TIMER0_COMP) vluchtige unsigned char BitNo; POS van volgende BIT vluchtige unsigned char ByteNo; POS van huidige Byte
vluchtige unsigned char IrData [4]; De vier gegevens Bytes van Ir Packet //2-Byte adres 2-Byte gegevens vluchtige unsigned char IrCmdQ [QMAX]; //Final opdracht ontvangen (Buffer)
vluchtige unsigned char PrevCmd; Gebruikt voor herhaling
Variabelen die worden gebruikt voor beginnen herhalende pas nadat een toets wordt ingedrukt gedurende bepaalde tijd
vluchtige unsigned char herhalen; 1 = Ja, 0 = geen vluchtige unsigned char RCount; Herhaal de graaf
vluchtige char QFront =-1, QEnd =-1;
vluchtige unsigned char staat; Staat van ontvanger
vluchtige unsigned char rand; Rand van interrupt [stijgen = 1 OR FALLING = 0]
vluchtige unsigned int stoppen;
/**********************************************************************************************/ /* F U N C T I O N S S T A R T S */ /**********************************************************************************************/
VOID RemoteInit() {}
char i; voor (ik = 0; ik < 4; i ++) IrData [i] = 0;
stoppen = 0; Staat = IR_VALIDATE_LEAD_HIGH; Rand = 0; Herhaal = 0;
Opstelling van Timer1 / /---TCCR0| = ((1<
TIMSK| =(1<
OCR0 = TIMER_COMP_VAL; Set vergelijk waarde
unsigned char GetRemoteCmd(char wait) {unsigned char cmd;
if(wait) while(QFront==-1); anders if(QFront==-1) return (RC_NONE);
cmd = IrCmdQ [QFront];
if(QFront==QEnd) QFront = QEnd =-1; else {if(QFront==(QMAX-1)) QFront = 0; anders QFront ++;}
retourneren van cmd;
}
2. main():
int main(void)
{
uint8_t cmd = 0; DDRB = 0X08;
DDRD = 0X80;
DDRC = 0X0F; PORTC = 0X00;
while lus van de (1) //Infinite tot actieve IR-sensor {}
cmd=GetRemoteCmd(1);
switch(cmd) {}
zaak xx: {//BOT naar het volgende //Ch+ btn forwardmotor();
breken; Beide motoren in voorwaartse richting
}
..........................................................
..........................................................
..........................................................
standaard: PORTC = 0x00; break; Zowel links als rechts motoren stoppen}
}
} / * Einde van main * /
....................................................................................................................................
Het een basismodel, maar ik kan gebruiken in de modus van de PWM... cheers!
/ * ## #Rudra Narayan PAUL ###
M. TECH (COMPUTER SCIENCE ENGG.), TRACHTTEN, ODISHA,
####################################################*/