Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
973 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  170  171  172  ..  266  267  268  269  270  271
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°246532
_pollux_
Pan ! t'es mort
Posté le 12-02-2019 à 09:54:08  profilanswer
 

Reprise du message précédent :
Bon, je confirme qu'en rajoutant un délai de 10 µsecondes, l'oscillo interprète bien les octets.
 
Je confirme aussi que le module interprète bien le message sans ces délais...
 
En conclusion, j'ai perdu pas mal de temps, mais j'ai aussi appris des trucs, notamment à ne pas faire confiance aveuglément à un oscillo  :o


---------------
Le topic du sport électronique@hfr : watch the l33t !
mood
Publicité
Posté le 12-02-2019 à 09:54:08  profilanswer
 

n°246924
calagan57
BF3 : calagan57
Posté le 14-02-2019 à 15:20:59  profilanswer
 

Hello!
 
Voilà je suis en cours de montage de mon arduino "gestion d'énergie électrique" de la maison en réalisant un emontx arduino shied (le montage sur breadboard fonctionne bien  :love: :
https://wiki.openenergymonitor.org/images/thumb/EmonTx_Shield_NanodeRF_1CT.jpg/600px-EmonTx_Shield_NanodeRF_1CT.jpg
https://wiki.openenergymonitor.org/ [...] ino_Shield
 
Je voudrais installer sur le shield un esp12e pour communiquer directement en WIFI/mqtt vers ma box domotique (au lieu du module RF433). Le montage à l'air de fonctionner puisque des posts en parlent:
Ici pour le branchement de l'esp12e sur le shield emontx:
https://openenergymonitor.org/forum [...] 11571.html
https://openenergymonitor.org/forum-archive/sites/default/files/emonTxShieldV2_PCB_front.jpg
 
Et là le sketch arduino pour la communication wifi/mqtt:
https://github.com/palitu/emonTX-ESPGateway
 
Donc si je comprends ce sketch doit être dans l'esp12e et non l'arduino uno qui sert au emontx shield. Le souci c'est que je ne comprends pas comment mettre ce sketch dans l'esp? J'ai cru comprendre qu'on peut passer par un module spécial mais d'autres indiquent qu'avec un arduino uno c'est possible comme le montage ci-dessous:
http://domoticx.com/wp-content/uploads/2016/03/esp8266-esp-12-module-aansluiten-via-Arduino-900x543.png
http://domoticx.com/esp8266-wifi-e [...] ansluiten/
 
Ce montage c'est bien pour mettre un sketch dans l'esp et non un flash? Si oui, comment je fais dans l'arduino IDE pour sélectionner l'esp12e et téléverser dedans et non téléverser dans l'arduino?  :pt1cable:  
 
Oui je sais que la question peut paraitre basique mais j'ai encore jamais programmer un module depuis un autre module arduino  :pt1cable:  
 
merci à vous!
 
 
 


---------------
Waterbox
n°246932
Turkleton
I don't quite understand you
Posté le 14-02-2019 à 16:45:36  profilanswer
 

https://www.fais-le-toi-meme.fr/fr/ [...] rduino-ide
 
Après, faut adapter en fonction du modèle d'ESP tu as.


---------------
If you think it could look good, then I guess it should
n°246935
_pollux_
Pan ! t'es mort
Posté le 14-02-2019 à 17:20:53  profilanswer
 

Turkleton a écrit :

https://www.fais-le-toi-meme.fr/fr/ [...] rduino-ide

 

Après, faut adapter en fonction du modèle d'ESP tu as.


C'est pas ce qu'il cherche.
il veut remplacer le FTDI par un Arduino.

 

J'ai utilisé l'interface arduino IDE pour programmer mes esp, mais toujours en utilisant un ftdi, jamais en passant par un arduino.
C'est logiquement faisable, mais je sais pas comment non plus (il faudrait logiquement programmer l'arduino pour qu'il bypass les données qui doivent atteindre l'ESP).

 

En première approximation, je lis qu'il faut retirer l'atmega de la carte :D (+ autres manip)
A mon avis, c'est quand même plus simple de se payer un ftdi...

 

Sinon, faut essayer ça :

 

