1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
|
// bibliotheque telecomande
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
// bibli pour le compas
#include <Arduino.h>
#include <Wire.h>
#include <HMC5883L_Simple.h>
// easydriver step_moteur X
#define step_pinX 5
#define dir_pinX 4
#define MS1X 6
#define SLEEPX 7
// easydriver step_moteur Y
#define step_pinY 16
#define dir_pinY 17
#define MS1Y 15
#define SLEEPY 14
//moteur DC
#define ENABLE 10
#define DIRA 8
#define DIRB 9
// limite butoir
#define Limit01 18
#define Limit02 19
// objet compas
HMC5883L_Simple Compass;
int valeurs [5];
int step_speedX =10 ; // vitesse: plus le chiffre est haut moins ca va vite
int step_speedY =1;
void setup() {
//step moteur axe X
pinMode(MS1X, OUTPUT);
pinMode(dir_pinX, OUTPUT);
pinMode(step_pinX, OUTPUT);
pinMode(SLEEPX, OUTPUT);
//step moteur axe Y
pinMode(MS1Y, OUTPUT);
pinMode(dir_pinY, OUTPUT);
pinMode(step_pinY, OUTPUT);
pinMode(SLEEPY, OUTPUT);
// DC moteur mise au point
pinMode(ENABLE, OUTPUT);
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);
// limite de course pour axe X
pinMode(Limit01, INPUT);
pinMode(Limit02, INPUT);
digitalWrite(SLEEPX, HIGH); // reveil EasyDriverX
delay(5); // le temps de le reveiller*/
digitalWrite(SLEEPY, HIGH); // reveil EasyDriverY
delay(5); // le temps de le reveiller
digitalWrite(MS1X, LOW);
// Configuré en Full Steps
digitalWrite(MS1Y, LOW); // Configuré en Full Steps
//telecomande
Mirf.cePin = 48; //pin CE
Mirf.csnPin = 49; //pin CSN
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1");
Mirf.payload = sizeof(valeurs);
Mirf.config();
//compas
Wire.begin();
Compass.SetDeclination(15, 00, 'E');
Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_Y_NORTH);
}
void loop() {
// j'envois les valeurs du compas et du potar
valeurs [3] = Compass.GetHeadingDegrees();
valeurs [4] = analogRead(A3);
Mirf.setTADDR((byte *)"clie1");
Mirf.send((byte *) &valeurs);
while (Mirf.isSending());
// je recois les valeurs des deux joysticks
while (!Mirf.dataReady()){ }
Mirf.getData((byte *) &valeurs);
int joystick1X = valeurs [0];
int joystick1Y = valeurs [1];
int joystick2X = valeurs [2];
if ( joystick1X > 712) { // joystick n° 1 sur axe X
if (!digitalRead(Limit02)) {}
else {
digitalWrite(dir_pinX, LOW); // en avant (HIGH = arrière / LOW = avant)
digitalWrite(step_pinX, HIGH);
delay(10);
digitalWrite(step_pinX, LOW);
delay(10);
}
}
if ( joystick1X < 312) {
if (!digitalRead(Limit01)) {}
else {
digitalWrite(dir_pinX, HIGH);// en arrière
digitalWrite(step_pinX, HIGH);
delay(10);
digitalWrite(step_pinX, LOW);
delay(10);
}
}
if ( joystick1Y > 712)//joystick n°1 sur axe Y en avant
{
digitalWrite(dir_pinY, LOW);
digitalWrite(step_pinY, HIGH);
delay(1);
digitalWrite(step_pinY, LOW);
delay(1);
}
if ( joystick1Y < 312)// en arrière
{
digitalWrite(dir_pinY, HIGH);
digitalWrite(step_pinY, HIGH);
delay(1);
digitalWrite(step_pinY, LOW);
delay(1);
}
if ( joystick2X < 312) //joystick n° 2 sur axe X
{
Motor3Avant(255);
}
else if (joystick2X > 712 )
{
Motor3Arriere (255);
}
else
{
Motor3Stop();
}
}
void Motor3Avant ( byte Spd)
{
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
analogWrite(ENABLE, Spd);
}
void Motor3Arriere( byte Spd)
{
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, HIGH);
analogWrite(ENABLE, Spd);
}
void Motor3Stop()
{
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, LOW);
} |
Partager