Code servomoteur/ moteur DC

Bonjour à tous.

Je débute en arduino et je souhaite réaliser un code me permettant de contrôler un servo moteur et un moteur DC via potentiomètre.
Le servo et le moteur seront connectés en sorties digitales pin 22 et 23 par exemple pour une arduino méga.
J'ai trouver sur le net un exemple d'utilisation d'un servo moteur contrôler par potar. J'ai donc pu voir qu'une bibliothèque était prévu à cet effet (servo).
Par contre pour le moteur DC, existe t'il une bibliothèque appropriée, ou bien je peu déclarer celui-ci comme un servomoteur? car le moteur est connecter à un L298 sans avoir besoin du contrôle de la vitesse (tout ou rien). Donc 4 pin seront utilisées pour ce moteur.
Pour la déclaration, si je prend se bout de code par exemple?

//analog 0
(def pot-pin 0)
//digital 22
(def servo-pin 22)
//analog 1
(def pot-pin 1)
//digital 23
(def motor-pin 23)

Bonjour,

Pour le L298 il n'existe pas de librairie, en fait c'est tellement simple qu'il n'y en a pas besoin :wink:

(voir en bas de page le tableau)

Servo directement branché à l'arduino ?

Yes, merci en effet c'est tip top :wink:
Donc pour les servos, je prend la bibliothèque "servo" #include <Servo.h>
Et pour le moteur "l298" je prend rien en compte juste la déclaration des pins.
Pour passer de #include <Servo.h> à autre chose comme contrôler des sorties digitales pour l298 pour le coup ou une LED par exemple,
il faut que je boucle la déclaration "servo" avant de déclarer les entrées/sortie d'autres éléments?
J'suis désoler, je commence juste.

Desoler B@tto, j'ai écrit le mesage en même temps.
Oui, le servo est connecter directement à l'arduino.

T'as vérifier si la conso est compatible ?

compatible??
par rapport à quoi? le servo via sorties digitale?

Les servo: Alimentation: 3-7,2V; Courant: 8mA (repos) - 350mA (à vide)
Les moteur: 12V DC; 120mA

Sinon, je vais les alimentés via une batterie.

J'ai trouver ce code pour contrôler deux moteurs via joystick, je peux le modifier afin de retirer le contrôle de vitesse et passer du tout ou rien?

/*
Contrôle de la base de robot au moyen d'un joystick
3-7 janvier 2012

*/

#define motorPin1a 3 // Marche avant du premier moteur
#define motorPin1b 4 // Marche arrière du premier moteur
#define speedPin1 9 // L293D enable pin pour le premier moteur
#define motorPin2a 5 // Marche avant du deuxième moteur
#define motorPin2b 6 // Marche arrière du deuxième moteur
#define speedPin2 10 // L293D enable pin pour le deuxième moteur
#define JoyStickPin1 1 //analog 1
#define JoyStickPin2 2 //analog 2

int Mspeed= 0;
int Mspeed1 = 0;
int Mspeed2 = 0;

unsigned long time;

void setup() {

// réglage des broches à output
pinMode(motorPin1a, OUTPUT);
pinMode(motorPin1b, OUTPUT);
pinMode(speedPin1, OUTPUT);
pinMode(motorPin2a, OUTPUT);
pinMode(motorPin2b, OUTPUT);
pinMode(speedPin2, OUTPUT);
}

void loop() {
Mspeed1 = (analogRead(JoyStickPin1)-511)/2;
Mspeed1 = Mspeed1 - (analogRead(JoyStickPin2)-511)/2;
if (Mspeed1 > 255) {
Mspeed1 = 255;
}
if (Mspeed1 < -255) {
Mspeed1 = -255;
}

Mspeed2 = (analogRead(JoyStickPin1)-511)/2;
Mspeed2 = Mspeed2 + (analogRead(JoyStickPin2)-511)/2;
if (Mspeed2 > 255) {
Mspeed2 = 255;
}
if (Mspeed2 < -255) {
Mspeed2 = -255;
}

if (Mspeed1 > 0) // donc marche arrière
{
analogWrite(speedPin1, abs(Mspeed1));
digitalWrite(motorPin1a, LOW);
digitalWrite(motorPin1b, HIGH);
}
else { // donc marche avant (ou repos)
analogWrite(speedPin1, abs(Mspeed1));
digitalWrite(motorPin1a, HIGH);
digitalWrite(motorPin1b, LOW);
}

if (Mspeed2 > 0) // donc marche arrière
{
analogWrite(speedPin2, abs(Mspeed2));
digitalWrite(motorPin2a, LOW);
digitalWrite(motorPin2b, HIGH);
}
else // donc marche avant (ou repos)
{
analogWrite(speedPin2, abs(Mspeed2));
digitalWrite(motorPin2a, HIGH);
digitalWrite(motorPin2b, LOW);
}
}

