CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programmation Arduino

eracett
eracett
Niveau 1
13 mars 2016 à 23:48:58

Bonsoir je voudrai pour mon loisir programmer les déplacements d'un robot terrestre dont la direction serai contrôlée par un servomoteur (droite,gauche), et un moteur CC (avant;arrière).Je veux donc contrôler les déplacements du robot via un shield joystick (arduino) et je n'ai aucune idée du programme à effectuer (je débute ^^) si quelqu’un peut prendre le temps de le faire ou de m'expliquer (ou les deux :3) ça serai vraiment sympa merci d'avance.

Matériel :
-Carte Arduino UNO : http://www.gotronic.fr/arrt-carte-arduino-uno-12420.htm
-Shield joystick : http://www.gotronic.fr/art-shield-joystick-dfr0008-19254.htm
- le servomoteur est un servomoteur basique.
-le moteur CC : http://fr.rs-online.com/web/p/motoreducteurs-v-cc/2483867/
-le shield moteur : http://www.conrad.fr/ce/fr/product/678482/Motor-Power-Shield-pour-Arduino-kit-mont-Velleman-VMA03?ref=searchDetail

Tikim
Tikim
Niveau 21
14 mars 2016 à 05:36:14

Salut, apprends déjà à contrôler tes modules un par un avec du code. Ensuite réfléchis à une structure de programme, à ce que tu veux faire dans ta boucle. Pose le tout sur papier et commence à coder après.

L'idée générale c'est :
1 : Acquisition des entrées (Joystick)
2 : Calculs et algos sur les valeurs en entrées (calcul de la consigne moteur, servo)
3 : Donner la consigne aux actionneurs (Moteur, servo).

FreddyCouscous
FreddyCouscous
Niveau 10
14 mars 2016 à 10:35:31

Dans le matériel il te manque la structure (le squelette de ton robot). Peut être que tu l'as déjà..

Et également le plus important : l'alimentation. Les moteurs CC consomment pas mal, il faut réfléchir à la batterie. (piles, batterie lipo etc...).

Et après comme dit précédemment, tu peux commencer par voir indépendamment comment piloter tes moteurs.

Ici tu as un exemple d'utilisation d'un shield avec un joystick sur arduino :
http://www.dfrobot.com/wiki/index.php/Arduino_Input_Shield_%28SKU:_DFR0008%29

Je te conseil de commencer par le pilotage du servo-moteur. En effet, ce moteur ne consommant pas trop d'énergie, tu peux l'alimenter avec l'alimentation de la carte Arduino.

Ici tu vas trouver beaucoup d'explication sur le pilotage d'un servo-moteur avec l'Arduino:
http://eskimon.fr/287-arduino-602-un-moteur-qui-de-la-tete-le-servo-moteur

eracett
eracett
Niveau 1
15 mars 2016 à 22:23:57

Pour lalim du moteur et le squelette c'est ok j'ai réussis à faire tournezr le servomoteur de droite à gauche avec le joystick mais maintenant il faut faire avancer et reculer avec le moteur cc dans le meme programme et là je bloque

eracett
eracett
Niveau 1
15 mars 2016 à 22:38:50

Voici le programme n'hésitez pas si il est améliorable :
// --- Inclusion des librairies ---

  1. include <Servo.h> // librairie pour servomoteur

// --- Déclaration des constantes utiles ---
const int APPUI=LOW; // constante pour tester état BP

//--- Constantes utilisées avec le servomoteur
const int ANGLE_MIN=10; // angle position MIN en degrés
const int POS_MIN=600; // largeur impulsion pour position ANGLE_MIN degrés du servomoteur

const int ANGLE_MAX=170; // angle position MAX en degrés
int POS_MAX=2300; // largeur impulsion pour position ANGLE_MAX degrés du servomoteur

// --- Déclaration des constantes des broches E/S numériques ---

const int bpRouge=12; // Constante pour la broche 12
const int bpBleu=9; // Constante pour la broche 9
const int bpJoystick=5; // Constante pour la broche 5
const int broche_servo=6; // Constante pour la broche 6

// --- Déclaration des constantes des broches analogiques ---

const int axe1Joystick=2;
const int axe2Joystick=3;

// --- Déclaration des variables globales ---

int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int positionAxe1=2; // Variable pour acquisition résultat brut de conversion analogique numérique axe 1 Joystick
int positionAxe2=3; // Variable pour acquisition résultat brut de conversion analogique numérique axe 2 Joystick

int angleServo=180; // variable de position du servo en degrés

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

//--- Création objet servomoteur
Servo mon_servo; // crée un objet servo pour contrôler le servomoteur

void setup() { // debut de la fonction setup()

//--- Initialisation Servomoteur
mon_servo.attach(broche_servo); // attache l'objet servo à la broche de commande du servomoteur
//mon_servo.attach(broche_servo, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur avec calibrage auto

// ------- Broches en sorties numériques -------
pinMode (broche_servo,OUTPUT); // Broche broche_servo configurée en sortie

// ------- Broches en entrées numériques -------
pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
pinMode (bpBleu,INPUT); // Broche bpBleu configurée en entrée
pinMode (bpJoystick,INPUT); // Broche bpJoystick configurée en entrée

// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------

// Les BP du shield Joystick + BPx2 dispose d'un rappel au plus sur le shield

mon_servo.writeMicroseconds(angle(angleServo)); // crée impulsion à partir valeur angle - plus précis que write()

} // fin de la fonction setup()

void loop(){ // debut de la fonction loop()

//mesure_brute= analogRead(broche_analogique) ; // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée

// ----------- code type Shield Arduino Joystick + BPx2 ------

//----- lecture position Joytstick
positionAxe1=analogRead(axe1Joystick); // acquisition conversion analogique numérique sur broche analogique axe 1
positionAxe2=analogRead(axe2Joystick); // acquisition conversion analogique numérique sur broche analogique axe 2

if (positionAxe1>1000) {

angleServo=angleServo+1;

}

if (positionAxe1<400) {

angleServo=angleServo-1;

}

//---- lecture état des BP du shield Joystick
if (digitalRead(bpRouge)==APPUI) { // si appui BP rouge
angleServo=90; // positin médiane
}

if (digitalRead(bpBleu)==APPUI) { // si appui BP

}

if (digitalRead(bpJoystick)==APPUI) { // si appui BP joystick

}

//------------- mise à jour de la position du servomoteur ---
constrain(angleServo,0,180);
mon_servo.writeMicroseconds(angle(angleServo)); // crée impulsion à partir valeur angle - plus précis que write()
delay(10);

//while(1); // stop loop

} // fin de la fonction loop()

int angle(int valeur_angle) {

int impuls=0;
impuls=map(valeur_angle,ANGLE_MIN,ANGLE_MAX,POS_MIN, POS_MAX);
return impuls;

}

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment