Show Posts
Pages: 1 ... 114 115 [116] 117 118 ... 237
1726  International / Français / Re: Photoresistance, laquelle choisir on: June 04, 2013, 02:12:01 pm
La detection du verre très fin va se faire ?

Car j'ai l'impression que c'est de l'infrarouge

J'ai voulu aussi conseillé l'infrarouge mais j'ai pas posté le message, c'est vrais que sa risque de passé a travers le verre vue que c'est de l'optique.., tu a la possibilité d'utilisé un capteur a ultrasons pour le verre fin.. a réfléchir
juste une remarque, le verre est opaque aux infrarouges. Seul l'infrarouge proche traverse le verre, au même titre que le reste du spectre visible d'ailleurs.
Cependant le problème de l'infrarouge c'est la sécurité oculaire.Encore que dans l'application il ne doit pas y avoir besoin de beaucoup de puissance.

Autre commentaire, si le faisceau laser rouge est "coupé" par le passage du récipient en verre ce n'est pas parce qu'il est occulté mais parce qu'il est diffracté (déviation du faisceau qui passe dans l'air puis dans le verre).
1727  International / Français / Re: Line Follower ++ on: June 02, 2013, 10:30:56 am
Quote
afin de maintenir le robot bien // (même écart à l'avant et à l'arrière)
En fait c'est un vrai besoin, un exercice de style ou une lubie?
1728  International / Français / Re: Line Follower ++ on: June 02, 2013, 08:18:53 am
Quote
La première idée qui me vient donc à l'esprit, serait d'utiliser 2 barres de capteurs (devant et derrière) afin de maintenir le robot bien // (même écart à l'avant et à l'arrière).
Donc des roues directrices à l'avant et à l'arrière. Pas simple à gérer tout ça.....
1729  International / Français / Re: J'ai besoin d'aide, c'est URGENT on: June 01, 2013, 08:44:33 am
Je suppose que c'est ce code qui fait tourner les servos de propulsion?
Code:
  { 
  servo1.write(n);
  servo2.write(180-n);
  }

n est initialisé à 0 au début et tu ne lui affectes jamais d'autre valeur donc pas étonnant que ton robot n'avance pas.
1730  International / Français / Re: 74HC595 newbie perdu on: May 31, 2013, 02:45:24 pm
Code:
void loop(){
 
  setOutput (LedVerte,0);
  writeRegisters(etatReg);  // tu n'avais pas mis l'argument à l'appel de cette fonction
  delay (500);
  setOutput (LedVerte,1);
  writeRegisters(etatReg);  // tu n'avais pas mis l'argument à l'appel de cette fonction
  delay (500);
  setOutput (LedOrange,1);
  writeRegisters(etatReg);  // tu n'avais pas mis l'argument à l'appel de cette fonction
}

D'autre part j'ai fait une petite erreur. Je ne voulais pas mettre writeRegisters dans cette fonction pour ne pas ralentir l'exécution si on appelait plusieurs fois de suite setOutput
Code:
void setOutput(byte pin, byte state){
byte mask;

mask=1 << pin; // décale le bit à la position occupée par la sorie à changer
if (state){ // si state est différent de zéro on allume
etatReg |= mask;
}else{ // si state==0 on éteind
etatReg &= ~mask;
}
                                              // <--- j'ai supprimé writeRegisters(etatReg);
}

Maintenant tu peux aussi ajouter quelques Serial.print dans les principales fonctions pour voir ce qui se passe et comprendre pourquoi le logiciel ne fonctionne pas comme attendu
1731  International / Français / Re: 74HC595 newbie perdu on: May 31, 2013, 10:13:42 am
Ton code est illisible.
Lorsque tu utilises la balise code, il ne faut pas mettre d'autre mise en forme toutes les balises sont ignorées.
1732  International / Français / Re: Incrémenter une valeur par un appui sur un bouton on: May 31, 2013, 05:51:31 am
Il faut tester l'appui pour faire plus un.
Faire une pause d'une dizaine de ms pour masquer les rebonds.
Attendre le relâcher du bouton avant de continuer.
1733  International / Français / Re: 74HC595 newbie perdu on: May 31, 2013, 01:49:23 am
Quelque chose comme ça devrait faire l'affaire
setOuput indique quelle sortie on change
writeRegisters assure le transfert dans le registre
Dans setup il faut appeler writeRegisters pour mettre les sorties à 0

Code:
byte etatReg=0;   // <--- variable globale

