va voire des tutoriels Arduino , c'est le même micro-contrôleur qu'il utilise donc le même code, sinon attention au branchement si tu le fais directement avec le microcontrôleur sans passer par la carte Arduino ou autre type de carte .
En fait j'ai dit Atmega328 pour ne pas qu'on me dise d'utiliser la lib Arduino, car je veux faire du code pro. Je veux donc utiliser l'aruino comme un microcontrôleur standard genre pic.
Je ne veux pas par exemple utiliser la fonction digitalRead(), qui fonctionne dans mon cas.
Ma question est tout simplement est-ce que quelqu'un sait pourquoi la condition
Respectivement pour les opérateurs de comparaison < et ≤
>>=
Respectivement pour les opérateurs de comparaison > et ≥
9
==!=
Respectivement pour les comparaisons = et ≠
10
&
ET binaire
11
^
XOR binaire (ou exclusif)
12
|
OU binaire (ou inclusif)
13
&&
ET logique
14
||
OU logique
15
?:
opérateur conditionnel ternaire
Droite à gauche
=
Affectation directe (fourni par défaut pour les classes C++)
+=−=
Affectation par somme ou différence
*=/=%=
Affectation par produit, division ou reste
<<=>>=
Affectation par décalage binaire à gauche ou à droite
&=^=|=
Affectation par ET, XOR ou OU binaire
16
throw
opérateur Throw (pour les exceptions)
17
,
Virgule
Gauche à droite
Ce qui est sur une ligne est "plus fort" que ce qui est sur les lignes suivante, donc par exemple dans a*b+c, la multiplication (ligne 5) l'emporte sur l'addition (ligne 6) et donc on lit (a*b)+c;
Dans a & b == c, le & est ligne 10 et le == ligne 9, donc le == l'emporte => a & (b==c).
- Edité par michelbillaud 24 janvier 2019 à 13:35:15
if ( PORTD & RED == RED )
// est équivalent à :
if ( PORTD & (RED == RED) )
// il faut plutôt écrire
if ( (PORTD & RED) == RED )
D'où l'intéret d'écrire une fois pour toute une fonction qui fait le job, et rendra le programme plus clair de toutes façons
/**
* Test if bits are all set in the value
* @param mask mask with ones at the positions to be checked
* @param value
* @return true if all bits are set
*/
bool isSet(int mask, int value) {
return (mask & value) == mask;
}
usage
if (isSet(RED, PORTD)) {
...
}
Le compilateur est assez grand pour "inliner" et optimiser. C'est son job. Celui du programmeur est d'écrire des programmes lisibles qui marchent sans se prendre la tete ni celle de celui qui devra modifier le programme.
- Edité par michelbillaud 25 janvier 2019 à 11:34:30
Galère typique avec microcontrôleur Atmega328P
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.