Pages: [1]   Go Down
Author Topic: I/O : Comment passer une variable en OUT ?  (Read 797 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous.
Je bloque dans mon apprentissage de la programmation sur Arduino Uno.

Je fais une lecture d'un capteur. (ici un accéléromètre... ça peut être autre chose je ne prends qu'une seule valeur; n'allons pas trop vite).
après modification (quelconque) pour pouvoir reconnaitre le signal en bout de chaine, je voudrais rediriger la valeur obtenue vers une sortie (un autre pin).
J'ai testé "pinMode()".
Mais je me perds entre les digitalRead(), digitalWrite(), analogRead() et analogWrite().

Voici la base du code ci-dessous
Code:
#define IN 0

  
void setup() {
  Serial.begin(9600);
  
}
  
void loop() {
  
  int In = analogRead(IN);
  
  int a = In / 10;  //***************** Modif complètement arbitraire pour m'entrainer
  int b = a * 10;   //***** et obtenir une valeur en rapport avec l'In mais différente
  
  Serial.print("IN= ");
  Serial.print(In);
  Serial.print("\t ");
  Serial.print("\t ");
  Serial.print("Modif= ");
  Serial.println(b);

}

Quelqu'un aurait une piste à me donner?
Merci d'avance.
« Last Edit: October 29, 2012, 08:10:33 am by IJKA » Logged

France
Offline Offline
Sr. Member
****
Karma: 2
Posts: 380
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Basiquement Il existe 2 façons pour 'lire' de valeurs sur l'arduino.

Des valeurs digitales par le biais des ports digitaux (D2 à D13) quand ils sont configurés en INPUT.

Une valeur digital ne donne que 2 états : LOW ou HIGH c'est binaire.

Des valeurs analogiques par le bias des convertisseurs analogiques (A0-A7) quand il sont configurés en input.

Dans ce cas (sur l'arduino) toute tension entre 0V et 5V retourne une valeur entre 0 et 1024.

Regarde tous les exemples sur le site, afin de commencer.
Logged

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

Merci Grag38.

J'ai bien compris cela.
Ce que je n'arrive pas à faire c'est assigner ma valeur (ici fluctuante) à une sortie, quitte à devoir la récupérer de nouveau pour vérifier que j'ai bien réussi...

J'ai fait un peu le tour autant chez Arduino que chez Processing, tout ce que je trouve comme exemple proche, c'est d'envoyer par une sortie Digitale un ordre (en d'autres termes) d'allumer/éteindre une diode pendant un certain laps de temps. En gros, Fermé - Ouvert.

Code:
Des valeurs analogiques par le bias des convertisseurs analogiques (A0-A7) quand il sont configurés en input.
C'est justement l'inverse que je veux faire.
Prendre le "b" (cf le code plus bas) et le renvoyer par exemple vers le A5.

Bien sur par la suite, je câblerai A5 à A3 (qui sera déclaré en entrée) pour vérifier que la valeur circule bien  smiley-eek.

Merci.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 332
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sur l'arduino, les sorties analogiques sont celles notés pwm.

tu les configure en faisant : pinMode(pin, OUTPUT);

et tu écris dessus avec  analogWrite(pin, val); //val se situant entre 0 et 255
Tu peux utiliser map() pour avoir un ratio entre 0 et 1024 fournis par des entrées analogiques (A0 à A5)

Les seules broches pouvant écrire en analogique sont les pin 3, 5, 6, 9, 10, et 11.
A0 à A5 ne sont des entrées analogique, mais peuvent servir aussi de sorties digitales
« Last Edit: October 29, 2012, 08:28:35 am by vohu » Logged

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

Merci.
ça m'éclaire beaucoup.

En somme, je déclare val = b et je transfère val grâce à analogWrite().
Je vais tenter ça.

Merci.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 332
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

tu as ici un exemple simple, règle la "puissance" d'une led, selon la lecture d'un variateur sur l'entrée analogique

oops, oublié le lien : http://www.arduino.cc/en/Reference/AnalogWrite
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 5045
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous.
Je bloque dans mon apprentissage de la programmation sur Arduino Uno.

Je fais une lecture d'un capteur. (ici un accéléromètre... ça peut être autre chose je ne prends qu'une seule valeur; n'allons pas trop vite).
après modification (quelconque) pour pouvoir reconnaitre le signal en bout de chaine, je voudrais rediriger la valeur obtenue vers une sortie (un autre pin).
J'ai testé "pinMode()".
Mais je me perds entre les digitalRead(), digitalWrite(), analogRead() et analogWrite().

...
bonjour
l'arduino uno de dispose en natif que de l'ADC (Analog to Digital Converter) sur une echelle de 10 bits (1024 points)
il ne dispose pas de "l'inverse" DAC (Digital to Analogic Converter)
la seule solution simple sans compo externes est celle de Vohu ADC---->PWM , cela implique une perte échantillonnage d'un facteur 3
si le process implique du vrai ADC--->process---->DAC , il faut passer par un DAC externe, il existe des solutions pas trop "compliquées" sur arduino uno
Logged

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

Quote
si le process implique du vrai ADC--->process---->DAC , il faut passer par un DAC externe, il existe des solutions pas trop "compliquées" sur arduino uno
Ha... Je débute, je vais d'abord me concentrer sur le langage et les possibilités de l'Arduino.
Si je dois passer par des solutions externes, il faut que ce soit plus que simple.

@ Vohu
Code:
tu as ici un exemple simple, règle la "puissance" d'une led, selon la lecture d'un variateur sur l'entrée analogique
J'ai testé ce exemple.
Il fait partie de ceux que j'ai lus et testés pour m'exercer, mais je n'arrive pas à l'adapter à mes besoins.

Je vais compléter le code jusqu'au moment où je sèche et je le posterai.

Merci à vous.
@tout'...
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3627
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comme l'explique Artouste, le PWM n'est pas un DAC, si tu nous disais ce que tu veux commander on pourrait directement te dire si c'est adapté ou pas
Logged


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

Quote
si tu nous disais ce que tu veux commander on pourrait directement te dire si c'est adapté ou pas

Bin... pour l'instant en réalité rien...  smiley-red J'essaie juste de comprendre comment tout ça fonctionne.
Par contre, comme je l'ai précisé plus tôt, c'est un accéléromètre que j'ai connecté. Parce que c'est  smiley-lol.
C'est le principe de fonctionnement qui m'intéresse.
En réalité, je n'ai pas encore de projet précis. Je voulais réparer mes pad PC (chose faite au passage) quand je suis tombé sur des tutos qui présentaient l'arduino et ses possibilités.
Comme je bricole un peu tout (mes pédales d'effets guitares et mes préamplis par exemple), j'ai pensé qu'il serait intéressant de comprendre comment fonctionne tout ça et voir par la suite ce que je pourrai en faire.

En fait, je viens de tester ceci.
j'ai d'abord utilisé les composants préconisés, puis j'ai remplacé le potard par l'accéléromètre.
J'ai maintenant compris comment rediriger les valeurs vers les sorties digitales.

Je vais donc réécrire mon code sur des bases plus claires.
Je le posterai ensuite.
Logged

Pages: [1]   Go Up
Jump to: