Programmation Arduino sur servo SCS avec commande via Bouton

Ha ok, et bien aucune idée je ne connais pas. mais normalement c'est prévu après il faut peut être diminuer.. aucune idée ..

Merci pour votre réponse, mais juste je n'ai pas la possibilité de le décompresser car j'ai uniquement la possibilité de le compresser

sur la photo tu montre des fichiers ( .h ou ;c) qui ont déjà été décompressés, il est donc normal que ton système ne propose pas de les décompresser puisque c'est déjà fait ! on ne peut décompresser que ce qui est compressé....

Oui c'est exact.
Oui c'est exact.

Je viens de faire le test sur un PC et il se telecharge bien en zip .. J'ai également réussi à mettre la bibliothèque.

J'ai donc recommencé sur Mac et la manip est différente mais je pense avoir trouvé. une bonne chose de faite.

J'ai donc la librairie de mise

J'ai maintenant un message d'erreur quand sur chaque exemple :

exit status 1
'Serial1' was not declared in this scope

Salut,

tu as bien précisé que la cible était la carte Mega2560 avant de compiler ?

Salut, merci pour ta réponse :slight_smile:

Non je n'avais pas fait.. J'ai changé le Serial1 par Sérial et et et ça fonctionne :ok_hand:

Maintenant il faut que je programme en incluant le bouton :grinning:

J'ai trouvé des programmes mais je ne suis pas sur que soit les bons..

En gros je voudrais commande le servo via un bouton poussoir.
Quand j'appuis il tourne vers la gauche de 0° à 225°
et quand je rappuis il tourne vers la droite de 225° à 0°
et cela peut importe selon la duré d'impulsion (appuis longtemps ou pas sur le bouton)

Voila ça semble simple mais compliqué pour moi :slight_smile:

Avez vous des exemples ou autre à me communiquer ?

Merci pour votre aide :+1:

