INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
RC Signal einlesen und ausgeben
04.05.2016, 10:38
Beitrag #1
RC Signal einlesen und ausgeben
Guten morgen,

mein Ardunio liest mein RC Signal vom Empfänger ein und gibt es mittels PWM-Funktion auf Pin 9 wieder aus.
funktioniert auch mittlerweile wunderbar. Habe es mir mit informationen aus dem Internet zusammengeschrieben. Man merkt beim fahren nicht, dass ein Mikrocontroller zwischen sitzt. Dennoch bevor ich jetzt mit meiner Arbeit weitermache kurze Frage an Euch. Ist das ok so?

Code:
#include <Servo.h>

Servo motor;

#define THROTTLE_SIGNAL_INTERRUPT 1
#define THROTTLE_SIGNAL_PIN 3

#define NEUTRAL_THROTTLE 1500 // this is the duration in microseconds of neutral throttle on an electric RC Car

volatile int variable = 1500;
volatile int nThrottleIn = NEUTRAL_THROTTLE; // volatile, we set this in the Interrupt and read it in loop so it must be declared volatile
volatile unsigned long ulStartPeriod = 0; // set in the interrupt
volatile boolean bNewThrottleSignal = false; // set in the interrupt and read in the loop
// we could use nThrottleIn = 0 in loop instead of a separate variable, but using bNewThrottleSignal to indicate we have a new signal
// is clearer for this first example

void setup()
{
  motor.attach(9);  // attaches the servo on pin 9 to the servo object
  attachInterrupt(THROTTLE_SIGNAL_INTERRUPT,calcInput,CHANGE);
  
  Serial.begin(9600);
}

void loop()
{
  
// if a new throttle signal has been measured, lets print the value to serial, if not our code could carry on with some other processing
if(bNewThrottleSignal)
{  
   // set this back to false when we have finished
   // with nThrottleIn, while true, calcInput will not update
   // nThrottleIn
   bNewThrottleSignal = false;
}

}

void calcInput()
{
  // if the pin is high, its the start of an interrupt
  if(digitalRead(THROTTLE_SIGNAL_PIN) == HIGH)
  {
    // get the time using micros - when our code gets really busy this will become inaccurate, but for the current application its
    // easy to understand and works very well
    ulStartPeriod = micros();
  }
  else
  {
    // if the pin is low, its the falling edge of the pulse so now we can calculate the pulse duration by subtracting the
    // start time ulStartPeriod from the current time returned by micros()
    if(ulStartPeriod && (bNewThrottleSignal == false))
    {
      nThrottleIn = (int)(micros() - ulStartPeriod);
      variable = nThrottleIn;
      if ((variable>=2085))
      {
        variable = 2100;
      }
        else
      {
        if ((variable<=915))
        {
          variable = 900;
        }
      }
      motor.writeMicroseconds(variable);

      //Serial.println(nThrottleIn);
      //Serial.println(variable);
      ulStartPeriod = 0;

      // tell loop we have a new signal on the throttle channel
      // we will not update nThrottleIn until loop sets
      // bNewThrottleSignal back to false
      bNewThrottleSignal = true;
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Messwert vom HMC5883L als Bargraph auf 1602LCD ausgeben bernte_one 11 2.110 06.10.2016 13:32
Letzter Beitrag: SkobyMobil
  PWM moduliertes Signal einlesen Kai H. 4 1.209 01.05.2016 09:22
Letzter Beitrag: Retian
  Aus einem schlechten Signal ein gutes Signal machen Gelegenheitsbastler 3 1.260 07.03.2015 14:07
Letzter Beitrag: HaWe
  RC-Empfänger PWM-Signale für Servoansteuerung einlesen do1xxy 2 4.164 15.07.2014 21:32
Letzter Beitrag: do1xxy
  Analoges Signal Eins-zu-Eins übertragen Stadtbilderklaerer 5 2.848 02.03.2014 18:41
Letzter Beitrag: Stadtbilderklaerer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste