Problème MEGA 2560

Bonjour à tous,
Je rencontre un problème, je dispose de deux carte arduino, 1 UNO R3, et une MEGA 2560 R2.

j'ai un code pour contrôler 3 servo moteurs que voici:

// 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 entré le même code dans les deux cartes.
Quand je test concrètement le code avec les potars et les servo, cela fonctionne parfaitement sur la UNO, mais sur la MEGA, rien ne bouge, ça ne veut rein savoir, les branchements ont bien sur été reproduit à l'identique, même broches utilisées et tout mais rien à faire.
J'ai bien préciser le type de carte dans le programme avant de téléverser.

Ma carte MEGA qui est HS ou c'est moi qui est loupé un truc?

Ma carte MEGA qui est HS ou c'est moi qui est loupé un truc?

As tu fais des tests élémentaires sur la carte Mega ?
En utilisant des bouts de programme tout petit et tout simple as-tu vérifié que les sorties incriminées changent normalement d'état qu'elles soient configurées en entrée ou en sortie, que la PWM fonctionne corectement, bref qu'avec des exemples simples la carte fonctionne.

C'est la première étape a passer avant d'aller chercher dans ton programme.

Merci 68tjs,

Alors ça c'est la meilleure, j'ai mis un code de clignotement de led.

int ledPin = 7; // LED connected to digital pin 7

void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}

Il n'y a que sur la pin 13 que la LED clignote.
Et que je déclare: ledPin = 7; ledPin = 8; 9, 10, 11, 12 rien à faire c'est toujours sur la 13 que ça fonctionne même quand elle n'est pas déclarée. par exemple le code si dessus, la pin7 et déclarée, c'est la 13 qui sera concernée, il y à un bug quelque part.

par exemple le code si dessus, la pin7 et déclarée, c'est la 13 qui sera concernée, il y à un bug quelque part.

Absolument mais c'est dans l'interface chaise-clavier qu'il se trouve le bug. :grin:

Réfléchi un peu !
Comment la diode pourrait s'éclairer si elle n'est pas reliée physiquement par un fil à la pin de commande !!
Ben oui il n'y a qu'une diode et elle est reliée à une seule pin, la 13.
Le schéma électrique de la carte Mega est disponible sur le site Arduino.

Vérifie les sorties avec un multimètre. Si tu n'en a pas va en acheter un (moins de 10€ en magasin de bricolage).
C'est un outil INDISPENSABLE

Tu peux aussi reboucler des pins entre elles:
example tu relie la 5 et 8

  1. 5 en sortie , 8 en entrée
  2. 5 a l'état H -> lecture de 8 -> affichage lecture dans le serial monitor
  3. 5 à l'état bas -> lecture de 8 -> affichage lecture dans le serial monitor
  4. permutation : 5 en entrée , 8 en sortie
    Même manip etat H ,B -> lecture dans le serial monitor ET pour toutes tes pins. Au moins tu saura si toutes les sorties fonctionnent encore.

Pour vérifier la PWM deux méthodes : avec un led extérieure + une résistance de 500 ohms en série : en fonction de la valeur de la PWM tu devrait voir la luminosité varier
ou au volmètre : en fonction de la valeur de la PWM tu devrait voir la valeur affichée varier.

Oups :astonished:
Non, c'est de ma faute, en fait le programme n'est pas rentré dan la carte. En effet, la carte est en COM3 et la déclaration sur le logiciel en COM1. Problème résolu.