maandag 25 juni 2012

cc+ programma aansturing thrust systeem


/*     -------------------------------------------------------------
 *     |        aansturing thrust motor                             |
 *     |          mark goeman                                       |
 *     -------------------------------------------------------------
 */


int motorPin  = 9;          // PWM signaal pin.
int relaisPin = 10;         // ompool relay uitgang 10                
int RCPort    = 14;         // ingang van PPM signaal.

int speed1    = 0;          // op slaan variabele
unsigned long puls = 0;     //



void setup()
{
  pinMode(relaisPin, OUTPUT);              // uitgang relay 10
  pinMode(motorPin,  OUTPUT);              // uitgang PWM signaal 9
  pinMode(RCPort,     INPUT);              // ingang rc poort
  }


/*
 *
 */

void loop()                                 //
{  
  int timepulsf  = 1000;                    // maximale puls voorwaarts
  int timepulsr  = 2000;                    // maximale puls achterwaarts
  int nulpuntmin = 1450;                    // laagste waarde vooruit
  int nulpuntmax = 1600;                    // hoogste waarde achteruit                      
  int maxspeed   = 250;                     // maximale snelheid vooruit (1040)
  int maxreverse = 150;                     // maximale snelheid achteruit (1945)
  int val1= 0;                              // variable opslag
  int val2 = 0;                             // variable opslag
  int valf = 0;                             // variable opslag
  int valr = 0;                             // variable opslag

  puls = pulseIn(RCPort, HIGH, 20000);      // puls van ontvanger

  val1 = map(valf,0,1024,0,200);
 
  if (puls < timepulsf || puls > timepulsr) // geen signaal
  {
    digitalWrite(relaisPin, LOW);           // relay niet bekrachtiginen );
    analogWrite(motorPin,   LOW);           // stop de motor);
   
    }
   
 
  else
  {
    if(puls > nulpuntmax)
    {
      speed1 = map(puls,nulpuntmax,timepulsr,0,maxreverse-val2);  // snelheid achteruit );
      digitalWrite(relaisPin, HIGH);        // ompolen motor );
   
      analogWrite(motorPin, speed1);        // snelheid motor);
    }
    else if(puls < nulpuntmin)
    {
      speed1 = map(puls,nulpuntmin,timepulsf,0,maxspeed-val1);  // snelehid vooruit);
      digitalWrite(relaisPin,  LOW);        // relay niet bekrachtiginen );
      analogWrite(motorPin, speed1);        // snelheid motor vooruit );
    }
    else
    {
      speed1 = map(puls, nulpuntmin,nulpuntmax,0,0);  // stilstand = 0);
      digitalWrite(relaisPin, LOW);         // relay uit );
            analogWrite(motorPin, speed1);        // stop de motor);
    }
  }
}

Geen opmerkingen:

Een reactie posten