télécommande RC une voie/arduino

bonjour je voudrais réaliser une télécommande une voie à partir d'une arduino nano, et d'un module émission comme celui ci http://www.hobbyking.com/hobbyking/s...er_Module.html

le but est de connecter juste un inter 2 positions sur l aduino pour commander un servo pour ouvrir une trappe. (envoie de 2 valeurs ppm en fonction de la position de l inter)

est ce que je peux partir de ce code ? http://code.google.com/p/generate-ppm-signal/

suis débutant et n'est jamais pratiqué l ardunio, mais je pense que c'est assez simple

merci du petit coup de main

Bonjour,

ton premier lien est inaccessible.

ton code est un projet archivé qui date de plus de deux ans. Il vaut mieux utiliser la librairie Servo

je remets le lien

pour la librairie servo je l ‘ai vu mais je pense que ça ne va pas car je ne connecte pas directement le servo sur l’ ardu mais je passe pas un module émission 2.4ghz (lien hobbyking) qui doit recevoir du PPM, le servo lui reçoit du PWM

j’ai trouvé un autre lien avec un projet qui colle bien mais il y en a trop du coup, il me faudrait un petit coup de main pour épurer le code et garder juste le nécessaire
http://www.modelflying.co.uk/forums/postings.asp?th=97589&p=1

help help j'arrive à rien... à la compil sur certain code il m indique qu il ne trouve pas un fichier .h pourtant j 'ai placé la librairie dans mes documents/arduino/librairie, je l ai aussi mis dans programme files/arduino, mais rien ni fait il me trouve pas les fichiers.

kiteur76: help help j'arrive à rien... à la compil sur certain code il m indique qu il ne trouve pas un fichier .h pourtant j 'ai placé la librairie dans mes documents/arduino/librairie, je l ai aussi mis dans programme files/arduino, mais rien ni fait il me trouve pas les fichiers.

bonjour mets ton dossier où sont le .h et le .cpp dans le dossier libraries du dossier où est installé l'IDE (exemple) |500x349

je l ai fait idem rien à faire j'ai toujours l erreur, bien sur physiquement le fichier est bien la

j'ai ce message: SimuTX.ino:31:19: fatal error: AIPin.h: No such file or directory

salut j’avance un peu le code suivant fonctionne c’est à dire que le servo a un mouvement de balayage continue.
Est ce que quelqu’un pourrait m’aider à l épurer, je n’ai pas besoin du balayage continue, il me faut juste pourvoir rentrer une valeur à l initialisation de la carte, puis envoyer une valeur si j active une entrée (présence 5v) et une autre si pas de 5v. Je ne mi retrouve pas dans le code.

merci de votre aide

//this programm will put out a PPM signal

//////////////////////CONFIGURATION///////////////////////////////
#define chanel_number 8  //set the number of chanels
#define default_servo_value 1500  //set the default servo value
#define PPM_FrLen 22500  //set the PPM frame length in microseconds (1ms = 1000µs)
#define PPM_PulseLen 300  //set the pulse length
#define onState 1  //set polarity of the pulses: 1 is positive, 0 is negative
#define sigPin 10  //set PPM signal output pin on the arduino
//////////////////////////////////////////////////////////////////


/*this array holds the servo values for the ppm signal
 change theese values in your code (usually servo values move between 1000 and 2000)*/
int ppm[chanel_number];

void setup(){  
  //initiallize default ppm values
  for(int i=0; i<chanel_number; i++){
    ppm[i]= default_servo_value;
  }

  pinMode(sigPin, OUTPUT);
  digitalWrite(sigPin, !onState);  //set the PPM signal pin to the default state (off)
  
  cli();
  TCCR1A = 0; // set entire TCCR1 register to 0
  TCCR1B = 0;
  
  OCR1A = 100;  // compare match register, change this
  TCCR1B |= (1 << WGM12);  // turn on CTC mode
  TCCR1B |= (1 << CS11);  // 8 prescaler: 0,5 microseconds at 16mhz
  TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
  sei();
}

void loop(){
  //put main code here
  static int val = 1;
  
  ppm[0] = ppm[0] + val;
  if(ppm[0] >= 2000){ val = -1; }
  if(ppm[0] <= 1000){ val = 1; }
  delay(10);
}

ISR(TIMER1_COMPA_vect){  //leave this alone
  static boolean state = true;
  
  TCNT1 = 0;
  
  if(state) {  //start pulse
    digitalWrite(sigPin, onState);
    OCR1A = PPM_PulseLen * 2;
    state = false;
  }
  else{  //end pulse and calculate when to start the next pulse
    static byte cur_chan_numb;
    static unsigned int calc_rest;
  
    digitalWrite(sigPin, !onState);
    state = true;

    if(cur_chan_numb >= chanel_number){
      cur_chan_numb = 0;
      calc_rest = calc_rest + PPM_PulseLen;// 
      OCR1A = (PPM_FrLen - calc_rest) * 2;
      calc_rest = 0;
    }
    else{
      OCR1A = (ppm[cur_chan_numb] - PPM_PulseLen) * 2;
      calc_rest = calc_rest + ppm[cur_chan_numb];
      cur_chan_numb++;
    }     
  }
}