Et un autre pour controler 3 servos via potentiomètres:

// Contrôler la position de servomoteurs avec des potentiomètres (résistance variable)

#include <Servo.h>

Servo myservo1; // créer un objet servo 1 pour le contrôler
Servo myservo2; // créer un objet servo 2 pour le contrôler
Servo myservo3; // créer un objet servo 3 pour le contrôler

int potpin1 = 0; // borne analogique pour connecter le potentiomètre 1
int potpin2 = 1; // borne analogique pour connecter le potentiomètre 2
int potpin3 = 2; // borne analogique pour connecter le potentiomètre 3
int val1; // variable pour stocker la valeur du potentiomètre 1
int val2; // variable pour stocker la valeur du potentiomètre 2
int val3; // variable pour stocker la valeur du potentiomètre 3

void setup()
{
myservo1.attach(9); // brancher le servomoteurs 1 sur l'entrée 9
myservo2.attach(10); // brancher le servomoteurs 2 sur l'entrée 10
myservo3.attach(11); // brancher le servomoteurs 3 sur l'entrée 11
}

void loop()
{
val1 = analogRead(potpin1); // lire la valeur du potentiomètre 1
val1 = map(val1, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
val2 = analogRead(potpin2); // lire la valeur du potentiomètre 2
val2 = map(val2, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
val3 = analogRead(potpin3); // lire la valeur du potentiomètre 3
val3 = map(val3, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
myservo1.write(val1); // mettre le servomoteur 1 dans la bonne position
myservo2.write(val2); // mettre le servomoteur 2 dans la bonne position
myservo3.write(val3); // mettre le servomoteur 3 dans la bonne position
delay(5); // attendre que les servomoteurs aillent dans leur position
}

J'ai pile poil 3 servo à contrôler, je pensais les connecter au broches digitales, ou au pwm (au mieux)
Pour bien faire, il me faudrait une "fusion" de ces deux code.

Pour les moteurs il faudra une alimentation externe :wink:

Yes, :wink:

J'ai essayer de faire un code pour contrôler deux moteurs DC avec L298 et deux potentiomètres (1 joystick X, Y) . En tout ou rien.
Vous parait il correcte?
Donc c'est pour une Mega le L293 est sur les broches digitales 22; 23; 24 et 25

#define motorPin1a 22 // corespond à la broche 22 digitale , moteur 1 marche AV
#define motorPin1b 23 // corespond à la broche 23 digitale, moteur 1 marche AR
#define motorPin2a 24 // corespond à la broche 24 digitale , moteur 2 marche AV
#define motorPin2b 25 // corespond à la broche 25 digitale, moteur 2 marche AR

int sensorPin1 = A0; // Joystick x entrée analog
int sensorPin2 = A1; // Joystick y entrée analog
int sensorValue = 0; // variablble to store from the sensor

void setup() {
// declare the ledPin as an OUTPUT:
pinMode(motorPin1a , OUTPUT);
pinMode(motorPin1b , OUTPUT);
pinMode(motorPin2a , OUTPUT);
pinMode(motorPin2b , OUTPUT);
}

void loop () {
sensorValue = analogRead(sensorPin1);

if (sensorValue> 150){
//marhe avant
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin1a , HIGH);
} else
if (sensorValue< 100) {
//marhe arriere
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , HIGH);
}
else {
//stop
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , LOW);
}

sensorValue = analogRead(sensorPin2);

if (sensorValue> 150) {
//marche AV
digitalWrite(motorPin2b , LOW);
digitalWrite(motorPin2a , HIGH);
} else
if (sensorValue< 100) {
//marche AR
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , HIGH);
}
else {
//stop
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , LOW);
}
}