Ça dépendra évidemment de la vitesse du validateur. Evidemment, s'il met trop de temps à corriger le deuxième chapitre, il choisira de publier le premier dans un premier temps.
Moi, c'est tcitounet. «Peut mieux faire». Rendez-vous sur Zeste de Savoir ♥
Bonjour! Tout d'abord, je tiens à vous remercier pour ce super tuto!
Ensuite, j'ai quelques remarques concernant la partie programmation (je n'y connais rien en Arduino, mais je fais du C/C++):
<li>Quand vous parlez de la division, vous montrez ce code comme exemple:
int x = 0;
int y = 10;
double z = 0;
x = 12 / 3; // x vaut maintenant 12 / 3 = 4
z = x / y; // on a donc z = 4 / 10 = 0.4
On vient de voir qu'une fonction pouvait accepter des paramètres. Mais ce n'est pas obligatoire. Une fonction qui n'accepte pas de paramètres est une fonction vide.
Or je pense qu'une fonction vide (void) est une fonction qui ne renvoie pas de valeur, mais qui peut avoir des paramètres, non?
Voilà, j'espère ne pas avoir dit de bêtises
PS: au fait, on peut faire des tableaux dont la taille dépend d'une variable, comme en C++?
PPS: et vous devriez remettre un lien vers le tuto dans le 1er post.
PPPS: 20min pour mettre ce post en page... éditeur de m****
Je n'ai pas reçu de notifications, du coup j'ai bien fais de regarder le forum sinon j'allais rater un superbe retour. Merci de ton aide le_breton ! Nous essayerons de corriger ça avant la validation du tuto (ce qui est largement jouable (merci à tcit pour l'info )).
J'essayerai de te répondre ensuite pour revoir les points que tu as abordé. Mais ce ne sera pas pour tout de suite, je suis très pris en ce moment, et Eskimon également, donc on avance à petit pas.
D'ailleurs, on était mitigé (moi je suis plutôt pour et Eskimon plutôt contre) sur une idée de réorganiser le tutoriel en faisant comme si le lecteur n'avait aucune connaissance en programmation. Ca demande du travail mais pas énormément finalement. Après, ce qu'il nous manque c'est savoir si les lecteurs seront plutôt pour cette approche de "zéro complet" ou bien celle actuelle où il faut bien s'accrocher au début pour programmer et comprendre ce que l'on fait. Si vous avez quelques retours à nous donner sur la question, ce sera avec grand plaisir que nous les accepterons.
Merci aussi à Turambar pour ton retour, il semblerait effectivement qu'il y ait quelques coquilles et une confusion avec le mot void.
Je vous tiendrais informé (ou moi, ou Eskimon) del'avancée des corrections et aussi de la futur validation des chapitres qui sont prêts et ceux qui sont commencés.
Arf de même sans notifications j'ai raté vos retour
Merci à tous, ca fait toujours plaisir d'entendre que le travail fait est pas si mal et d'avoir des idées/corrections (Surtout que des fois on a le vocabulaire mais on y pense pas sur le moment quand on écrit, comme le coup des segments A,B,C,D)
On va essayer d'éditer les corrections dès que possible
Pour ce qui est de la ré-écriture que mentionne Olyte, c'est plus compliqué que ca en a l'air et pas aussi simple qu'il ne le décrit je trouve. (c'est un sujet qui mérite reflexion, on verra ca surement par la suite, éventuellement en postant un message dédié sur le forum)
En tout cas, merci à tous pour les contributions et les encouragements, c'est pas toujours facile de se motiver mais avec des messages comme ca c'est toujours mieux !
Petit coucou rapide pour tout le monde (dernier message il y a 15 jours, le temps passe vite).
Le tuto n'avance pas très vite, c'est le moins que l'on puisse dire. Cela fait plus d'un mois et demi que le tuto est en attente de validation pour la partie sur les moteurs (Courant continu et servo moteur) sans nouvelles des validos pour le moment.
Ensuite, nous avons voulu commencer les capteurs mais des changements dans nos activités quotidiennes (à olyte et moi) fait que nous avons un peu de mal à communiquer pour bien démarrer l'écriture. Donc pas de nouvelles sur cette partie là pour l'instant.
En attendant, quand j'ai un peu de temps j'avance sur des goodies. Je vous ai ainsi préparé une partie sur "comment alimenter l'Arduino sans l'USB" et je suis en train de finir un plus gros chapitres sur les différentes mémoires et comment on les gères.
Il faudra aussi que l'on s'occupe des différentes parties liés aux remarques mentionnés dans les posts précédents. Comme c'est une tâche moins rigolote (il faut se replonger dans l'écriture d'anciennes parties), on se les garde pour les jours de pluie
C'était Eskimon en direct du tuto Arduino, à vous les studios !
cela fait depuis quelques mois que les validos bénévoles n'ont plus accès aux tutos (depuis la v4, en fait). Mais promis, si les editeurs de SimpleIT ne l'ont pas fait, dès qu'on a accès à l'interface de validation, on s'occupe de votre tuto.
Ah mince ! On avais eu une discussion avec Zeina au moment du passage à la V4 car on nous a proposé un accès privé V3 et on en avait profité pour discuter de la validation et il me semblait du coup que le nécessaire était fait pour que le processus de validation/parution soit maintenu...
On va patienter donc, merci de tes infos Nathalya !
@blackwolf44 : "donc j'ai choisi ce topic aléatoirement" > Ha ouais non ça ne marche pas comme ça sur ce site. Si tu veux une réponse, va poster ça sur le forum C. Et pense à utiliser la balise "code" qu'on y vois quelque chose. Mais en tout cas, pas dans ce sujet.
j'ai lu le tuto en 1 jour (ne me tapez pas ;)) et je n'ai pas encore d'arduino, mais je le trouve très très bien conçu parfois on ne comprend pas les explications de premiers coups alors on est obligé de recommencer car il manque quelques informations pour comprendre et j'ai vu quelques fautes d'orthographes, quand je le relirai je les noterai et je vous en ferai part.
J'ai vraiment hâte de lire les nouveaux chapitres aussi
Merci merci, ca fait toujours plaisir d'entendre ca
Pour le coup de "relire deux fois" je pense que le tort ai partagé Si tu lis trop vite tu ne feras pas attention et donc ca n'accrochera pas dans ta tête, mais je reconnais aussi que des fois nos formulations peuvent être mauvaise (pas toujours facile de toujours écrire correctement).
Pour les fautes il doit en rester, mais depuis quelques chapitres/parties on a un correcteur qui s'en occupe et crois moi il fait du bon boulot vu les tartines qu'on lui met (en tapant au kilomètre)
Non je ne pense pas que je lise trop vite, je connais assez bien la théorie de l'électromagnétisme en ce qui concerne les composants traités et je programme déjà en C donc ce domaine m'est familier.
Mais il y a des fois j'ai vraiment était bloqué je ne comprenais vraiment pas, par exemple pour le PWM je ne comprenais pas pourquoi le signal que l'on émettait était périodique (de grande période) alors qu'on avait à faire qu'a du courant continu.
Un autre exemple au début lorsqu'il s'agit des afficheurs 7 segments vous expliquez que on va éteindre pendant 10ms le signal d'un afficheur puis le rallumer juste après pendant 10 ms et que l'utilisateur ne verra pas la différence car on ne peut pas discerner le changement, mais dans ce cas là pourquoi on percevrai que la lumière est allumé la moitié du temps et non pas qu'elle est éteinte la moitié du temps.
Sinon vous allez très loin dans la théorie ce qui est très bien encore félicitation
Pour l'afficheur, on percoit qu'il est allumé à cause de la persistance retinienne. La lumière "s'imprime" sur ton oeil pendant un instant (alors que l'absence de lumière n'imprime rien)
Je me permet de vous dire que je crois que j'ai trouvé une erreur toute petite, c'est pas énorme mais on sait jamais pour les rageux. Dans la partie des 74HC595 tout a la fin dans la partie "Pas assez ? Augmenter encore !". C'est marqué dans l'avant dernier paragraphe "Par exemple, si vous voulez réaliser un cube de LED (disons 4x4x4 pour commencer gentiment). Si vous vouliez donner une broche par LED vous seriez bloquer puisque Arduino n'en possède pas autant (il vous en faudrait 32)." Or je crois que 4*4*4 ca fait 64 pour une broche par LED, mais bon je suppose que vous entendiez 32 sorties si c'est mis en matrice.
Voilou, encore encore merci pour le tuto, je suis a l'affut des nouveaux chapitres !
if(sens)
//envoie la donnée en allant de droite à gauche, en partant d'un masque de type "00000001"
digitalWrite(dataPin, donnee & 0x01<<i);
else
//envoie la donnée en allant de gauche à droite, en partant d'un masque de type "10000000"
digitalWrite(dataPin, donnee & 0x80>>i);
Par
if(sens)
//envoie la donnée en allant de droite à gauche, en partant d'un masque de type "00000001"
digitalWrite(dataPin, (donnee & (0x01<<i)) >> i);
else
//envoie la donnée en allant de gauche à droite, en partant d'un masque de type "10000000"
digitalWrite(dataPin, (donnee & (0x80>>i)) >> (7-i));
En fait, de façon canonique, on écrit plutôt
(((data) >> (bit)) & 1)
Ce qui permet d'avoir le mask à droite, sans avoir à le décaler (ce qui devient moins trivial quand le masque vaut autre chose que 1), en ne faisant que 1 seul décalage.
Sinon, à choisir, je préfère la version d'Eskimon.
On récupère donc un octet constitué du bit MSB suivi de 7 zéros.
Pour récupérer juste le bit MSB, il faut effectuer un décalage de 7 bits vers le LSB.
Ma proposition précédente permet de comprendre ce qui manque au code pour être correct.
Pour une écriture plus compacte :
if(sens)
//envoie la donnée en allant de droite à gauche
digitalWrite(dataPin, (donnee >> i) & 1);
else
//envoie la donnée en allant de gauche à droite
digitalWrite(dataPin, (donnee >> (7-i)) & 1);
Ah effectivement j'avais pas fait gaffe :
digitalWrite(dataPin, donnee & 0x01<<i);
Avec donnée qui vaut 1, i qui vaut 3, donnee & 0x01<<i vaut 8[1], alors qu'on voudrais la valeur du bit 3, à savoir 0
PS : [1] : c'est faux, je me suis plantée dans la BNF du C
Je vois pas vraiment ou est le problème... le but du jeu est de savoir si le bit sélectionné est 1 ou 0.
Si je reprend l'exemple de Nathalya :
donnee = 1 : 0000 0001 i = 3
du coup donnee & 0x01 << 3 ce décompose comme [donnee & (0000 0001 << 3)] = [donnee & 0000 1000] = [0000 0001 & 0000 1000] ce qui donne 0 comme attendu (donc la pin sera éteinte)
Si on avait pris "donnee = 0x0f" par exemple, on aurait eu : [donnee & (0000 0001 << 3)] = [donnee & 0000 1000] = [0000 1111 & 0000 1000] ce qui donne 1, true (donc la pin sera allumée)
Bref, je vois pas vraiment ou est le problème... Si je comprend bien le raisonnement de kevinmille l'objectif serait de mettre le bit sélectionnée en LSB (ce qui est rigoureux et correct) mais je fais le choix de simplement sélectionner le bit pour avoir à la fin un true / false.
Non, effectivement, si le compilo Arduino est C-compliant, une shift-expression est parsée avant une AND-expression. Donc Eskimon a raison. Cela dit, je continue à préférer la forme (donnee >> i) & 1, qui a l'avantage de donner 0 ou 1 (ce qui évite pas mal de problèmes avec les BSP codés pour être légers plutôt que robustes), et d'expliciter les priorités (ce qui est utile sur des compilos pouris).
Ouai c'est vrai que j'ai pas vraiment pensé à mettre les parenthèses à cause de l'habitude... J'avais l'habitude de faire ça pour les registres de microcontrôleur (codé en C) et donc ça passais, du coup je me suis pas trop posé de question vu que ca a marché de suite comme je voulais... mais expliciter les priorités avec les parenthèses serait pas une mauvaise idée... je vais voir à reformuler tout ca...
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !