Show Posts
Pages: 1 [2] 3 4 ... 6
16  International / Français / Question optimisation du code on: July 02, 2013, 05:58:20 am
Bonjour,

je m'interroge sur quel est la meilleure façon de faire "tourner en rond" une variable.
En l’occurrence, quelle est le mieux entre ces deux codes possible

Code:
i++;
if (i>n) {i=0;}

Code:
i=(i+1)%n;

Le deuxième faisant l'impasse sur un if me semble a priori plus rapide, mais pas aussi clair a la relecture. Et puis pas sur que le modulo soit plus rapide qu'une condition au final.
17  International / Français / Re: Quetion dans la réflexion d'un projet ? moteur et capteur de position ? on: May 18, 2013, 12:22:21 pm
Sur un autre forum un membre a créé un variateur pour moteurs universels qui peut être piloté par microcontroleur.
Le hardware pourrais être un bonne base pour ton projet, il te restera plus qu'a piloter le software pour l'asservissement de la vitesse.

http://forums.futura-sciences.com/projets-electroniques/589993-un-drive-a-frequence-variable-moteurs-diphases.html

En tous cas c'est une question qui m’intéresserais, si j'avais le temps de m'y pencher :/
18  International / Français / Re: Communication modbus/TCP RJ45 on: May 10, 2013, 05:31:17 pm
Bonjour,

A mon avis l'arduino est plus adapté a realiser des "trucs" qui se comporteront en esclaves qu'en maitre. Et lui greffer un module ethernet pour lui faire causer un modbus, ca me semble un peu luxueux.
Pour realiser une SCADA, un raspberry pi me semble plus adapté que l'arduino, quitte a ce qu'il commande des arduino qui agiront en tant qu'esclave.
Du reste si tu regarde les composants utilisé dans les automates indus et dans leurs cartes de commande, curieusemement les composants de certains automates ressemblent (vaguement) a un rapsberry, et ceux de leurs cartes a un arduino.

