Étape 5: Avr programmes
1. capteur de télécommande :
#include
#include
#include « remote.h »
Globals volatil unsignedInt temps ; Minuterie principale, stocke le temps dans 10us, //Updated par les ISR(TIMER0_COMP) volatils unsigned char selon ; POS du prochain peu volatils unsigned char ByteNo ; POS d’octet actuelle
volatils unsigned char IrData [4] ; Les données de quatre octets du paquet Ir //2-Byte adresse 2 octets de données volatiles unsigned char IrCmdQ [QMAX]; //Final commande reçue (tampon)
volatils unsigned char PrevCmd ; Utilisé pour une répétition
Variables utilisées pour commencent à répéter qu’après qu’une touche est enfoncée pendant certain temps
Répétez les volatiles unsigned char ; 1 = Oui, 0 ne = aucun char unsigned volatils rcompte ; Nombre de répétitions
volatils char QFront =-1, QEnd =-1 ;
volatils unsigned char État ; État du récepteur
volatils unsigned char Edge ; Bord d’interruption [RISING = 1 OR FALLING = 0]
volatil unsignedInt arrêter ;
/**********************************************************************************************/ /* F U N C T I O N S S T A R T S */ /**********************************************************************************************/
void RemoteInit() {}
char i ; pour (i = 0; i < 4; i ++) IrData [i] = 0 ;
arrêter = 0 ; État = IR_VALIDATE_LEAD_HIGH ; Bord = 0 ; Répéter = 0 ;
Timer1 d’installation / /---TCCR0| = ((1<
TIMSK| =(1<
OCR0 = TIMER_COMP_VAL ; Valeur de comparer ensemble
unsigned char GetRemoteCmd(char wait) {unsigned char cmd ;
if(Wait) while(QFront==-1) ; if(QFront==-1) else return (RC_NONE) ;
cmd = IrCmdQ [QFront] ;
if(QFront==QEnd) QFront = QEnd =-1 ; else {if(QFront==(QMAX-1)) QFront = 0; else QFront ++;}
retour de cmd ;
}
2. main() :
int main (void)
{
uint8_t cmd = 0 ; DDRB = 0 X 08 ;
DDDR = 0 X 80 ;
DDRC = 0X0F ; PORTC = 0 X 00 ;
//Infinite (1) boucle d’active-récepteur IR {while
cmd=GetRemoteCmd(1) ;
{Switch(cmd)}
xx cas: {//BOT va de l’avant //Ch+ btn forwardmotor() ;
rupture ; Les deux moteurs en marche avant
}
..........................................................
..........................................................
..........................................................
par défaut : PORTC = 0 x 00 ; break ; Gauche et droite moteurs stopper}
}
} / * Fin de la main /
....................................................................................................................................
Il un modèle de base, mais j’ai pouvons l’utiliser en mode PWM... Bravo!!!
/ * ## #Rudra Narayan PAUL ###
M. TECH (COMPUTER SCIENCE ENGG.), SECRÈTEMENT, ODISHA,
####################################################*/