Aller au contenu


Photo
- - - - -

télécommande IR numérique Module récepteur


16 réponses à ce sujet

#1 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 03 septembre 2011 - 11:44

Bonjour à tous .

Donc voila , je me suis procuré une télécommande avec capteur IR donc celle si.


Image IPB

Pour télécommandé mon robot , mais je ne se pas comment elle fonctionne.

Et t'il possible de me donner quelque information sur se capteur IR???

Merci.

#2 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 03 septembre 2011 - 11:56

Bonjour
En fait c'est assez simple, mais cela doit se faire en deux temps

1/ apprendre les commandes envoyées par ta élécommande
2/ Utiliser ces commandes



Il te faut donc dans un 1er temps connaitre la commande binaire envoyée par ta télécommande pour chaque touche.

Une fois que tu les connais, tu n'as plus qu'à écrire un code qui lance une action chaque fois que tu reçois ce code.

Tu vas donc devoir dans un premier temps envoyer la lecture de ton digital.read sur le serial monitor et noter la commande que te retourne chaque bouton.
Pour cela,
tu connecte ton récepteur IR sur un pin digital
Tu déclare ton port serie
Tu lis ton digital.read sur ton serial

Tu vas donc obtenir un code (en chiffre) sur ton serial monitor différent pour chaque bouton de ta télécommande.
Tu note des chiffres précieusement
Tu n'as plus qu'a écrire un code qui test ton digital.read
et lie chaque code (chaque chiffre) à une action.



Assez simple mais a faire mais impérativement en deux temps car tu n'aura que très rarement des d'infos sur les codes de ta télécommande.

Du reste, avec cette méthode, tu peux très bien utiliser n'importe quelle télécommande. Il te suffira de lire les commandes spécifiques à chaque bouton et plustot que d'utiliser ta petite télécommande, utiliser une vielle télécommande de TV ou magnétoscope.

Attention, certaine (pour ne pas dire pratiquement toutes) les télécommandes utilisent le protocole Sony. Ce protocole envois deux fois de suite la même commande. Mais toi, tu ne l'utilise qu'une seule fois bien sur.

Cdlt
Yves

 


#3 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 04 septembre 2011 - 10:54

d'acore merci Astondb8

#4 Sani300

Sani300

    Habitué

  • Membres
  • PipPip
  • 150 messages
  • Gender:Male

Posté 04 septembre 2011 - 11:08

Mais en fait moi ce qui m'etonne c'est que tu n'as pas de modulation et de demodulation de ton signal, en fin je suppose vu la carte receptrice, du tu vas reucperer trop de signal parasite comme le soleil etc... non?!

#5 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 04 septembre 2011 - 11:37

Bonjour

Plusieurs choses

Tu as besoin de la bibliothèque "IRremote.h"
Tu as besoin de la déclarer "#include <IRremote.h>"
Tu utilise un Pin analogique (cela n'a pas d'importance car tu peux l'utiliser en Digital) mais la tu a besoin d'un pin Digital comme je te l'ais écrit

Pour le branchement, cela semble bon (hors mis ca Pin Digital)

Ce code fait la lecture de la Pin D11 mais il est évident que tu peux la changer (par contre impérativement une Pin digitale ou une Analogique configurée en digital)

Apres avoir compilé et envoyé le code sur ta carte, ouvre le serial monitor pour lire les valeurs
Presse chaque bouton 1 a 1
note la valeur correspondant à chaque bouton.

Mais une simple recherche sur le Net (Google est ton ami) t'aurait donnée des codes similaires.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Cdlt
Yves

 


#6 Sani300

Sani300

    Habitué

  • Membres
  • PipPip
  • 150 messages
  • Gender:Male

Posté 04 septembre 2011 - 11:55

Mais en fait la demodulation est fait grace a la library non?!:

#7 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 04 septembre 2011 - 12:05

...

#8 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 08 septembre 2011 - 07:09

...

#9 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 11 septembre 2011 - 06:37

.......

#10 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2011 - 10:35

Bonjour,

Je ne suis pas sur du reste mais ce qui est certain c'est que :

Tu as déjà déclaré des pins

int vitesse1 = 6;
int vitesse2 = 5;
int direction1 = 7;
int direction2 = 4;

Alors pourquoi recommencer ?

digitalWrite(vitesse1 == 6, HIGH);
digitalWrite(vitesse2 == 5, LOW);
digitalWrite(direction1 == 7, HIGH);
digitalWrite(vitesse2 == 4, LOW);

ce ==6 ou ==5 est faux

Essais ça

digitalWrite(vitesse1, HIGH);
digitalWrite(vitesse2, LOW);
digitalWrite(direction1, HIGH);
digitalWrite(vitesse2, LOW);


Ca devrait deja mieux marcher. Si il n'y a pas d'autres erreurs bien sur

dlt
Yves

 


#11 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 11 septembre 2011 - 10:47

..

#12 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 12 septembre 2011 - 11:35

...

#13 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 14 septembre 2011 - 12:08

..

#14 David_CH

David_CH

    Membre

  • Membres
  • 19 messages

Posté 14 septembre 2011 - 08:39

Salut,

En gros, tu veux pouvoir switch d'un mode pilotage automatique à un mode pilotage manuel en pressant un bouton de ta télécommande? Tu peux simplement faire un test avec un "flag".

Est-ce que tu as déjà codé la partie pilotage automatique? Si oui, je te conseille vivement d'en faire une fonction, ton programme n'est pas terrible mais pourrait y gagner en lisibilité, quelques exemples / conseils :


case 16580863://Mode automatique touche marche arré de la télécommande ne marche pas tout a fait

Le "16580863 n'est pas très digeste, essaye de passer par des "define" ça rendra le ton switch case plus facile à lire, sans devoir passer par les commentaires.

Comme ceci :
#define 16580863 MODE_AUTO

Ainsi dans ton code tu auras

case MODE_AUTO :
{
  /*Code pour le pilotage automatique*/  
}
case AVANCE
{
/*Code pour avancer*/
}

C'est déjà beaucoup plus lisible je trouve ;)


Ensuite, pour intégrer le flag, tu peux faire comme suit :


int flag_mode_auto = 0;     /* Flag pour savoir si le pilotage automatique a été activé, ici le pilotage par défaut est le mode manuel */

...

case MODE_AUTO :
{
  if(flag_mode_auto == 1) /* Tu peux écrire plus cours avec "if(flag_mode_auto)"
     {
        flag_mode_auto =  0; /* important d'inverser l'état du flag, ainsi on sait toujours dans quel mode on se trouve */
        ModeAuto();          /* fonction pour le pilotage automatique */
        break;
     } 
  else if(flag_mode_auto == 0)    /* peut être écris "if(!flag_mode_auto)" */
    {
        flag_mode_auto =  1; /* important d'inverser l'etat du flag, ainsi on sait toujours dans quel mode on se trouve */
        ModeManuel();          /* fonction pour le pilotage manuel */  
        break;     
     } 
}

J'espère avoir répondu à ta question :)

#15 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 14 septembre 2011 - 09:46

..

#16 David_CH

David_CH

    Membre

  • Membres
  • 19 messages

Posté 14 septembre 2011 - 09:59

Pas de soucis, n’hésite pas à demander en cas de problèmes, le forum est là pour ça non? De plus c'est toujours frustrant de laisser un projet en l'état sans le finir ^_^

#17 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 14 septembre 2011 - 10:22

..



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users