Maintenant le modbus TCP ca ressemble beaucoup a du modbus ASCII (sans le CRC en gros), sauf qu'on l'encapsule dans des paquets TCP au lieu de les balancer directement sur une interface serie.
19  International / Français / Re: Envoyer des donnée à arduino via un programme en C on: May 06, 2013, 04:38:15 pm
Quel OS ? quel IDE ? (code::blocks c'est vachement bien je trouve)

un fprintf c'est assez standard pour ecrire des trucs vers un port serie, par contre la façon d'ouvrir le port série en question avant d’écrire des trucs dedans, ca c'est plus chiant : y'a 1200 variantes :/
20  International / Français / Re: Comment fait-on pour arrêter la boucle ? on: April 23, 2013, 11:43:30 am
Bonjour a tous, je suis un amateur dans le domaine de la programmation par contre je maîtrise la programmation d'automates.

J'ai du mal à comprendre comment c'est possible... La logique de programmation d'un automate ou d'un arduino est totalement identique.
M'enfin, pour répondre, soit tu fais comme l'a dit Geeker soit tu utilises break combiné à un if ou un switch à l'intérieur de la boucle.


Justement non, il y'a pleins de choses que fait l'OS de l'automate

D'abords la com' avec ses cartes, puis la console, puis la supervision.
Ensuite la recopie des entrées en mémoire, la gestion des temporisation internes, parfois la gestion des fronts (pour les API qui savent faire, et si le programme les utilise (perso je les programme a la main mes fronts. Des fois je programme aussi mes tempos a la main, c'est plus pratique pour la supervision))
Ensuite l’exécution du programme de l'utilisateur.
Ensuite seulement la mise a jour des sorties physiques (via parfois un coup de com avec les cartes, mais en évitant le doublon avec ce qu'il fait en début de cycle)
Puis enfin un rebouclage.


Ajoute a cela les taches sous interruptions qui ont une gestion particulière, et la prog d'initialisation au premier cycle.

On peut utiliser un arduino pour remplacer un automate, mais il faut y rajouter un mini OS qui gère les trucs en plus dont on a besoin (on a pas forcement besoin de toutes les fonctions d'un automate).
21  International / Français / Re: Anémomètre pas cher. on: April 17, 2013, 12:39:50 pm
Personnellement je mettrais un coup de peinture noir/blanc sur une pièce en rotation du souffleur, et je compterais les impulsions d'un capteur optique qui détecterais ces changements de couleurs.

Pas de pièces en contact, pas de pertes, pas d'usure. Et si tu connais la courbe de ton ventilateur, facile de calculer le débit en fonction de la fréquence des tops.

A priori si ton souffleur tourne, il débite de l'air. A moins que les pales soient cassées.
22  International / Français / Samples pour étudiants. on: April 17, 2013, 12:31:04 pm
Bonjour a tous.

Ayant repris des études a la rentrée précédente, ma carte étudiant et la messagerie de mon IUT est encore valide quelques semaines avant la fin de mon cursus.
Bidouilleur électronique a mes rares heures perdues, je voudrais faire un stock de composants obtenus en samples tant que j'y ai encore le droit, quitte a déballer le tout plus tard.
(Pour le moment je suis en stage de fin d'études, et j'ai mon rapport et l'examen final a préparer, mes PICs et mes Arduinos dorment dans des boites de bonbons Haribo ^^).

Quels sont a vos avis les produits les plus utiles, faciles a obtenir et intéressant pour quelqu'un qui bricole juste pour le plaisir d'apprendre de nouvelles choses ?
A priori je suis plus intéressé par les capteurs divers que par des trucs qui se programment (j'en ai déjà pleins des trucs qui se programme), mais je suis ouvert a de nouvelles découvertes.


Merci de vos conseils éclairés.
23  International / Français / Re: Es-ce possible d'avoir 3.3V avec Arduino Pro mini on: April 07, 2013, 09:54:34 am
Avec le 5v de ton arduino tu alimente aussi le module GPS, et tu rajoute 1 ou 2 diodes en série sur le 5v pour alimenter ton module GPRS, il verra 0.6 et 1.4 V de moins (0.6 a 0.7v de chute de tension par diode. a voir combien tu en mets et quel modèle tu as sous la main).
24  International / Français / Re: Recuperation vitesse ethernet on: March 24, 2013, 08:21:05 am
L'ethernet c'est pas vraiment l'idéal pour faire du 'vrai' temps réel. Tu ne maitrise pas le temps que tes données mettent a être transmises du point A au point B.
En fait tu ne sait même pas si elles vont arriver un jour.
25  International / Français / Re: Comment connaître les limites en vitesse du microcontrôleur ? on: March 20, 2013, 04:49:20 pm
Bonjour,

un énorme +1 pour l'optimisation du code.
L'IDE arduino est très pratique, mais certaines de ses fonctions ne sont pas du tout optimisées pour la vitesse, mais plutôt pour la réutilisation facile du code.
Tu peut très bien "taper" directement dans les registres dans tes programmes arduino. Rien que le temps passé pour faire changer 1 sortie d’état et drastiquement changé.
De même tu peut aussi intégrer du code assembleur direct a l’intérieur de la structure principale de ton code en C.

60 octets par secondes, c'est juste super lent pour l'UART de l'arduino. A 9600 bauds, sa vitesse minimum / 11 bit par "coup de transmission" (1 bit de start, 1 stop, 1 parité + 8 bits de données) tu arrive a 872 octets par secondes. A 31250 bauds tu va un peu plus de 3 fois plus vite.
De plus c'est géré en hardware, avec un petit buffer et tout, laissant au CPU du temps pour faire sa petite cuisine pendant que l'UART se charge d'envoyer le paté. Ça ne ralenti presque pas ton code tant que le buffer n'est pas saturé.

Le temps d’acquisition d'une entrée ana je ne m'en rapelle plus exactement mais il est de l'ordre de quelques micro secondes il me semble. De plus sur les PIC je sait qu'on peut le raccourcir a condition de sacrifier une partie de la régulation. Sur l'arduino je pense qu'on peut faire la même chose, a condition de taper dans les registres au lieu d'utiliser les fonctions toutes faites.


Si tu peut modifie ton code pour allumer la led pendant que tu fait des trucs, et éteins la quand tu attends et que tu ne fait rien.
Avec un coup d'oscilloscope tu pourra mesurer avec précision le temps qu'il te reste disponible.
Rien que visuellement tu sera surpris de la voir briller aussi peu, voire pas du tout si ton code est optimisé a fond.

26  International / Français / Re: réaliser un moniteur série avec processing ou java on: December 05, 2012, 03:29:47 pm
Des "sniffers" de trames Ethernet ça existe déjà tout fait, je vois pas l’intérêt de réinventer la roue.

Le Bluetooth étant une liaison point a point par contre, ça risque d’être plus chiant d'intercepter les trames. A priori je vois pas bien comment on pourrais s'y prendre.


Ensuite une fois que tu as tes données dans une base SQL, IMHO le mieux c'est de coder un p'tit truc en PHP (ou de trouver un truc tout fait, on doit pas etres les premiers a vouloir faire des courbes et des stats a partir de données météo), comme ca tu peut les visualiser sur ce que tu veux.
Du reste c'est pour ca que je veux virer mes fichiers .csv et passer en SQL. Je suis a peu pres sur que le reste existe.
27  International / Français / Re: réaliser un moniteur série avec processing ou java on: December 05, 2012, 12:45:59 pm
Salut,


Aidé par des membres du forum, j'ai fait une mini station météo avec un arduino qui lit des températures avec des sondes DS18b20, puis qui les envoie via bluetooth a mon macbook pro (avec quelques données supplémentaires, mais toutes ne marchent pas très bien. il faut que je m'y remette pour la lecture de l'humidité notamment)
J'utilise une bibliothèque "softwareserial" sur l'arduino avec le puce bluetooth branchée sur des broches autres que celles utilisée par le convertisseur usb/serie d'origine (moins de problèmes pour reflasher et/ou debug qu'avec un arduino bluetooth)

Coté Mac je réceptionne les données avec processing, je trace des courbes et je les enregistre dans un fichier .csv
La encore ca ne marche pas toujours super bien. Par moments je fonctionne 15 jours d'affilé sans problèmes, mais a d'autres période la liaison BT se coupe toutes les 5 minutes.
Je n'ai pas réussi a identifier le problème (soft ou hard , aucune idée)
Je pense que je finirais par réécrire le programme de réception des données en C, et par stocker les données dans une base de données plutôt que dans des fichiers textes, parce que processing bouffe quand même pas mal de ressources CPU par rapport au peu de boulot qu'il fait finalement.
(J'ai deja eu quelques cours d'initiation au C, normalement on va approfondir la chose d'ici quelques semaines. En processing je suis un noob complet, mais le langage est facile a prendre en mains "pour commencer". Pour le maitriser vraiment par contre ça se complique pas mal apparemment)
La gestion des erreurs de com' en processing je ne suis pas certain de reussir a la faire.
En C je pense que j'en aurais les moyens une fois mes cours terminés (théoriquement.)

J'ai posté des vidéos de mes expérimentations du dailymotion (ou youtube, je sait plus ^^).
Le codes sources (pas a jour, mais bien avancés) de l'ensemble sont sur mon blog. Je crois que y'a les liens vers les videos aussi.


Je crois qu'il y'a le lien dans ma signature.

Ca fait déjà un petit moment que l'ensemble tourne en version "beta", et que je n'ai pas le temps de finir le tout.
J'ai repris mes études a la rentrée, depuis je n'ai plus le temps de rien. Je ne pensait pas qu'une licence pro c'est autant de boulot ! (mais c'est passionnant et très instructif)
28  International / Français / Re: processing : boucle on: September 17, 2012, 02:17:04 am
Processing ne remets a jour l'affichage que qd tu sort de la fonction draw() (enfin je crois).

Dans tes 2 derniers prog il dessine tes trucs quelquepart dans la mémoire de l'ordi, il le remets jamais a jour a l'ecran juste avant de l'effacer a nouveau.

Il faut soit que tu mette un redraw() quelque part dans ta boucle pour forcer l'affichage de ce que tu viens de dessiner, suivi d'une petite pause qui laisse le temps de voir ce que tu as fait. (40 ms me semble un bon temps pour avoir 25 images/secondes. Plus tu diminue et plus tu verra l'image clignoter, et a 0 tu ne verra plus rien)

Tu peut aussi jouer avec fps() dans la fonction setup, en mettant un valeur <20 tu aura plus de temps pour voir l'image affichée avant qu'elle soit effacée mais e rendu risque d'etre tout moche.
29  International / Français / Re: [Ultra Débutant] - Récupérer le poids calculé par une balance on: September 10, 2012, 06:47:04 am
Tu arrive a visualiser les trames dans hyperterminal ou un soft du genre ?
En général les balance ca envoie du texte soit en boucle, soit qd on appuie sur un bouton, soit quand la mesure change.

Elles peuvent être rendues illisible a cause des réglages de communications mauvais, ou peut être parce que ce n'est pas les bonnes sortes de variables.

500 en texte ou 500 dans un int, ca peut donner de la grosse bouillie de bits.
30  International / Français / [HS] bibliothèque pour communication série on: September 08, 2012, 02:16:41 pm
Bonjour,

D'abord excusez moi pour cette question un peu HS par rapport a l'arduino, mais pas tant que cela.
Mon arduino envoie des trames via le port série (enfin usb to serial) a mon ordi (PC ou mac selon l'humeur, plus tard ça sera probablement un raspberry pi qui sera dédié a ce job).
Pour le moment j'utilise processing pour les récupérer, mais en fait je suis pas trop a l'aise avec, et je voudrais plutôt écrire mon programme "récepteur" de données en C (et non en C++, enfin pas pour l'instant parce que j'ai vraiment du mal avec la prog objet), portable le simplement possible entre mac os, windows puis linux plus tard.

Je cherche une bibliothèque pour Code::Blocks qui me permettrait de causer via le port serie avec mon arduino en C, et qui serais multiplateforme.


Pages: 1 [2] 3 4 ... 6