Je pense avoir trouvé un programme (Commande du servo-moteur par bouton poussoir)
qui semble très proche voir similaire. (Il faudra je pense revoir l'angle du servo..)

j'ai modifier le code pour adapter à mon cas le voici :

#include <SCServo.h>

const byte SERVO_A_ANGLE_MIN = 0;
const byte SERVO_A_ANGLE_MAX = 1;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX = 2;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN = 3;

const int angleMin = 1250;
const int angleMax = 1750;

SCServo SERVO;
int vitesse = 0;
int angle = angleMin;
byte etatServo = SERVO_A_ANGLE_MIN;

const int pinBouton = 8; /* le bouton est connecté à la broche A0 */

const boolean PRESSE = true;
const boolean RELACHE = false;

boolean etatBouton = RELACHE;

const byte AUCUN_EVENEMENT = 0;
const byte EVENEMENT_PRESSE = 1;
const byte EVENEMENT_RELACHE = 2;

/*

  • fonctions de gestion du poussoir
    */
    boolean lirePoussoir()
    {
    boolean resultat = RELACHE;
    if (analogRead(pinBouton) > 512) {
    resultat = PRESSE;
    }
    return resultat;
    }

byte lireEvenement()
{
byte evenement;
boolean nouvelEtat = lirePoussoir();
if (nouvelEtat == etatBouton)
evenement = AUCUN_EVENEMENT;
if (nouvelEtat == PRESSE && etatBouton == RELACHE)
evenement = EVENEMENT_PRESSE;
if (nouvelEtat == RELACHE && etatBouton == PRESSE)
evenement = EVENEMENT_RELACHE;
etatBouton = nouvelEtat;
return evenement;
}

/*

  • La fonction setup() est exécutée 1 fois
  • au démarrage du programme
    */
    void setup()
    {
    SCServo SERVO;
    }

/*

  • La fonction loop() est exécutée

  • répétitivement
    */
    void loop()
    {

    angle = angle + vitesse;

    if (angle > angleMax) {
    angle = angleMax;
    vitesse = 0;
    etatServo = SERVO_A_ANGLE_MAX;
    }
    else if (angle < angleMin) {
    angle = angleMin;
    vitesse = 0;
    etatServo = SERVO_A_ANGLE_MIN;
    }

    /* lecture de la commande de l'utilisateur */
    byte evenement = lireEvenement();

    if (evenement == EVENEMENT_PRESSE) {
    switch (etatServo) {
    case SERVO_A_ANGLE_MIN:
    case SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN:
    vitesse = 1;
    etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX;
    break;
    case SERVO_A_ANGLE_MAX:
    case SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX:
    vitesse = -1;
    etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN;
    break;
    }
    }

    delay(3);
    }

J'ai aucun message d'erreur lors du téléversment mais cela ne fonctionne pas... J'ai aucun réaction du servo le BP

Avez vous une idée sur le souci ?

Merci

Ceci aurait dû être lu avant de poser une question ! ! !

Présentes correctement ton code S'IL TE PLAIT !
Tel qu'il est, pas grand monde aura envie de le lire.

Avant de copier : Indenter dans l'IDE avec Control T
puis :
Copier le code avec les balises code </>

Pour modifier un message déjà publié il y a l'icône en forme de crayon.

Bonjour, je relance le sujet avec un exemple plus simple qui ne fonctionne pas. Il n'y a pas de message d'erreur mais ça ne reconnait pas le bouton donc le servo tourne tout seul .. Avez vous une idée de l'erreur ??
<
#include <SCServo.h>

SCServo SERVO; 

int bouton = 8;
int etatbouton = 0;
                                    
void setup() 
{

Serial.begin(1000000);
  SERVO.pSerial = &Serial;
  delay(500);
  SERVO.EnableTorque(1, 1);
}
 
void loop() {
  SERVO.WritePos(1,0, 1000);// Servo ID:1, tourner vers la position 0 en 3s
  delay(2000);
  SERVO.WritePos(1,1000, 1000);// Servo ID:1, tourner vers la position 1000 en 3s
  delay(2000);
}

Merci

Bonjour

oui : refuser de poster le code conformément aux règles établies pour ce forum :wink:

c'est mieux la??

Oui, tout à fait !! Merci.

Lee code est ainsi lisible et de plus avec la petite icône dans l'angle supérieur droit on peut facilement faire un copier coller pour le tester dans l'IDE Arduino.

Ha ok parfait désolé je suis novice. j'espère avoir de l'aide :slight_smile:

Ha ok parfait désolé je suis novice.
C''est en particulier pour le novices qu'u message important à été épinglé en tête de forum....

L'aide viendra très certaineemnt , mais il faut être patient et intégrer le fait que ton servo est très spécial , qu'il faut se plonger dans sa librairie pour comprendre le fonctionnement. !!!
Il ne s'agit pas du type de servo que tout un chacun ici utilise....

Tu as peut être activé par mégarde le fonctionnement en 'rotation continue' ?

Ton code n'e parait aps évoir de grosses différences avec l'exemple WritePos.ino d ela librairie
esssaies 0x0000 comme second paramètre de la fonction SERVO.WritePos au cas où....

Oui effectivement le servo est spécial .. et du coup ça ne me facilite pas la tache et étant tres novice ce n'est pas simple..

Dans la librairie il y a rien mise a part des exemples .. il faut que je pioche des codes sur le exemples, c'est comme cela qu'il faut faire ?

oui qu'il y a la rotation continue .. mais il faut savoir le lire :slight_smile:

Merci

Oui et toute personne cherchant à t'aider doit en passer par là ... sans avoir de quoi tester contrairement à toi !!
Pour ce servo nous sommes des 'novices sans matériel' !!

Ok donc pas simple l'histoire ...

Dans ton programme où vois tu le test de l'état du bouton ?
je n'en vois pas , l'atat du bouton n'a logiquement aucun effet sur les mouvements du servo
Ton souci ne vient pas de la getsion du servo , mais de celle du bouton !!

si il y a un forum mais il me donne des pistes de recherche mais j'ai besoin d'avancer plus vite.. ou il faut sorti les sous .. après je comprend c'est un métier :slight_smile:

Ajoutes à ton programme un test de l'état du bouton si tu veux conditionner les mouvements du moteur aux états du bouton......c'est la moindre des choses.....

En l'état du code le servo fait ce que tu lui demandes de faire, il bouge tout seul........

ok mais quoi mettre?