Pages: [1]   Go Down
Author Topic: pin 0 ; pin 1 (rx&tx) en pinmode(input), probl  (Read 989 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
"plus ça rate, plus ça a de chance de réussir"
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour à tous,

je suis sur un projet 16out/3in numériques... le hardware marche impec, la partie logicielle pour les sorties aussi. Et, après avoir épluché les topics anglais/français et lu les references et un bouquin à fond, je bloque méchant : mes entrées digitals 0 et 1 (tx/rx) restent bloquées en position haute (~5v mesurée au multimètre) ; je n'utilise bien sur pas de communication série! et mon projet est alimenté de manière autonome...
ces deux entrées devrais me permettre de swicher sur 16 ensembles de chaines de données...
voilà le bout de code incriminé :

Code:
void setup()
{
 pinMode(0, INPUT); //data --
 pinMode(1, INPUT); //data ++
 pinMode(2, INPUT); // lancement séquence
 pinMode(3, INPUT); // *vide*
 pinMode(4, OUTPUT);  //led 1
 pinMode(5, OUTPUT);  //led 2
 pinMode(6, OUTPUT);  //led 3
 pinMode(7, OUTPUT);  //led 4
 pinMode(8, OUTPUT);  //led 5
 pinMode(9, OUTPUT);  //led 6
 pinMode(10, OUTPUT); //led 7
 pinMode(11, OUTPUT); //led 8
 pinMode(12, OUTPUT); //led 9
 pinMode(13, OUTPUT); //led 10
 pinMode(14, OUTPUT); //led 11
 pinMode(15, OUTPUT); //led 12
 pinMode(16, OUTPUT); //led 13
 pinMode(17, OUTPUT); //led 14
 pinMode(18, OUTPUT); //led 15
 pinMode(19, OUTPUT); //led 16
}

void loop()
{
  digi0=digitalRead(0);
  digi1=digitalRead(1);
  if (digi0==1)
  {
    if(data==1){data = 16;}
    else {data=data-1;};
    digitalWrite(data+3, HIGH);
    delay(250);
    digitalWrite(data+3, LOW);
  };
  if (digi1==1)
  {
    if(data==16){data=1;}
    else {data=data+1;};
    digitalWrite(data+3, HIGH);
    delay(250);
    digitalWrite(data+3, LOW);
  };
}


du coup j'ai l'affichage des leds correspondantes au n° de data qui défile sans s'arrêté...

une idée?

merci...!
« Last Edit: October 25, 2010, 08:55:28 am by jat » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Comment tu déclares tes pins (avant le setup) ?
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
&quot;plus ça rate, plus ça a de chance de réussir&quot;
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors j'ai du rater quelque chose...
avant le setup je n'ai déclaré que des variables et chaines dont j'aurais besoin. j'ai déjà réalisé quelques protos sans avoir à déclarer les pins en dehors du setup(), mais, par acquis de conscience je n'utilisais pas les fameuses E/S des pins 0 et 1 (car j'expérimentais avec l'alimentation usb du pc, et que je n'avais pas besoins d'autant d'E/S)...

comment peut-on alors les "forcer" à un état de repos bas? (j'ai encore fouillé qql heures et je craque un peu désolé...)

merci pour cette réponse rapide!
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tu es en "INPUT" normalement tu n'as pas à forcer l'état.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
&quot;plus ça rate, plus ça a de chance de réussir&quot;
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oui, c'est que je pensais, et j'ai shunté  mes 3 entrées à la masse avec des résistances de 18k (trop?) en mesurant au multi j'ai :

pin0:4.7V
pin1:5.1V
pin2:0V (avec celle là j'ai mon défilement de leds sans problème)
pin3:0.002V (non shunté)

j'ai retiré les variables 'digi0' et 'digi1', en utilisant directement digitalRead() ça fonctionne très bien (et je ne suis pas pour tout ces renommages, on s'embrouille vite...)

un ptit bout de code pour les mettre au pas ces deux pins?

merci de ton attention  smiley
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Normalement en suivant cet exemple ça devrait aller :

http://arduino.cc/en/Reference/DigitalRead
« Last Edit: October 25, 2010, 09:25:22 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
&quot;plus ça rate, plus ça a de chance de réussir&quot;
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci, mais j'ai déjà écumé tout les exemples fournis, digitalRead fonctionne parfaitement pour toute les pins 2 à 19 mais pas pour 0 et 1 qui reste à l'état haut même shunté à la masse, je vais tenté de réduire les résistances de shunt ou d'inverser l'utilisation de ces deux premières pins (action à l'état bas ; mais j'aime pas trop, ça consomme plus, c'est dangereux pour la platine et pas très élégant)

sinon je me rabat pour un défilement dans un seul sens (pas très agréable à l'usage) en utilisant la dernier pin disponible (pin3)

ça m'intrigue quand même... j'ai revu tout mon montage, soudures propres, contacts impeccables, résistances ok...
problème matériel sur la carte arduino?

merci quand même
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
&quot;plus ça rate, plus ça a de chance de réussir&quot;
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon, ça à l'air de fonctionner en inversion (mes deux poussoir mette à la masse pin0 et pin1, et permettent le défilement dans les deux sens quand digitalRead()=0) et je n'ai que qql mA de drain, donc pas dangereux pour la platine...

je reste toutefois dubitatif

:-?
Logged

Pages: [1]   Go Up
Jump to: