Go Down

Topic: Intensité et temps minimums en analogique ? (Read 12759 times) previous topic - next topic

icare

Bonjour,
Tu peux remplacer :
Code: [Select]
void setup(){
//  pinMode( BP_pin , OUTPUT);   // inutile je pense (moi aussi, alors on vire)
  pinMode( BP_pin , INPUT);
  digitalWrite( BP_pin , HIGH );    // c'est ici qu'il faut le faire. la pin 1 étant en input, ça active la pull-up (une résistance entre l'entrée et VCC)
}

par :
Code: [Select]
void setup(){
//  pinMode( BP_pin , OUTPUT);   // inutile je pense (moi aussi, alors on vire)
//  pinMode( BP_pin , INPUT);
//  digitalWrite( BP_pin , HIGH );    // c'est ici qu'il faut le faire. la pin 1 étant en input, ça active la pull-up (une résistance entre l'entrée et VCC)
  pinMode( BP_pin , INPUT_PULLUP);
}

@+
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

Super_Cinci

#31
Nov 08, 2013, 11:29 am Last Edit: Nov 08, 2013, 02:08 pm by Super_Cinci Reason: 1
Que le code soit dans un if ou pas, ça ne change absolument rien, car une fois compilé, le if est tranformé en un branch (équivalant au goto du basic).
Code: [Select]

if (a==b){
instructions1...
}
instructions2...
deviendra à la compilation :
Code: [Select]

comparer a et b
si différent, aller directement à "instructions2"  // sous-entendu : sinon, continuer
instructions1...
instructions2...

et encore, je ne t'ai pas parlé d'assembleur (ce qu'il faudrait commencer par apprendre avant de jouer avec les langages évoulés... mais trop tard dans ton cas, c'est désespéré!). l'assembleur ne connaît pas les if, il ne sait que comparer, et sauter d'une ligne de code à une autre. XD ==> []

Code: [Select]

while(a!=b){}  // tourner en rond en attendant qu'ils soient égaux
instructions1...
sera compilé en
Code: [Select]

comparer a et b
si différent, retourner à la ligne précédente  // sous-entendu : sinon, continuer
instructions1...

une fois compilé, ça ne change pas grand chose... (bon, je vais essayer de faire un effort pour pas fusiller ton neurone). heu, je viens de voir la participation d'icare, je t'assure que je n'y suis pour rien, même si ça me fait déjà marrer d'avance ;)


Super_Cinci: De grâce, ne nous rajoute pas des instructions subsidiaires...On a déjà les neurones qui frisent avec le code "de base".
Si en plus tu en as plusieurs, ce n'est que mieux!
c'est comme le mauvais vin, la première gorgée est dure à avaler, puis plus tard, on s'y fait ;)
Je n'ai rien rajouté, juste corrigé ;) le pinMode(OUTPUT), c'est toi qui l'avais mis!

Concernant: "la petite ampoule et l'alim 500mA"; avec lesquelles tu pense ne pas risquer grand chose:
Détrompe toi; tu risque "gros". J'ai commencé comme ça, à peu près au même âge que ta musaraigne.
.....Et la soudure coûte cher....
Tu veux dire qu'elle va devenir comme toi? Boarf, si elle est capable en 2027 d'écrire sans faire de fautes, alors oui, je veux bien! (pis pour l'instant, à part tes référence au basic, tu caches bien tes défauts ;) )

Carolyne

#32
Nov 08, 2013, 02:46 pm Last Edit: Nov 08, 2013, 02:49 pm by Carolyne Reason: 1
Quote
Que le code soit dans un if ou pas, ça ne change absolument rien, car une fois compilé, le if est tranformé en un branch.


Sans doute... Mais dans le code sous sa forme "écrite", tout le code sera bien dans le bloc du if. Et on va se retrouver à la fin avec une fermante de "Out of no where" située à un kilomètre de ce dont au sujet duquel elle se rapporte. Capitch ?
Je signale que je ne comprends pas encore tout ce que je fais avec le "C", et C bien ça le problème.
J'essaie un bout, je vois ce que ça donne et je tire les conclusions. Le "OUTPUT" il est venu avec le "INPUT" (il devait bien servir à quelque chose là où je l'ai pris.) Pas ma faute si les mecs ne nettoient pas leurs codes.

Quote
et encore, je ne t'ai pas parlé d'assembleur

On ne parle pas de ce qui fâche. Je me suis assez explosé le cerveau sur des "crackme's" de psychopathes; alors: Jumping! Jack...Flash!
Je demanderais bien la différence qu'il y a entre: "INPUT", et: "INPUT_PULLUP"; mais je crains de vous désespérer sur mon cas. ( "normalement"^^,  le souligné, c'est dans les noms de variables, donc d'après moi, y'en a pas.) wtf?

Quote
à part tes référence au basic