https://oscarliang.com/use-arduino- [...] converter/

 

aucune idée de la réalité de ces solutions...

Message cité 2 fois
Message édité par _pollux_ le 14-02-2019 à 17:29:01

---------------
Le topic du sport électronique@hfr : watch the l33t !
n°246937
calagan57
BF3 : calagan57
Posté le 14-02-2019 à 17:29:42  profilanswer
 

Turkleton a écrit :

https://www.fais-le-toi-meme.fr/fr/ [...] rduino-ide
 
Après, faut adapter en fonction du modèle d'ESP tu as.


 

_pollux_ a écrit :


C'est pas ce qu'il cherche.
il veut remplacer le FTDI par un Arduino.
 
J'ai utilisé l'interface arduino IDE pour programmer mes esp, mais toujours en utilisant un ftdi, jamais en passant par un arduino.  
C'est logiquement faisable, mais je sais pas comment non plus (il faudrait logiquement programmer l'arduino pour qu'il bypass les données qui doivent atteindre l'ESP).
 
En première approximation, je lis qu'il faut retirer l'atmega de la carte :D (+ autres manip)
A mon avis, c'est quand même plus simple de se payer un ftdi...


 
 
merci à vous!
 
ouai après recherche j'ai vite compris que4€ c'est bien plus simple  :o . C'est bien ça qu'il fallait commander? :
https://www.ebay.fr/itm/1023-FT232R [...] 2749.l2649


---------------
Waterbox
n°246940
Turkleton
I don't quite understand you
Posté le 14-02-2019 à 17:57:03  profilanswer
 

_pollux_ a écrit :


C'est pas ce qu'il cherche.
il veut remplacer le FTDI par un Arduino.

C'est pour ça que je dis que ça dépend du modèle d'ESP. Genre avec les NodeMCU, tu peux directement brancher en USB et pas besoin de se faire chier avec du FTDI.


---------------
If you think it could look good, then I guess it should
n°247154
dureiken
Posté le 16-02-2019 à 20:39:04  profilanswer
 

Salut les experts
 
je reviens (comme chaque année) avec mon projet de surveillance de piscine, juste pour le passer d'un Mega a un Nano.
 
Il me dit que la mémoire dispo est faible, j'imagine qu'il faut que je simplifie et aussi que je travaille sur mes variables.
 
Je récupere essentiellement des valeurs de temperatures a partir de DS18B20, et des tensions.
 
Actuellement j'utilise beaucoup de float et double, sans trop savoir pourquoi d'ailleurs, je sollicite donc votre aide et avis ?
 
Merci
 

n°247156
rat de com​bat
attention rongeur méchant!
Posté le 16-02-2019 à 20:54:57  profilanswer
 

Quelle mémoire, FLASH ou RAM? 1) c'est pour le code, 2) c'est pour les variables (dont tableaux).
 
Déjà tu changes les double en float, c'est de la double précision parfaitement inutile mais probablement 2x la place en RAM.
 
Après on peut remplacer les float par des int en faisant de la virgule fixe mais c'est pas direct 1:1 et il faudrait probablement changer les bibliothèques aussi -> problème.
 
En gros l'idée de la virgule fixe c'est de stocker non pas p.ex. des degrées mais des dixièmes (voire centièmes) de degrées. Ansi on peut caser une température dans 2 octets voire dans 1 seul avec un offset eventuellement. Un float ça doit faire 4 octets sans avoir vérifié.

n°247165
dureiken
Posté le 16-02-2019 à 21:21:13  profilanswer
 

comment je sais la mémoire ? :)

n°247166
rat de com​bat
attention rongeur méchant!
Posté le 16-02-2019 à 21:25:52  profilanswer
 

Poste donc le message de ton compilateur.

mood
Publicité
Posté le 16-02-2019 à 21:25:52  profilanswer
 

n°247170
dureiken
Posté le 16-02-2019 à 21:47:46  profilanswer
 

Le croquis utilise 21468 octets (69%) de l'espace de stockage de programmes. Le maximum est de 30720 octets.
Les variables globales utilisent 1892 octets (92%) de mémoire dynamique, ce qui laisse 156 octets pour les variables locales. Le maximum est de 2048 octets.
La mémoire disponible faible, des problèmes de stabilité pourraient survenir.

