INFRA röd fjärrstyrda ROBOCAR använder AVR (ATMEGA32) MCU (5 / 5 steg)
Steg 5: Avr program
1. sensor för fjärrkontroll:
#include
#include
#include "remote.h"
Globals flyktiga unsigned int tid; Huvudsakliga timer, lagrar tid i 10us, //Updated av ISR(TIMER0_COMP) flyktiga unsigned char BitNo; POS för nästa BIT flyktiga unsigned char ByteNo; POS för nuvarande Byte
flyktiga unsigned char IrData [4]. De fyra data byte av IR-Packet //2-Byte adress 2 Byte Data flyktiga unsigned char IrCmdQ [QMAX]; //Final kommando emot (buffert)
flyktiga unsigned char PrevCmd; Används för upprepning
Variabler som används för börja upprepa endast efter en tangenttryckning för viss tid
flyktiga unsigned char upprepa; 1 = Ja 0 = ingen flyktiga unsigned char RCount; Upprepa räkningen
flyktiga char QFront =-1, QEnd =-1;
flyktiga unsigned char staten. Tillstånd av mottagare
flyktiga unsigned char bakkant. Kanten av avbrott [RISING = 1 OR fallande = 0]
flyktiga unsigned int sluta;
/**********************************************************************************************/ /* F U N C T I O N S S T A R T S */ /**********************************************************************************************/
void RemoteInit() {
röding i. för (jag = 0; jag < 4; i ++) IrData [i] = 0;
stoppa = 0; State = IR_VALIDATE_LEAD_HIGH; Edge = 0; Upprepa = 0;
Setup Timer1 / /---TCCR0| = ((1<
TIMSK| =(1<
OCR0 = TIMER_COMP_VAL; Set jämför värdet
unsigned char GetRemoteCmd(char wait) {unsigned char cmd;
IF(Wait) while(QFront==-1); annat if(QFront==-1) återvända (RC_NONE);
CMD = IrCmdQ [QFront];
IF(QFront==QEnd) QFront = QEnd =-1; annat {if(QFront==(QMAX-1)) QFront = 0; annat QFront ++;}
returnera cmd;
}
2. Main ():
int main(void)
{
uint8_t cmd = 0; DDRB = 0X08;
DDRD = 0X80;
DDRC = 0X0F; PORTC = 0X00;
samtidigt (1) //Infinite Loop till aktiv IR-sensor {
CMD=GetRemoteCmd(1);
Switch(CMD) {
fall xx: {//BOT drag framåt //Ch+ btn forwardmotor();
bryta; Båda motorerna i riktning framåt
}
..........................................................
..........................................................
..........................................................
standard: PORTC = 0x00, bryta; Både vänster och höger motors stoppa}
}
} / * Slutet av main * /
....................................................................................................................................
Det en grundläggande modell, men jag kan använda den i PWM läge... skål!
/ * ## #Rudra Narayan PAUL ###
M. TECH (COMPUTER SCIENCE ENGG.), AAVRÄTTAS, ODISHA,
####################################################*/