Le basic est le plus merveilleux des langages. Dommage qu'il soit un peu lent et un peu limité (enfin...un peu beaucoup.)
Dans les deux affirmations suivantes:
"tourner en rond en attendant qu'ils soient égaux" et; "si égaux, retourner à la ligne précédente"
D'après moi, y'a un os.
N'essayez pas de m'embrouiller...Je vous ai à l'oeil !

Super_Cinci

#33
Nov 08, 2013, 02:57 pm Last Edit: Nov 08, 2013, 02:59 pm by Super_Cinci Reason: 1

quelque chose là où je l'ai pris.) Pas ma faute si les mecs ne nettoient pas leurs codes.

prends des codes de gonzesse alors! Nous les mecs on a déjà du mal à nettoyer nos chi*tes, alors les codes... mais c'est bourré de fleurs et petits coeurs, moins facile à lire...

Je demanderais bien la différence qu'il y a entre: "INPUT", et: "INPUT_PULLUP"; mais je crains de vous désespérer sur mon cas. ( "normalement"^^,  le souligné, c'est dans les noms de variables, donc d'après moi, y'en a pas.) wtf?

Code: [Select]

pinMode(10, INPUT_PULLUP);
// réunit les deux lignes suivantes :
pinMode(10, INPUT);
digitalWrite(10, HIGH);
// c'est un raccourcis en quelque sorte.


Le basic est le plus merveilleux des langages. Dommage qu'il soit un peu lent et un peu limité (enfin...un peu beaucoup.)

tu aurais dû naître 30 ans plus tôt ;)

Dans les deux affirmations suivantes:
"tourner en rond en attendant qu'ils soient égaux" et; "si égaux, retourner à la ligne précédente"
D'après moi, y'a un os.
N'essayez pas de m'embrouiller...Je vous ai à l'oeil !
une coquille oui, mais j'ai corrigé entre temps, désolé, pamafot, oups, et plus si je puis me permettre. il faut lire "si différent, retourn..." mais au moins, ça prouve que tu suis, donc je hais... et bravo !  :smiley-mr-green:

MaximeFr59

#34
Nov 08, 2013, 04:54 pm Last Edit: Nov 08, 2013, 05:00 pm by MaximeFr59 Reason: 1
Quote
le code sera bien dans le bloc du if


Pour que le code soit plus lisible, tu peut utiliser des fonctions:

Code: [Select]

void maFonction1()
{
liste d'instructions...
return;
}

void maFonction2()
{
liste d'instructions...
return;
}

int maFonction3(int parametre1)
{
int result = 0;
liste d'instruction...
return result;
}

void loop()
{
   if (conditions)
   {
   int maVariable;
   maFonction1();
   maFonction2();
   maVariable = maFonction3(123);
   }

}



De cette manière tu ne fais appel qu'a des fonctions dans un bloc if, le code sera beaucoup plus lisible ;)

Super_Cinci

#35
Nov 08, 2013, 05:25 pm Last Edit: Nov 08, 2013, 05:27 pm by Super_Cinci Reason: 1
la meilleure solution, c'est de faire une mise en page. l'EDI arduino le permet facilement, car il conserve les espaces de début de ligne. ainsi, à chaque fois qu'on ouvre un crochet (bloc d'instructions), on décale de 2 espaces (ou tabulations, mais les tabulations ne sont pas forcément interprétées de la même façon suivant l'éditeur : selon l'humeur...),

Code: [Select]

void loop(){
  instruction;
  if (test) {
    action;
    instruction;
    while(test2){
      instruction;
      action;
    }
  } else {
    instruction;
    for (i = O; i < 10; i++){
      if(test3){
        action;
        instruction;
        appel_fonction();
      }
    }
  }
}


C'est comme ça que je fais et je m'y retrouve, même sur des blocs de plusieurs centaines de lignes, il arrive que j'ai 20 ou 40 espaces en tête d'une ligne...

A chacun son truc... la mise en fonction, c'est bien, mais ne pas oublier que ça prend pas mal de mémoire à chaque appel et peut devenir assez ralentissant si on a besoin de vitesse.

Carolyne

Les fonctions c'est pas facile.
L'indentation, je la fait, même en basic (et en python elle est obligatoire, même que c'est une sacré m***e entre les espaces et les tabulations.)
Pour ça: pinMode(10, INPUT_PULLUP) Le souligné (_) n'est pas dans la doc de ref du "C".
C'est spécial à Arduino ?
Il faut vraiment qu'ils fassent une version html téléchargeable de la doc de ref "Arduino". (avec tout le pognon qu'on leur laisse...)
HTTrack m'a remmené que des liens ripoux et des: "forbiden". Je vais retenter avec le réglage qui tue.
40 espaces d'indentation !!!! Pfiou!!!!!!!!!!

haifger


Il faut vraiment qu'ils fassent une version html téléchargeable de la doc de ref "Arduino". (avec tout le pognon qu'on leur laisse...)

Ça n'est peut-être pas valable pour tous les systèmes (et je ne sais pas lequel tu utilises) mais sur les systèmes de type Debian et dérivés, l'installation du paquet arduino-core place une copie de la doc html dans /usr/share/doc/arduino-core/reference/index.html

