/*
--------------- by JediRick -----------------
boolean (8 bit) - [true/false]
byte (8 bit) - [0-255] unsigned number
char (8 bit) - [-128 to 127] signed number
unsigned char (8 bit) - [-128 to 127] signed number
word (16 bit) - [0-65535] unsigned number
unsigned int (16 bit) - [0-65535] unsigned number
int (16 bit) - [-32768 to 32767] signed number
unsigned long (32 bit) - [0-4,294,967,295] unsigned number usually for millis
long (32 bit) - [-2,147,483,648 to 2,147,483,647] signed number
float (32 bit) - [-3.4028235E38 to 3.4028235E38] signed number
uint8_t (8 bit) - [0-255] unsigned number
int8_t (8 bit) - [-127 - 127] signed number
uint16_t (16 bit) - [0-65,535] unsigned number
int16_t (16 bit) - [-32,768 - 32,767] signed number
uint32_t (32 bit) - [0-4,294,967,295] unsigned number
int32_t (32 bit) - [-2,147,483,648 - 2,147,483,647] signed number
uint64_t (64 bit) - [0-18,446,744,073,709,551,615] unsigned number
int64_t (64 bit) - [−9,223,372,036,854,775,808 - 9,223,372,036,854,775,807] signed number
--------------------------------------------
*/
#include <Servo.h>
#include <Stepper.h>
#define PIN_ANALOG_X 0 //Analog X Aelerons
#define PIN_ANALOG_Y 1 //Analog Y Elevators
#define PIN_ANALOG_Z 2 //Analog Z Rudder
#define PIN_ANALOG_T 3 //Analog T Throttle
const int stepsPerRevolution = 200; // steps per revolution
int maxAngle1 = 180; // max aeleron angle
int maxAngle2 = 180; // max aeleron angle
int maxAngle3 = 180; // max aeleron angle
int stepperRpm = 4000; // max engine rmp
int servoDelay = 50; // delay min 25
Servo myservo1, myservo2, myservo3; // create servo object to control a servo
Stepper myStepper(stepsPerRevolution, 4, 5, 6, 7); // create stepper
void setup() {
myservo1.attach(11); // attaches the servo on pin 9 to the servo object
myservo2.attach(10);
myservo3.attach(9);
myStepper.setSpeed(stepperRpm);
}
void loop() {
mapAxis();
}
void mapAxis() {
uint16_t joyX = analogRead(PIN_ANALOG_X);
uint16_t joyY = analogRead(PIN_ANALOG_Y);
uint16_t joyZ = analogRead(PIN_ANALOG_Z);
uint16_t joyT = analogRead(PIN_ANALOG_T);
uint16_t joyXmap = map(joyX, 0, 1023, 0, maxAngle1);
uint16_t joyYmap = map(joyY, 0, 1023, 0, maxAngle2);
uint16_t joyZmap = map(joyZ, 0, 1023, 0, maxAngle3);
uint16_t joyTmap = map(joyT, 0, 1023, 0, stepperRpm);
myservo1.write(joyXmap); // sets the servo position according to the mapped value
myservo2.write(joyYmap);
myservo3.write(joyZmap);
myStepper.setSpeed(joyTmap);
myStepper.step(10);
delay(servoDelay); // waits for the servo to get there
}