Pages: [1]   Go Down
Author Topic: récupéré la valeur d’une pin de sortie  (Read 646 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Je suis débutant dans la programmation et l’utilisation des cartes arduino.
Mon souci et le suivant je voudrais récupéré la valeur d’une pin de sortie dans mon programme.
La sortie est une sortie pour un servo qui je voudrais convertir vers une sortie analogique (0 a 5 volts).
 Sur ma carte Mega les sorties 2,3,4,5,6,7 sont pour 6 servo et les sorties de 8 a 13 sont pour analogique.
La sortie 2 (servo) je voudrais la convertir en sortie analogique 8.
Voici mon programme il fonctionne, mais avec des à-coups.
Quel un a une solution ou une idée à mon souci ???

Bien a vous, Charles
Code:

const int servo_pin[] = {2, 3, 4, 5, 6, 7}, servo_zero[6] = {1500, 1500, 1500, 1500, 1500, 1500}, servo_mult = 750;
double eb[6] = {0,0,0,0,0,0}, theta_s[6], servo_pos[6], ub[3], a, b, c;
char dataType;
Servo servo[6];
void setup()
{
Serial.begin(115200);
 for(int i = 0; i < 6; i++)
  {
    servo[i].attach(servo_pin[i]);
    servo[i].writeMicroseconds(servo_zero[i]);
  }
  delay(100);
}

void loop()
{
   unsigned long pulseLength1;
   pulseLength1 = constrain(pulseIn( (2), HIGH), 1000, 2000);
   int pulseLength = map(pulseLength1, 1000, 2000, 0, 255);
« Last Edit: March 14, 2013, 11:22:29 am by Jean-François » Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 72
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai un peu de mal à comprendre :
Dans ton programme, tu lis ce qui se trouve sur la pin 2 sur laquelle est branché  un servo?

Merci de préciser

A+
Olivier
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Dessole pour cette réponse tardive.
Le programme à l’origine est prévu pour des RCservo.
Personnellement je cherche une façon pour pouvoir convertir le signal servo  vers une valeur analogique
pin 2 a 7  = sortie servo  (const int servo_pin[] = {2, 3, 4, 5, 6, 7}) vers 6 valeur analogique
 autrement dit
« va lire la valeur sur pin 2 est converti la vers une valeur analogique »
Bien a vous Charles
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai pas tout compris mais en gros tu veut faire de la conversion numérique -> analogique ?
Mais dans ce cas là pourquoi lit tu sur une sortie ? Je comprend pas ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Mais dans ce cas là pourquoi lit tu sur une sortie ? Je comprend pas ...
Tu n'es pas tout seul. La seule raison que je vois est de vouloir contrôler ce qui sort du micro.

Prenons le problème différemment :  Quel est le format d'une sortie servo ?

Je ne me suis jamais servi de ces bébetes, j'ai cru comprendre qu'il fallait leur envoyer des impulsions selon une période fixe, la largeur de l'impulsion définissant l'angle désiré.
Ai-je bon ?
Si oui il doit exister une norme, peut-on avoir des valeurs :
Période = ? ms
45° = ? ms
90°= ? ms
135°= ? ms
180° = ? ms
et la suite pour ceux qui font 360°.

La connaissance précise du format des commandes permettra de voir si l'objectif peut être atteint.
Logged

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

un schéma parlant mieux qu'un long discours:

http://fribotte.free.fr/bdtech/pic/pic_et_servo.html

la norme est loin d'être "normalisée" smiley-lol
Suivant les marques, les modèles...
rotation totale sur 180°, 200°, et plus.. à tester très progressivement en allongeant ou raccourcissant l'impulsion (attention à la mécanique, il y a une butée!!)

Les servos à rotation continue ont une résistance fixe à la place du potard et n'ont plus de butée.
Une impulsion d'environ 1.5ms commande l'arrêt. (parfois tremblotant....)
En s'éloignant de ce point neutre d'un côté ou de l'autre, il tourne dans un sens ou l'autre. Plus on s'éloigne plus il tourne vite (max environ 60rpm)
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3435
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait ce que je ne comprends pas c'est que si j'en crois le morceau de code que tu donnes dans ton premier poste, tu pilotes toi même les servo donc tu connais la valeur de l'impulsion. Donc pourquoi la mesurer????
Je pense que tu n'as pas tout dit et ton besoin est un peu (voir beaucoup) obscure.
Logged

Pages: [1]   Go Up
Jump to: