Programmation ATMEGA8535 - pilotage via IR - voiture
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Programmation ATMEGA8535 - pilotage via IR - voiture



  1. #1
    ludoc

    Programmation ATMEGA8535 - pilotage via IR - voiture


    ------

    Bonjour,
    J'aurai besoin de vos conseils pour la programmation d'un ATMEGA8535.

    En fait, j'ai une "mini voiture" que je souhaite contrôler depuis une télécommande (type TV).
    Voici la documentation de la carte que j'utilise :
    http://sti.ac-orleans-tours.fr/spip/...arte_robot.pdf
    http://sti.ac-orleans-tours.fr/spip/...icro_robot.pdf

    J'ai un récepteur IR que j'ai cablé de PA0 à PA6 et sur PD2 (voir doc ci-dessus).
    J'ai deux moteurs sur cette mini-voiture.

    Lors de l'appui sur BP1, j'appuie sur une touche de la télécommande à associer à l'action avancer
    Lors de l'appui sur BP2, j'appuie sur une touche de la télécommande à associer à l'action reculer
    Lors de l'appui sur BP3, j'appuie sur une touche de la télécommande à associer à l'action tourner_gauche
    Lors de l'appui sur BP4, j'appuie sur une touche de la télécommande à associer à l'action tourner_droite

    Les touches de la télécommande sont alors configurées pour piloter ma voiture.

    Voici le programme que j'ai effectué :

    Code PHP:
    /****************************************************
    Projet         : Pilotage voiture avec telecommande
    Version     : 1.0 
    Date        : 19/02/12
    Auteur         : C.Ludovic
    uC            : ATMEL AVR ATMEGA8535
    ****************************************************/

    #include <avr/io.h> 

    #define M1AV (0x10) // Adresse moteur 1 avancer
    #define M1RE (0x08) // Adresse moteur 1 reculer
    #define M1STOP (0x18) // Adresse moteur 1 stop
    #define M2AV (0x40) // Adresse moteur 2 avancer
    #define M2RE (0x20) // Adresse moteur 2 reculer
    #define M2STOP (0x60) // Adresse moteur 2 stop

    #define BP1 (PINC&0x01)
    #define BP2 (PINC&0x02)
    #define BP3 (PINC&0x04)
    #define BP4 (PINC&0x08)

    #define LED1 (0xE0) 
    #define LED2 (0xD0)
    #define LED3 (0xB0)
    #define LED4 (0x70)

    #define LEDOFF (0xF0)

    #define TELE ((PINA&0x7F)|(PIND&0x04))

    int main(void)
    {
        
    unsigned char avancerreculertourner_gauchetourner_droite;
        while (
    1)
        {    
            if (
    BP1)
            {
                
    avancer=TELE;
            }

            else if (
    BP2)
            {
                
    reculer=TELE;
            }

            else if (
    BP3)
            {
                
    tourner_gauche=TELE;
            }

            else if (
    BP4)
            {
                
    tourner_droite=TELE;
            }
            else
            {
                if (
    TELE==avancer)
                {
                    
    PORTD=M2AV|M1AV;
                }
                else if (
    TELE==reculer)
                {
                    
    PORTD=M2RE|M1RE;
                }
                else if (
    TELE==tourner_gauche)
                {
                    
    PORTD=M2RE|M1AV;
                }
                else if (
    TELE==tourner_droite)
                {
                    
    PORTD=M2AV|M1RE;
                }
                else
                {
                    
    PORTD=M1STOP|M2STOP;
                }
            }
        }
    }

    void init_port(void)
    {
        
    DDRA=0x80;
        
    DDRB=0xFF;
        
    DDRC=0xF0;
        
    DDRD=0xFA;
        
    PORTC=LEDOFF;
        
    PORTD=M1STOP|M2STOP;

    Pensez-vous que cela réalisera ce que je souhaite faire ? Je ne peux pas le tester pour le moment donc c'est pour ça que je vous demande. Il n'y a pas d'erreur de compilation en tout cas.
    Je sais bien que la meilleur solution c'est de tester, mais bon si vous voyez de grosses erreurs ou des conseils dans mon code, n'hésitez pas

    Merci pour votre aide.
    Ludo

    -----
    Dernière modification par ludoc ; 19/02/2012 à 11h03.

Discussions similaires

  1. ATMEL ATmega8535
    Par Olfox dans le forum Électronique
    Réponses: 2
    Dernier message: 14/07/2009, 09h42
  2. UART avec ATMEGA8535
    Par invite73c4066c dans le forum Électronique
    Réponses: 3
    Dernier message: 29/07/2008, 00h25
  3. Programmer un ATMEGA8535 en USB????
    Par technosvitman dans le forum Électronique
    Réponses: 3
    Dernier message: 03/07/2008, 16h23
  4. atmega8535 programmant atmega8535
    Par thomasalbert1993 dans le forum Électronique
    Réponses: 12
    Dernier message: 29/01/2008, 20h19
  5. ATMEL ATmega8535
    Par invite7e9cb89a dans le forum Électronique
    Réponses: 6
    Dernier message: 27/01/2005, 07h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...