n°247171
Turkleton
I don't quite understand you
Posté le 16-02-2019 à 21:48:03  profilanswer
 

Et pour les int, utilise les intX_t à la place en calculant la taille au plus juste pour chaque variable.


---------------
If you think it could look good, then I guess it should
n°247176
rat de com​bat
attention rongeur méchant!
Posté le 16-02-2019 à 22:01:06  profilanswer
 

FLASH 69% -> ok
RAM 92% -> limite
+1 pour Turkleton plus mes conseils plus haut.
Regarde aussi du côté des gros tableaux si tu en as.

n°247188
M4vrick
Mad user
Posté le 17-02-2019 à 09:26:04  profilanswer
 

Même conseil que Turkleton et rat de combat : regarde chaque variable une à une et redéfinie celles que tu peux.
Regarde aussi tes boucles for, souvent par réflexe on utilise un simple int pour la variable, qui est alors stocké sur 2 octets, alors que si on fait une toute petite boucle on peut utiliser un int8_t.


Message édité par M4vrick le 17-02-2019 à 09:26:20

---------------
--== M4vr|ck ==--
n°247209
dureiken
Posté le 17-02-2019 à 12:33:59  profilanswer
 

merci rat :)


Message édité par dureiken le 17-02-2019 à 14:53:52
n°247213
rat de com​bat
attention rongeur méchant!
Posté le 17-02-2019 à 13:34:41  profilanswer
 

470 lignes de code? Tu nous en demandes un peu beaucoup la (voir aussi règlement, bon après c'est pas de l'exercice scolaire dans ton cas). :o

 

Quelque remarques en vrac. 'L' veut dire "ligne".

 

L12 Il doit y avoir moyen de mettre ça dans la mémoire FLASH, à vérifier comment ça marche sous Arduino. const suffit peut-être. Pourquoi 12 si le plus long c'est 9? Faute de frappe sur mercredi. :o

 

L28ff unsigned long c'est le pire des cas au niveau mémoire. (u)intX_t (stdint.h) comme disais turkleton, faudra bosser un peu pour déterminer la valeur max (et donc la bonne taille) pour chaque variable.

 

L48ff, 62ff Si une décimale te suffit autant passer tout le bazar en virgule fixe comme je disais. A faire en dernier car le plus compliqué.

 

L99ff idem que L12.

 

L119 C'est pas une adresse locale ça? Attention, peut-être c'est confidentiel.

 

L126 On peut probablement passer ça en #define aussi, m'enfin pour un deux octets...

 

Après vu les différences de prix des Arduino chinois faut se poser la question si ça vaut la peine de s'emmerder... :o


Message édité par rat de combat le 17-02-2019 à 13:36:09
n°247341
_pollux_
Pan ! t'es mort
Posté le 18-02-2019 à 15:25:14  profilanswer
 

Salut,

 