Super_Cinci


Pour ça: pinMode(10, INPUT_PULLUP) Le souligné (_) n'est pas dans la doc de ref du "C".
C'est spécial à Arduino ?

non, le souligné est un caractère comme les autre, qui permet de rendre les identifiants plus faciles à lire, en C, on écrit généralement les identifiants en minuscule et dans le cas de plusieurs mots, une majuscule à partir du second. Exemple : uneVariableQuatreMots. mais ce n'est pas obligatoire et je trouve moins lisible que "une_variable_quatre_mots". Toujours en C, les macros (définies par #define) et constantes sont souvent mises en majuscules, d'où l'utilisation du souligné pour séparer les mots. ce n'est que pour faire joli, comme l'identation, il n'y a pas de format oligatoire. Moi, je n'utilise pas du tout ces formats, c'est mon choix et je el vis plutôt bien (pis j'en ai rien à péter).

Il faut vraiment qu'ils fassent une version html téléchargeable de la doc de ref "Arduino". (avec tout le pognon qu'on leur laisse...)
HTTrack m'a remmené que des liens ripoux et des: "forbiden". Je vais retenter avec le réglage qui tue.
sous windows : Program Files\Arduino\reference\index.html si ça peut t'aider...

fume pas trop quand même XD

Carolyne

Quote
sous windows : Program Files\Arduino\reference\index.html si ça peut t'aider...

Aaaaaaah !  ça aide pas...ça SAUVE ! Du coup , ça va se calmer niveau: questions.

Une ch'tit dernière.. 8) Pour la route:
Dans: pinMode(10, INPUT_PULLUP); si le souligné est un caractère non significatif, peut-on l'écrire: INPUTPULLUP comme un mot clé; ou faut il mettre un espace ?
Question subsidiaire: En C les espaces sont ils significatifs (critiques).
Quote
fume pas trop quand même smiley-lol

3 par jour..No more...Sinon ça plombe le budget .

Super_Cinci

ok, 3 pas plus.

un espace ne vaut rien en C, mais vraiment rien du tout. tu pourrais écrire tout un programme sans aucun espace, ça marcherait pareil. Ah si... pour les instructions du préprocesseur (celles qui commencent par # ). non, pas tapper!

si tu as envie de t'amuser, tu peux aller te promener (en lecture seule, hein!) dans Program Files\Arduino\hardware\arduino\cores\arduino, c'est tout plein de fichier .h (faut pas les fumer, ce ne sont que des fichiers), des .c et .cpp. quand tu compiles un programme, le compilateur va aller chercher des bouts de ces fichiers pour intégrer les fonctions que tu utilises.

Tu y trouveras par exemple
Code: [Select]

#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2


donc tu peux écrire pinMode(1, 2); ça équivaut à pinMode(1, INPUT_PULLUP); puisqu'il vaut 2... "INPUT PULLUP" ne veux absolument rien dire, puisque PULLUP n'est pas défini.

Bon, il est temps d'aller faire à manger!

Carolyne

Et ben purée! ça c'est drôlement intéressant. C'est donc à ça que servent tous ces p....n de fichiers qu'il y a un peu partout.
Et ben tu va me croire, mais j'étais persuadée qu'ils ne servaient à rien; que c'étaient des sortes de "backup", d'archives; qui n'avaient servis que pour "construire" le soft.
Parce que j'ai chargé des softs en version "source", et dans les "read me", j'ai vu que c'était des fichiers qui "construisaient" le soft.
Je ne suis arrivé à rien avec. Et ça m'a bien faite râler. grr.
Il fallait  "compiler". J'ai donc chargé un compilateur.(gcc) Mais il fallait compiler le compilateur. wtf?  Avec en plus, une série de manips de diinnnngue. Et dans la doc, y'avait marqué: Que malgrès tout ça, c'était pas sûr qu'on y arrive.
Un jour...Je compilerai ! Et je ferai rendre gorge à ces foutus: "Make" et "Configure".

Super_Cinci

Toute la puissance du #include... on croyait que digitalWrite() était du C? bah non, c'est une fonction (soit dit en passant : très très mal écrite, mais ça, c'est un autre débat auquel tu risques de prendre part si tu continues à traîner dans le coin, je te sens bein partie...). Ce qui est dommage, c'est qu'à la compilation, il ne soit pas pondu un seul et unique fichier C regroupant tous les codes utilisés, ce serait très instructif. j'ai déjà décodé un programme compilé, mais il était petit. Mais il m'a appris beaucoup sur tout ce que ces fichiers rajoutent inutilement...

car oui, en C, il n'y a pas que la structure du code qui compte, mais aussi le préprocesseur, une sorte de compilation avant la compilation, avec des # partout. et arduino en abuse un peu, mais bon, c'est l'une des plateformes les plus accessibles, alors on fait avec, ou pas.

Go Up