Post by Regina on Dec 17, 2014 3:00:27 GMT -8
Hi
I ve a trooble with a detach fuction disposition
I try to cmd a 6 degres robotic arm DaGu and i have to signal that i m beguinner
But After longs researches alone i ve to ask you my question if you ols to respond
The base is a servo moyor
Directed by a arduino uno card with a Grove shield and 3 joysticks and to finish one IO expansion Shield for arduino SKU DFR0265
after a turn of move detectection of the joystick of the second servo (by ex) i would detach it to stop further mouvement inopinate determinated by a detectecion on one oyher servo
the listing (a part su-implyfied) where i bug is at the end of the message
The red part is not compilable but indicated on all my didacticals books
Could anybody help me ? Thanks
Eric
// --- Programme Arduino ---
// par X. HINAULT - 02/2010
// www.mon-club-elec.fr
// --- Que fait ce programme ? ---
// Positionne 6 Servomoteurs à l'aide de joystick faisant office de resistance variable
// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0 à 5,
// Utilise les Servomoteurs en sorties analogiques PVM pour Arduino Uno
// --- Circuit à réaliser ---
// Connecter sur les broches PVM (configurée en sortie) les broches de commande de 6 Servomoteurs.
// Broche Analog 0 à 5(=broche 0 à 5) en entrée Analogique :
// connecter la sortie de 3 joysticks x/y résistance variable de 0 à 10k ohms connectée entre entrée et 5V.
// externes
//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...
// --- Inclusion des librairies utilisées ---
#include <Servo.h> // librairie pour Servomoteur
// --- Déclaration des constantes ---
const int POS_MIN=210; // largeur impulsion pour position 0° Servomoteur
// POS_MIN=400 pour Servo
const int POS_MAX=795; // largeur impulsion pour position 180° Servomoteur
// --- Déclaration des variangle_Servoables globales ---es des broches ---
// POS_MAS=1900 pour Servo
int angle_Servo2 = 90 ; // variable pour angle du Servomoteur
Servo mon_Servo2;
int variation_corrigee = 0 ; // variation du joystick atténuée
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
// --- ici instructions à exécuter au démarrage ---
mon_Servo2.attach((5), POS_MIN, POS_MAX); // attache l'objet Servo à la broche de commande du Servomoteur 0 à 6
pinMode((5), OUTPUT); // Place les Servos 7 à 12 en sortie
mon_Servo2.write(angle_Servo2); // Place les Servos au milieu
// ------- Broches en entrée -------
// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------
} // fin de la fonction setup()
// ********************************************************************************
//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop() {
// debut de la fonction loop()
// --- ici instructions à exécuter par le programme principal ---
// acquisition conversion analogique numérique (100µs env.)
// effectue les operatiosn sur les 6 seervos
// Servo 2
pinMode(A2, INPUT); //met la broche du joystick en entrée
variation_corrigee = map(analogRead(A2),0,1024,-20,20); // corrige la variation de mouvement
variation_corrigee = variation_corrigee + 8 ;
if ((variation_corrigee<0) || (variation_corrigee>0)) {
angle_Servo2 = angle_Servo2 + variation_corrigee ; // Angle Servo demandé
pinMode((6), OUTPUT);
mon_Servo2.attach((6), POS_MIN, POS_MAX);
// attache l'objet Servo à la broche de commande du Servomoteur
mon_Servo2.write(angle_Servo2); // positionne le Servo à l'angle voulu si dans les plages voulues
}
if (angle_Servo2<20) { angle_Servo2=20; }
if (angle_Servo2>160) { angle_Servo2=160; }
mon_Servo2.detach(6);
}
I ve a trooble with a detach fuction disposition
I try to cmd a 6 degres robotic arm DaGu and i have to signal that i m beguinner
But After longs researches alone i ve to ask you my question if you ols to respond
The base is a servo moyor
Directed by a arduino uno card with a Grove shield and 3 joysticks and to finish one IO expansion Shield for arduino SKU DFR0265
after a turn of move detectection of the joystick of the second servo (by ex) i would detach it to stop further mouvement inopinate determinated by a detectecion on one oyher servo
the listing (a part su-implyfied) where i bug is at the end of the message
The red part is not compilable but indicated on all my didacticals books
Could anybody help me ? Thanks
Eric
// --- Programme Arduino ---
// par X. HINAULT - 02/2010
// www.mon-club-elec.fr
// --- Que fait ce programme ? ---
// Positionne 6 Servomoteurs à l'aide de joystick faisant office de resistance variable
// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0 à 5,
// Utilise les Servomoteurs en sorties analogiques PVM pour Arduino Uno
// --- Circuit à réaliser ---
// Connecter sur les broches PVM (configurée en sortie) les broches de commande de 6 Servomoteurs.
// Broche Analog 0 à 5(=broche 0 à 5) en entrée Analogique :
// connecter la sortie de 3 joysticks x/y résistance variable de 0 à 10k ohms connectée entre entrée et 5V.
// externes
//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...
// --- Inclusion des librairies utilisées ---
#include <Servo.h> // librairie pour Servomoteur
// --- Déclaration des constantes ---
const int POS_MIN=210; // largeur impulsion pour position 0° Servomoteur
// POS_MIN=400 pour Servo
const int POS_MAX=795; // largeur impulsion pour position 180° Servomoteur
// --- Déclaration des variangle_Servoables globales ---es des broches ---
// POS_MAS=1900 pour Servo
int angle_Servo2 = 90 ; // variable pour angle du Servomoteur
Servo mon_Servo2;
int variation_corrigee = 0 ; // variation du joystick atténuée
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
// --- ici instructions à exécuter au démarrage ---
mon_Servo2.attach((5), POS_MIN, POS_MAX); // attache l'objet Servo à la broche de commande du Servomoteur 0 à 6
pinMode((5), OUTPUT); // Place les Servos 7 à 12 en sortie
mon_Servo2.write(angle_Servo2); // Place les Servos au milieu
// ------- Broches en entrée -------
// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------
} // fin de la fonction setup()
// ********************************************************************************
//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop() {
// debut de la fonction loop()
// --- ici instructions à exécuter par le programme principal ---
// acquisition conversion analogique numérique (100µs env.)
// effectue les operatiosn sur les 6 seervos
// Servo 2
pinMode(A2, INPUT); //met la broche du joystick en entrée
variation_corrigee = map(analogRead(A2),0,1024,-20,20); // corrige la variation de mouvement
variation_corrigee = variation_corrigee + 8 ;
if ((variation_corrigee<0) || (variation_corrigee>0)) {
angle_Servo2 = angle_Servo2 + variation_corrigee ; // Angle Servo demandé
pinMode((6), OUTPUT);
mon_Servo2.attach((6), POS_MIN, POS_MAX);
// attache l'objet Servo à la broche de commande du Servomoteur
mon_Servo2.write(angle_Servo2); // positionne le Servo à l'angle voulu si dans les plages voulues
}
if (angle_Servo2<20) { angle_Servo2=20; }
if (angle_Servo2>160) { angle_Servo2=160; }
mon_Servo2.detach(6);
}