quelqu'un connaitrait un shield datalogger (sd + rtc) qui puisse fonctionner avec le port SPI de l'arduino (+mega) autre que celui distribué par ADAfruit ? (pas cher, mais voilà les frais de port :'( ).
Parce que j'essaye de faire un truc un peu propre... et brancher le datalogger standard sur un mega, c'est pas trop possible :/


Message édité par _pollux_ le 18-02-2019 à 15:26:41

---------------
Le topic du sport électronique@hfr : watch the l33t !
n°248290
Aline BOQS
fan de son cabri au lait.
Posté le 26-02-2019 à 03:38:13  profilanswer
 

:hello:  
 
Je reviens vous faire braire avec mon horloge-coucou arduinée  :D  (voir page 169).
 
J'ai réalisé un prototype mieux fichu que celui qui m'a servi à tester, et j'ai finalement pensé à utiliser
un élastique pour fixer l'Arduino sur la breadboard. Du coup, je peux tout trimbaler sans souci  :D  
Le montage est installé depuis 3 jours sans discontinuer, branché en usb sur ma Freebox Revolution : tout
va bien, le coucou coucoute, l'heure est dite quand j'appuie sur le bouton.
 
Seulement, y'a un problème tout de même, et je n'y comprends rien du tout : lorsqu'il est minuit, le
bazar devrait dire : il est, zéro, heures, et, xx, minutes.
 
Sauf qu'il ne dit que : il est, heures, et, xx, minutes.  :(  
 
J'ai cherché, et j'ai remplacé le code qui dit "il est" (27) par "zéro" (1) et ça fonctionne. Même si ça n'a aucun sens.
Mais au moins, je sais qu'il trouve le son "zéro" qui est numéroté (1).
 
J'en suis à déduire que la façon d'extraire le digit des heures doit bugger ou planter parce qu'elle n'aime pas trouver 0.
Mais je n'arrive pas à obtenir un résultat concluant  :sweat:  
 
Quelqu'un aurait une idée please ?


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248292
gunsman
La bonne affaire...
Posté le 26-02-2019 à 06:01:30  profilanswer
 

Si au lieu de mettre 0h tu mets 24h ?


---------------
La route n'est longue que si l'on regarde loin...
n°248309
Aline BOQS
fan de son cabri au lait.
Posté le 26-02-2019 à 09:07:04  profilanswer
 

Très bonne idée !
 
Je vais essayer ça, j'aurais du y penser d'ailleurs ^^
 
EDIT :

void loop()  
{
  TimeStr=(rtc.getTimeStr());                         // Récupération de la chaîne de l'heure du module RTC
  MinDec = TimeStr.substring(3,5).toInt();            // On extrait et convertit en int les minutes
  HeuDec = TimeStr.substring(0,2).toInt();            // On extrait et convertit en int les heures
  SecDec = TimeStr.substring(6,8).toInt();            // On extrait et convertit en int les secondes
   
  if ((MinDec == 0) && (SecDec < 1))                  // Si c'est l'heure pleine et dans la première seconde
                                                      // Astuce pour ne sonner qu'une seule fois  
  {  
    if (HeuDec == 0)                                  // il est minuit
    {for (int i=1; i <= 12; i++) Sonne(); }           // on sonne douze fois
    else if (HeuDec <= 12)                            // entre minuit et midi inclus
    {for (int i=1; i <= HeuDec; i++) Sonne(); }       // on sonne l'heure
    else if (HeuDec < 24)                             // si c'est l'après midi
    {for (int i=1; i <= (HeuDec % 12); i++) Sonne(); }// on enlève 12 et son sonne l'heure
  }  
    if ((MinDec == 30) && (SecDec < 1)) Sonne();      // Si c'est la demie, on sonne une fois
//  if (SecDec == 0) LitHeure(HeuDec,MinDec);         // Dit l'Heure toutes les minutes
    if (digitalRead(SayIt) == HIGH) LitHeure(HeuDec,MinDec); // Si le bouton de demande d'heure est activé, on dit l'heure complète
}


J'ai extrait une partie du sketch, c'est ici que je dois essayer de changer : if (HeuDec == 0)   // il est minuit ?
Je mets : if (HeuDec == 24)    // il est minuit


Message édité par Aline BOQS le 26-02-2019 à 09:43:26

---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248322
fredo3
Posté le 26-02-2019 à 11:43:41  profilanswer
 

Dites, il n'y aurait pas de microcontroleur compatible Arduino qui dispose de 2 bus I2C???

 

(Je voudrais utiliser en un en slave l'autre en master, en gros c'est pour faire comme un sensor hub)

Message cité 1 fois
Message édité par fredo3 le 26-02-2019 à 11:45:01
n°248325
Natopsi
☄️Just end it already!☄️
Posté le 26-02-2019 à 11:53:49  profilanswer
 

En pas compatible Arduino mais pas trop galère à programmer t'as par exemple le STM103C8T6 ;)


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°248336
fredo3
Posté le 26-02-2019 à 13:08:24  profilanswer
 

:jap:
 
Après réflexion j'ai vais opter pour du 1-wire + I2C.

n°248337
rat de com​bat
attention rongeur méchant!
Posté le 26-02-2019 à 13:08:37  profilanswer
 

fredo3 a écrit :

Dites, il n'y aurait pas de microcontroleur compatible Arduino qui dispose de 2 bus I2C???
(Je voudrais utiliser en un en slave l'autre en master, en gros c'est pour faire comme un sensor hub)

À moins que tu sois très pressé l'I2C (surtout master) est très facile à faire en software. :)

n°248338
fredo3
Posté le 26-02-2019 à 13:14:14  profilanswer
 

D'expérience :o, je préfère aller au plus simple  [:tinostar]

n°248348
rat de com​bat
attention rongeur méchant!
Posté le 26-02-2019 à 14:41:47  profilanswer
 

C'est simple. :o Et dans le monde Arduino il doit bien exister un code tout fait déjà. :o

n°248379
Aline BOQS
fan de son cabri au lait.
Posté le 26-02-2019 à 16:06:32  profilanswer
 

Retour du Coucou  :D  
 
J'ai analysé le code à coups de serial.print dans tous les coins, et j'ai fini par trouver où ça coince !
 
First, en changeant quelques trucs, j'ai réussi à lui faire dire "zéro" = le fichier zéro.mp3 n'est donc
pas défectueux, et surtout, le systeme le trouve. Là, j'étais déjà un peu fier de moi  :D  
 
Ensuite, il y a deux lignes qui sont commentées par "on met un cas bidon qui ne fait rien" = je les ai
mises en "//".
A ce moment-là, lorsqu'il est minuit, le coucou dit bien "il est, zéro, heure". Waaah super fier étais-je ^^
 
Seulement, ça génère un autre problème, du je pense à la manière dont les nombres sont décomposés. En
effet, s'il est 15:54 par exemple, ça doit dire (et ça le disait avant que je trouve ma fausse solution) : "il
est, quinze, heures, et, cinquante, quatre, minutes".
 
La merdasse, c'est que maintenant, le minuit fonctionne, mais il dit : "il est, quinze, cinq, heures, et cinquante,
quatre, minutes".  :(  
J'en déduis donc que le "cas qui ne fait rien" sert à empêcher le bordel de répéter le chiffre des unités quand
ce n'est pas nécessaire.
 
Et pis là, ça fait deux plombes que je m'arrache les cheveux en n'arrivant à rien  :sweat:  
 
PS : la suggestion de remplacer "00" par "24" ne fonctionne pas non plus.


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248386
Turkleton
I don't quite understand you
Posté le 26-02-2019 à 16:43:06  profilanswer
 

C'est bizarre la manière qu'a l'IDE Arduino de gérer la portée des variables globales quand plusieurs onglets sont utilisés.
 
J'ai remarqué que les onglets sont placés suivant l'ordre alphabétique quand on leur donne un nom lors de leur création. Et de ce que je constate, les variables globales vont être créées dans cet ordre là aussi.
Donc si on appelle une variable globale depuis un onglet différent de celui où elle a été déclarée, ça ne va fonctionner que si l'onglet de déclaration est placé plus haut dans l'alphabet que celui d'utilisation… [:transparency]  
 
Vous avez une manière propre de gérer ça ?


---------------
If you think it could look good, then I guess it should
n°248406
rat de com​bat
attention rongeur méchant!
Posté le 26-02-2019 à 18:15:31  profilanswer
 

Aline BOQS a écrit :

Retour du Coucou  :D

montre donc tout ton code (entre balises ou sur pastebin ou un autre site (sans Javascript pour le téléchargement!) si c'est trop long)

n°248450
Aline BOQS
fan de son cabri au lait.
Posté le 27-02-2019 à 00:14:17  profilanswer
 

Il est sur le site dont j'ai donné le lien, accessible en cliquant sur son image  :sweat:  
 
=> http://www.honocorp.com/wa_files/H [...] 3_mini.ino


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248509
Gewemx
Posté le 27-02-2019 à 11:33:50  profilanswer
 

J'ai reçu mes kits, mon fils aussi... je sens qu'il peut pleuvoir de nouveau, on ne sortira pas beaucoup.
Notre but, se faire une station météo autonome avec plein de relevés (baromètre, nanomètre, pluvio et tout !!)

n°248524
rat de com​bat
attention rongeur méchant!
Posté le 27-02-2019 à 13:43:09  profilanswer
 

Pour le coucu de chez Aline:
C'est bien cette ligne

Code :
  1. if (units == 0) unitsOut = 11;                      // met dans unitsOut un numéro de cas qui ne fait rien.


que tu as virée? Normalent tu ne devrais pas avoir le phénomène "quinze, cinq" puisque 15 fait rentrer dans le if(tens==1...) dans Parse() et dedans tu as unitsOut = 11; qui désactive le "cinq" ou alors j'ai besoin de nouvelles lunettes. :o Tu es sûre que tu exécutes la bonne version du code? Tu peux toujours contrôler tes variables "outs" avec un serial.print (ou semblable) à la fin de Parse().

 

Après permet moi de faire la remarque que le code n'est pas terrible. :o Pas très logique cette décomposition, problème de mise en page (indentation! formatage des if!), variables globales (!!), mélange de deux langues, ...

 

edit @gewemx: Manomètre :o (Pas sûr si c'est pas une simple faute d'inattention...) Bon courage.
edit2: Heu non attends, un manomètre sur une station météo n'a pas de sens. :o Tu parles de quoi?


Message édité par rat de combat le 27-02-2019 à 13:55:02
n°248528
Aline BOQS
fan de son cabri au lait.
Posté le 27-02-2019 à 14:39:56  profilanswer
 

Hello RDC, merci d'essayer de m'aider.
 
J'ai changé les deux :  
    tensOut = 10 + units;                             // met dans tensOut le numéro destiné à  dire 11,12,13 etc
    unitsOut = 11;                                    // met dans unitsOut un numéro de cas qui ne fait rien
  }
  else {
  tensOut = tens;                                     // met dans tensOut le numéro destiné à  dire 20,30,40 ou 50
  if (units == 0) unitsOut = 11;                      // met dans unitsOut un numéro de cas qui ne fait rien
 
Maintenant que tu en parles, j'ai oublié de les essayer un par un ; je devais être fatigué d'essayer de reverse-
engeenerer ce code ^^
Il n'est pas de moi, d'ailleurs l'auteur déclare avoir adapté un code "tout fait" d'origine java.
 
Je suis obligé d'avouer que le langage Arduino, c'est pas la peine, je n'arrive vraiment pas à m'y adapter.  :(  
J'ai trop utilisé le GFA Basic et l'Assembleur autrefois, j'ai trop de choses qui me sont restées.
 
Par exemple, si je devais refaire son code, j'utiliserais un truc du genre :  
- if LEN(heures) = 2 -----------> alors il est entre 10 et 23 heures [suivi d'un ELSE si ça renvoie 1 -----> il est entre 0 et 9 heures].
 
C'est ça mon problème, qui me fait vous ennuyer avec des petites conneries : quand je lis le code Arduino, j'essaie
inconsciemment de le traduire dans un langage que je connais.
 
Taleur, je vais essayer de desactiver les deux lignes en question, mais l'une après l'autre.  :jap:  


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248551
rat de com​bat
attention rongeur méchant!
Posté le 27-02-2019 à 17:14:42  profilanswer
 

Aline BOQS a écrit :

Taleur, je vais essayer de desactiver les deux lignes en question, mais l'une après l'autre.  :jap:

Il faut laisser le unitsOut=11 et virer le if, normalement ça sera bon.
 
Pour tes soucis de compréhension, pourtant si t'as fait de ASM tu as largement les compétences pour faire du C/Arduino. Peut-être avec un bon livre? Le fameux K&R n'est pas mauvais si on a les bases.
 
Je vais voir, peut-être je vais pondre un bout de code pour ce problème à ma sauce pour l'exercice, mais faut que je trouve le temps... Ca t'intéresserai?

n°248598
Aline BOQS
fan de son cabri au lait.
Posté le 28-02-2019 à 03:18:16  profilanswer
 

Et comment que ça m'interesserait ! Vu le niveau que tu me sembles avoir, je n'ai nul doute que ça sera
simple à comprendre pour moi et pratique.
 
Pour me situer, si tu prends ça : http://toshyp.atari.org/en/004009.html#Gettime (pour un novice, oui c'est du charabia)
Et ça : void Parse(int nombre)  
Mon cerveau bloque notamment là, parce que c'est le même nom, mais ça s'utilise différemment.
 
Et dans l'exemple de mon post précédent, je suis allé trop vite, j'ai sauté une étape.
J'aurais commencé par faire ça :
- Heudec = 13 (il est 13 h kke chose)
- Heudec$ = STR$(Heudec) (convertit un nombre en chaine de caracteres)
- if LEN(Heudec$) = 2 then [il est entre 10 et 23 h]
- else [il est entre 0 et 9 h].
 
Ou un truc dans ce genre-là...
 
 
L'Arduino ne me semble pas comparable à mes vieux acquis. De plus, et tu l'as dit toi-même, le code est bordélique = ça ne m'aide pas.
 
Si tu prends le célèbre exemple du "blink", je l'ai étudié et je le comprends très bien.


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248599
Aline BOQS
fan de son cabri au lait.
Posté le 28-02-2019 à 03:30:34  profilanswer
 

rat de combat a écrit :

Il faut laisser le unitsOut=11 et virer le if, normalement ça sera bon.


Ca ne fonctionne pas du tout  :D  
 
S'il est, mettons 22 heures, le truc dit "il est, vingt, heures".
S'il est, mettons 9 heures, le truc dit "il est, heures"...
 
 
EDIT : j'ai vérifié cette partie :

Code :
  1. void LitHeure(int HeuDec,int MinDec)
  2. {
  3.   Parle(27);                                // 'Il est...'
  4.   Parse(HeuDec);                            // décompose les heures en dizaines d'heures et unités d'heures
  5.   LitNombre();                              // Lit la décomposition
  6.   Parle(25);                                // Dit 'heures' (sans liaison...)  
  7.   if (MinDec != 0)                          // Si les minutes sont différentes de 0, lit les minutes  
  8.   {
  9. Serial.print("   " );Serial.print(HeuDec);Serial.print(" heures    " );Serial.print(MinDec);Serial.print(" minutes  " );
  10.   Parse(MinDec);                            // décompose les minutes en dizaines de minutes et unités de minutes
  11.   LitNombre();                              // Lit la décomposition
  12.   Parle(26);                                // Dit 'minutes'                   
  13.   } 
  14. }


 
A 23:59, ça affiche bien "23   heures    59   minutes". L'heure est dite normalement.
A 00:00, ça n'affiche rien du tout. Il dit "il est, heures".
A 00:01, ça affiche bien "0   heures   1   minute". Il dit "il est, heures, une, minutes"...
 
Le code déconne lorsqu'il doit calculer "zéro", c'est désormais sûr et certain. J'essaie de faire quelques modifs, mais
sans grand résultat jusqu'à présent.
 
A un moment, je me suis dit "puisque zéro heure ça passe pas, ben j'augmente manuellement l'heure de 1".
J'ai foutu "HeuDec = HeuDec + 1" et j'ai rectifié tout ce qui l'utilise, en augmentant de 1 aussi.
Bah non, ça n'a rien changé.


Message édité par Aline BOQS le 28-02-2019 à 04:00:31

---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248600
Aline BOQS
fan de son cabri au lait.
Posté le 28-02-2019 à 04:37:58  profilanswer
 

J'ai trouvé !!!  
Il manque tout simplement une ligne dans un coin   :D  
 
Je force tout simplement le bordel à "voir" qu'il est minuit et qu'il doit dire "zero, heure".
C'était tout con, mais je me suis cassé la tête dessus !
 
Pour valider, j'ai établi un protocole de test, simple et pas trop chiant à attendre :
- 23:59:50
- minuit (qui arrive 10 secondes + tard, ça va)
- minuit et 1 minute (pas trop d'attente).
 
J'suis trop content, j'ai fini par réussir à comprendre un code que je n'ai pas pondu !
 
 
EDIT : l'auteur m'a répondu dans l'intervalle, il avait lui-même corrigé son code !
 
Ancien qui buggue à minuit :

Code :
  1. void LitNombre()
  2. {
  3.   SayTens(tensOut);                             // Dit les dizaines
  4.   if (tensOut > 1 && unitsOut == 1) Parle(28);  // Ajoute si nécessaire 'Et'
  5.   if (tensOut == 0 && unitsOut == 0) Parle(1);  // Dit 'Zéro' si nécessaire
  6.   else SayUnit(unitsOut);                       // Sinon dit les unités  
  7. }


 
Et la version corrigée, qui fonctionne du tonnerre :

Code :
  1. void LitNombre()
  2. {
  3.   SayTens(tensOut);                             // Dit les dizaines
  4.   if (tensOut > 1 && unitsOut == 1) Parle(28);  // Ajoute si nécessaire 'Et'   
  5.   if (tensOut == 0 && unitsOut == 11) Parle(1); // Dit 'Zéro' si nécessaire
  6.   else SayUnit(unitsOut);                       // Sinon dit les unités  
  7. }


 
J'étais pas tombé loin lors de mes essais, mais je n'avais pas pensé à utiliser la fameuse valeur "11 qui ne fait rien".  :jap:


Message édité par Aline BOQS le 28-02-2019 à 05:45:47

---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°248614
_pollux_
Pan ! t'es mort
Posté le 28-02-2019 à 09:32:07  profilanswer
 

Salut !
 
Question interruption.  :)
 
Voulant faire un blink, je me suis dit que je pourrais utiliser une interruption.  
 
J'ai finalement fait sans (j'ai bêtement mis le blink dans la boucle principale sur la base d'un compteur de temps) parce que j'ai lu que tant qu'on peut sans passer, il est mieux de ne pas utiliser d'interruptions.
 
C'est vrai seulement sur arduino ou c'est généralisable à tous les µ ?


---------------
Le topic du sport électronique@hfr : watch the l33t !
n°248616
Natopsi
☄️Just end it already!☄️
Posté le 28-02-2019 à 09:59:27  profilanswer
 

De base l’Arduino utilise des interruptions comme pour la gestion de la liaison série ou du compteur de temps, mais c'est masqué à l'utilisateur.
 
Quand on utilise les interruptions sur Arduino il faut y aller avec prudence car elles peuvent perturber les fonctions de base, notamment si leur exécution dure trop longtemps. Voir cette documentation:
https://www.arduino.cc/reference/en [...] interrupt/
 
Après si tu utilise les atmega sans surcouche Arduino ou d'autres micros, les interruptions deviennent vite indispensables  ;)


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°248619
Turkleton
I don't quite understand you
Posté le 28-02-2019 à 10:13:04  profilanswer
 

C'est pas tant "si on peut s'en passer", mais surtout "est-ce qu'il y a un intérêt à en utiliser ?". Là, pour faire clignoter une LED, je vois effectivement pas l'intérêt (c'est généralement plus souvent utilisé pour que le signal d'un capteur stoppe le déroulement du code pour prioriser une réponse à l'activation de ce capteur).
 
Je sais pas comment tu as fait ton compteur de temps, mais n'hésite pas à aussi regarder du côté des bibliothèques Timer1/Timer3 (même si elles utilisent des interruptions aussi, mais t'as rien à gérer à ce niveau-là :o )


---------------
If you think it could look good, then I guess it should
n°248622
_pollux_
Pan ! t'es mort
Posté le 28-02-2019 à 10:33:52  profilanswer
 

Natopsi a écrit :

De base l’Arduino utilise des interruptions comme pour la gestion de la liaison série ou du compteur de temps, mais c'est masqué à l'utilisateur.

 

Quand on utilise les interruptions sur Arduino il faut y aller avec prudence car elles peuvent perturber les fonctions de base, notamment si leur exécution dure trop longtemps. Voir cette documentation:
https://www.arduino.cc/reference/en [...] interrupt/

 

Après si tu utilise les atmega sans surcouche Arduino ou d'autres micros, les interruptions deviennent vite indispensables  ;)


ça répond parfaitement à ma question... de toute façon, si je me souviens bien, un timer sur un µ normal, c'est en réalité une interruption.

Message cité 1 fois
Message édité par _pollux_ le 28-02-2019 à 10:34:01

---------------
Le topic du sport électronique@hfr : watch the l33t !
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  170  171  172  ..  266  267  268  269  270  271

Aller à :
Ajouter une réponse
 

Sujets relatifs
* Réparations de vos appareils électroniques & electromenager * 
Plus de sujets relatifs à : [arduino] Topic Unique blabla @ Arduino


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR