PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum PCSHM (Playseats, cockpits et simulateurs home-made)
Discussions à propos des cockpits et simulateurs faits maison, dédiés aux jeux de courses automobiles.
 
 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Arduino

 
Poster un nouveau sujet   Répondre au sujet    PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum -> Le paddock -> Autres sujets
Sujet précédent :: Sujet suivant  
Auteur Message
antares-dk
Occasionnel
Occasionnel

Hors ligne

Inscrit le: 15 Nov 2016
Messages: 12
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Nord-Pas-de-Calais
Département (France): 59- Nord
Ville: Hondschoote
03/11/1975 Masculin
Point(s): 219
Moyenne de points: 18,25

MessagePosté le: Ven 9 Déc - 02:25 (2016)    Sujet du message: Arduino Répondre en citant

Bonjour à tous...

Je ne sais pas trop ou poster mon problème qui concerne la programmation sur Arduino. Il est vrai que je pourrais aller poster sur un forum spécialisé mais vu que c'est pour programmer un code en rapport avec les simulateur ce serait plus utile de garder une trace ici. N'ayant pas trouvé de rubrique dédié à la programmation Arduino je la place ici (Si ce n'est pas la bonne place, je m'en excuse d'avance).

Voici mon projet :
Récupérer les informations d'un jeux (via un programme en C++ que je développerais plus tard ou utiliser un logiciel existant) puis les envoyer à la carte Arduino (UNO) via la liaison série USB qui pilotera les instruments de bord du cockpit (Tableau de bord).


Mon programme Arduino doit donc surveiller la liaison série, vérifier si de nouvelles données sont arrivées, les traiter puis les envoyer au compteur via les sorties.
Je prévois d'envoyer les données sur la liaison série sous formes de chaine avec des séparateurs.

Exemple de réception (Carte Arduino) :


 
Réception 1

Citation:
Kmh=120;Rpm=1200;HandBrake=1;Lights=0;

Imaginons qu'une ou d'autre variable changent

Réception 2 >>


 
Citation:
 Kmh=160;Rpm=3200;

Réception 3 >>

 
Citation:
Lights=1;


Mon programme en C++ ou autre n'enverra que les valeurs qui ont changé histoire de ne pas monopoliser la liaison série de l'Arduino en renvoyant toutes les valeurs.
C'est un peu le principe des IOCARD avec le protocole IOCP. Le serveur n’envoie que les variables qui ont changé.

L'idée est de parser les paramètres détectable avec le caractère ";" puis de récupérer les valeurs en détectant le "="

j'ai donc regarder du côté des fonctions présente dans l'Arduino... et il me semble donc devoir utiliser

 
Code:
position = donnees.indexOf(separateur); 

pour détecter la position de mon caractère qui sépare les paramètres présent dans mon buffer.
puis de récupérer le message à l'aide de


 
Code:
 Chaine = donnees.substring(0,position);

Avec des boucles tout ceci fonctionne bien, je récupère mes paramètres et les valeurs (une deuxième fonction se charge de rescinder la chaine avec le "=".

Mon problème étant surtout le stockage des paramètres avec les valeurs... Mais surtout le fait que la trame reçue risque de changer totalement d'un échange à l'autre vu mon principe de n'envoyer que les valeurs qui ont changées...

Exemple d'un tableau..

Lors de la première réception :
Array[0] contiendrait par exemple la vitesse = 120
Array[1] contiendrait les rpm = 1200
Array[2] Frein à main Actif
Array[3] Lumière éteinte...

Lors de la seconde réception :
Array[0] contiendrait par exemple la vitesse = 160
Array[1] contiendrait les rpm = 3200

Lors de la troisième réception :
Array[0] Ligth = 1

Bref ma boucle ne range pas les paramètres toujours au même endroit dans le tableau de stockage réfléchi ,
je peux très bien mettre en place un test du type de paramètre (genre Si param="Kmh") et faire un switch case mais cela va gonfler le code du parseur pour ranger les données toujours à la même place... et côté mémoire un tableau sa prend de la place et l'arduino (uno) n'en aurait pas bcp apparemment

Sachant que dans le loop je souhaire avoir une fonction GaugeSpeed(kmh)... c'est elle qui enverrait la valeur au compteur avec le bon signal...
Dans mon loop je n'aurais qu'a appeler ma fonction et lui passer la valeur récupérer par la liaison série...

Bref je ne sais pas trop comment m'y prendre... mur

Est il possible d'utiliser des chaines de caractères pour un tableau par exemple Array[kmh] ?

J'ai vu qu'il était possible de se faire une bibliothèque (fichier d'entête et cpp)... ne devrais je pas plutôt partir sur un code C qui me ferait tout le parsage ?

Dans le cas ou une solution (code Arduino) plus simple existerait au cas ou je serais parti dans du trop compliqué je suis preneur :-D

Voici un exemple d'envoi sur le port série... l'arduino ne fait qu'un Serial.print pour le moment...




Mes premiers pas sont quelques peu hasardeux car je ne connais pas trop la bestiole et ce qu'elle est capable de faire...

Pour l'utilisation des Timers afin de générer deux signaux distincts à fréquence variable je ne trouve rien... j'ai trouver des trucs pour faire des sinuzoides, des hachages, des pwm mais rien qui ne fasse que varier la fréquence d'un signal avec un rapport cyclique à 50% bref des usines à gaz mais rien de simple...

_________________
Si tu comprends pas quelque chose au bout de cinq minutes... repasse plus tard... si plus tard tu ne comprend toujours pas reviens le lendemain...
Si le lendemain tu n'as toujours pas compris c'est que c'est toi le problème !


Revenir en haut
Visiter le site web du posteur
Publicité






MessagePosté le: Ven 9 Déc - 02:25 (2016)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 831
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 155 526
Moyenne de points: 10,49

MessagePosté le: Ven 9 Déc - 12:35 (2016)    Sujet du message: Arduino Répondre en citant

Il ne faut pas procéder tout à fait comme ça.

Déjà je te conseille d'utiliser un soft existant (Simtools, par exemple que l'on utilise aussi pour nos simulateurs).
Il faut faire en sorte que le format des trames reçues soit toujours le même, par exemple :
RSGFL, etc...

Ensuite, pourquoi essayer de réinventer quelque chose qui a déjà été fait des dizaines voir des centaines de fois :B
http://pcshm-simulateurs-homemade.clicforum.com/t748-Aide-dashboard.htm
http://pcshm-simulateurs-homemade.clicforum.com/t635-Projet-de-dashboard-de-titouf.htm

Et surtout celui-là qui te sera très utile : http://pcshm-simulateurs-homemade.clicforum.com/t306-Tuto-Fabrication-d-un-compteur-num-rique-et-analogique-DIY.htm
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
antares-dk
Occasionnel
Occasionnel

Hors ligne

Inscrit le: 15 Nov 2016
Messages: 12
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Nord-Pas-de-Calais
Département (France): 59- Nord
Ville: Hondschoote
03/11/1975 Masculin
Point(s): 219
Moyenne de points: 18,25

MessagePosté le: Sam 10 Déc - 00:20 (2016)    Sujet du message: Arduino Répondre en citant

Merci pour les liens...

Je vais étudier ca, ca devrait m'aider dans mon projet...

Mon but premier n'est pas de réinventer la roue, je souhaites donc prendre le maximum de ce qui a déjà été fait, le seul hic c'est que dans mon projet de piloter un intérieur de BMW série 3 y'a pas grand monde qui l'ont déjà fait, et il ni y'a donc pas beaucoup d'infos...

En tout cas tes liens me servirons d'inspirations et certainement lorsque je ferais le pit d'un Scania vu que récuperer un interieur de camion pour 0€ ca risque d'être dur, donc je vais certainement devoir faire le dashboard et partir sur une soltion servo et arduino...

Bref ca me servira...
Je reviendrais poster mon code Arduino dès que j'aurais passé le stade des bétas bug en tout genre !
_________________
Si tu comprends pas quelque chose au bout de cinq minutes... repasse plus tard... si plus tard tu ne comprend toujours pas reviens le lendemain...
Si le lendemain tu n'as toujours pas compris c'est que c'est toi le problème !


Revenir en haut
Visiter le site web du posteur
antares-dk
Occasionnel
Occasionnel

Hors ligne

Inscrit le: 15 Nov 2016
Messages: 12
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Nord-Pas-de-Calais
Département (France): 59- Nord
Ville: Hondschoote
03/11/1975 Masculin
Point(s): 219
Moyenne de points: 18,25

MessagePosté le: Lun 12 Déc - 01:51 (2016)    Sujet du message: Arduino Répondre en citant

Salut,

Bon j'ai regardé ce tuto : http://playground.arduino.cc/Code/PwmFrequency

j'ai donc repris le code, mais en dessous de mon loop

Dans mon loop j'ai donc placé une configuration :


 
Code:
 void loop(){

    analogWrite(9,75);
    analogWrite(10,128);
    setPwmFrequency(10, 256);
    setPwmFrequency(9,1024);
}


Le changement du rapport cyclique ne change rien à la position des aiguilles, je peux donc faire varier le rapport cyclique sans aucun effet derrière...
Pour le changement de fréquence, d'après le tuto je ne peux que jouer sur le diviseur si j'ai bien compris.

Les valeurs possibles sont 1/8/32/64/128/256/1024.

Si je change le diviseur de la pin 10 premier appel de setPwmFrequency cela n'a aucun effet...
Toujours d'après le tuto et les caractéristiques de la carte la pin 9 et 10 sont sur le même timer.

C'est donc le deuxième (dernier appel) de setPwmFreqency qui paramètre le timer... c'est tout a fait loqiue c'est la dernière instruction appelante qui compte.
bref pour mon cas ce n'est pas très glorieux...
 Car ma fréquence ne varie que de pas en pas en fonction du diviseur... le nombre de pas n'est pas très peuplé :-D
je peux donc rouler à 22 Kmh (1024), 90 Kmh (256),  et une autre vitesse qui va au taquet du compteur... genre 350 Kmh.

Pour le valeur du compte tour elle change aussi (vu que je suis sur la pin 10 et donc timer1).

je pourrais eventuellement changé le compte tour de pin pour le faire passer sur un autre timer mais au vu du nombre de pas du diviseur ce n'est pas très linéaire comme mouvement... je continu de creuser
_________________
Si tu comprends pas quelque chose au bout de cinq minutes... repasse plus tard... si plus tard tu ne comprend toujours pas reviens le lendemain...
Si le lendemain tu n'as toujours pas compris c'est que c'est toi le problème !


Revenir en haut
Visiter le site web du posteur
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 831
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 155 526
Moyenne de points: 10,49

MessagePosté le: Lun 12 Déc - 10:45 (2016)    Sujet du message: Arduino Répondre en citant

Tu n'es pas limité qu'aux diviseurs. Tu peux aussi être plus précis s'il te faut une fréquence particulière. Regarde ce tuto sur RFR : http://www.racingfr.com/forum/index.php?showtopic=47537

Quelles que soient les commandes que tu utilises, il faut partir sur la même base. A partir de là si tu sais comment tu peux piloter tes afficheurs alors on peut facilement adapter le code en conséquence.
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
antares-dk
Occasionnel
Occasionnel

Hors ligne

Inscrit le: 15 Nov 2016
Messages: 12
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Nord-Pas-de-Calais
Département (France): 59- Nord
Ville: Hondschoote
03/11/1975 Masculin
Point(s): 219
Moyenne de points: 18,25

MessagePosté le: Mar 13 Déc - 01:19 (2016)    Sujet du message: Arduino Répondre en citant

Salut,

merci pour ton liens, j'étais parti pour tester mais un gros bug m'a obligé à rebrousser chemin.

Il ni y'a plus moyen de téléverser quoi que ce soit sur la carte...
j'ai d'abord supçonné le programme (celui en lien et que je voulais tester).

j'ai donc remis un setup() et loop() complètement vide..

mais rien ni fait toujours une erreur de téléversement...


 
Citation:

 Problème de téléversement vers la carte. Voir http://www.arduino...../troubleshooting

avrdude:stk500_getsync() attempt 10 of 10 : not in sync resp=0x40



Je vois bien la led Rx qui clignote (comme au début)... mais la TX reste muette... la carte est tombée dans le comma...
Pourtant hier soir après mes essais elle fonctionnait encore et rien a été modifié sur le câblage.

J'ai changer de port usb, tout débranché sauf l'usb, appuyez sur le bouton rouge (reset).
Mais même avec tout ca...

Rien donc je laisse tombé pour ce soir, je vais aller modélisé sur FreeCAD, histoire de pas m'enervé sur la carte !
_________________
Si tu comprends pas quelque chose au bout de cinq minutes... repasse plus tard... si plus tard tu ne comprend toujours pas reviens le lendemain...
Si le lendemain tu n'as toujours pas compris c'est que c'est toi le problème !


Revenir en haut
Visiter le site web du posteur
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 831
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 155 526
Moyenne de points: 10,49

MessagePosté le: Mar 13 Déc - 17:05 (2016)    Sujet du message: Arduino Répondre en citant

Change la version de ton logiciel Arduino, prends une plus vieille ou la toute dernière. J'ai déjà eu ça, c'est pénible mais je soupçonne les mises à jour du logiciel de faire ça réfléchi
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 10:29 (2017)    Sujet du message: Arduino

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum -> Le paddock -> Autres sujets Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum gratuit | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2017 phpBB Group
Traduction par : phpBB-fr.com powered by ArgenBLUE free template