const byte LedVerte=0; // définition d'une sortie du registre à décalage
const byte LedOrange=1;
const byte LedRouge=2;

/*
Si on doit changer plusieurs sorties en même temps
on peut appeler setOuput plusieurs fois de suite
on ne lance qu'une fois writeRegisters
*/

/* setOutput(byte pin, byte state)
       Positionne la sortie n° pin du registre à la valeur state
   state = 0 on éteind
   state <> 0 on allume
*/
void setOutput(byte pin, byte state){
byte mask;

mask=1 << pin; // décale le bit à la position occupée par la sorie à changer
if (state){ // si state est différent de zéro on allume
etatReg |= mask;
}else{ // si state==0 on éteind
etatReg &= ~mask;
}
writeRegisters(etatReg)
}

// writeRegisters(byte valeur)
Transfère valeur dans un registre à décalage
Note: on suppose qu'il n'y a qu'un registre à décalage
donc la boucle va de 0 à 7
*/
void writeRegisters(byte valeur){
 byte tampon;
 
  tampon = valeur;
  digitalWrite(RCLK_Pin, LOW);
 
  for(int i = 7; i >=  0; i--){
    digitalWrite(SRCLK_Pin, LOW);
 
    digitalWrite(SER_Pin, tampon);
    digitalWrite(SRCLK_Pin, HIGH);
tampon >>= 1;
 
  }
  digitalWrite(RCLK_Pin, HIGH);
 
}
Code non testé mais l'idée est là
1734  International / Français / Re: Tension et anémomètre on: May 31, 2013, 01:21:21 am
Quote
Le front montant et descendant ne correspond pas à 0V ou +5V. Ils correspondent à 0.3V et 0.7V.
Ton problème est matériel pas logiciel, ce serait plus facile de t'aider si tu donnais les caractéristiques de l'anémomètre.
1735  International / Français / Re: Erreur compilation on: May 30, 2013, 02:22:23 pm
Quote
Comment puis-je vous faire parvenir le code?

Tu cliques sur Additional options... juste sous la fenêtre d'édition de ton message
et tu utilises le champs Attach pour attacher un fichier.
1736  International / Français / Re: 74HC595 newbie perdu on: May 30, 2013, 02:18:41 pm
Code:
void clearSortieLed(){
  for(int i = SortieLed - 1; i >=  0; i--){
     SortieLed = LOW;
  }
Je ne comprends pas très bien où tu veux en venir mais en tout cas ce code ne peut pas fonctionner.
SortieLed est un tableau. Tu ne peux donc pas l'utiliser comme tu le fais.
Soit tu utilises le pointeur SortieLed et à ce moment là tu accèdes aux éléments du tableau avec *
Code:
  maValeur = *SortieLed;
tu peux même faire une boucle
Code:
ptr= SortieLed;
i=0
{
    maValeur = *ptr;
    ptr++;
    ........
}while(++i<8)
Soit tu utilises un index
Code:
for (i=0; i<8;i++){
   maValeurSortieLed[i];
   .......
}
1737  International / Français / Re: Conversion Chaine de caractère vers Int on: May 30, 2013, 04:19:03 am
Quote
J'avais pensé a une fonction genre
Ligne = int(buf[ i]);
Mais deviné quoi... ça ne fonctionne pas.
Qu'est-ce qui ne fonctionne pas?
Tu ne reçois pas la valeur attendue? ou tu ne la reçois pas sous la forme attendue?
1738  International / Français / Re: abaisser la valeur d'un signal on: May 29, 2013, 04:20:24 am
Mais cela implique de toucher au shield comme tous ce que vous me proposez et bon... si je peu éviter.
Enfin changer une résistance c'est pas la mer à boire
1739  International / Français / Re: abaisser la valeur d'un signal on: May 28, 2013, 03:33:11 pm
Si tu regardes le schéma de ton shield sur le site de dfrobot, tu vois que les boutons sont montées sur une série de résistances qui constituent un pont diviseur.
Il suffit de remplacer la résistance R2 de 2k qui va au +5V afin de limiter la tension sur AD0 à moins de 1V. Je suggère quelque chose comme 27k ou 33k. Cela devrait donner un comportement sensiblement similaire à ce qui se passe lorsque la référence est de 5V
1740  International / Français / Re: Interruption sur Serial ? on: May 27, 2013, 08:45:56 am
Taille des messages échangés?
Débit?
Pages: 1 ... 114 115 [116] 117 118 ... 237