Programmer avec CODE::BLOCKS et sa Librairie SDL, ROBOTIQUE

Résolu/Fermé
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - Modifié par poparnassus le 21/09/2015 à 08:24
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - 18 avril 2016 à 14:55
Bonjour à tous,

Je n'ai aucune connaissance en programmation je sollicite votre aide une fois de plus,,

Je me suis engager dans un projet robotique assez complexe de mon point de vue (c'est un loisir mais aussi une façon d'apprendre la programmation :-) )
J'ai acheter un châssis tout terrain munis de 6 roue motrice le WILD THUMPER

https://www.sparkfun.com/products/11056

et d'une carte contrôler arduino approprié au moteur, et d'un raspberry.

J'ai choisi de développer avec codeblocks et sa librairie SDL sous Windows7 64bit, es un bon choix ? je ne sais pas. J'ai hésiter à virtualiser linux et coder en python (que je ne connait pas non plus) j'ai lue plusieurs commentaire de développer et apparemment le mieux ce serait d'utiliser python ...

Ce que je souhaite faire c'est de le piloter à distance en wifi depuis une station de pilotage (Ordinateur portable ) vers mon Raspberry B+.

De plus j'ai intégrer une camera au raspberry avec un streamvideo, je stream la vidéo avec MOTION qui me la retransmet via http, ça marche pas très bien j'ai de très gros problème de latence mais je finirai bien par trouver la solution optimal !!!
http://stephane.lavirotte.com/perso/rov/video_streaming.html

Les parties où j'ai énormément de mal, c'est de récupérer les valeurs des joysticks de la manette de xbox 0 et 1, des boutons X,A,B,Y et de les transférer au raspberry pi B +. (qui lui même les transférera à la carte arduino en passant par les broche numérique SDL/SCL).

Ayant aucune connaissance en programmation, JE PATOGE !

J'ai lue les explications des fonctions pour la librairie SDL mais je ne comprends pas comment les intégré a un code source.

Si un développer pourrais m'aider, m'aiguiller rien que sur la façon dont je dois structurer mon programme je lui en serais très reconnaissant !
J'ai lue des quantités incroyables de tutoriels mais ça reste très flou dans ma tête.


Quelque liens qui m'on aidait à comprendre:

https://openclassrooms.com/courses/la-gestion-du-joystick-avec-la-sdl

http://hayj.free.fr/index.php?id_slvl=94

https://alexandre-laurent.developpez.com/tutoriels/sdl/joysticks/

Dans ce tutoriels la il pilote son robot via une manette sans fils en direct sur le raspberry, ce n'est pas mon objectif.
https://www.stuffaboutcode.com/2014/10/raspberry-pi-xbox-360-controller-python.html

Merçi.

A voir également:

2 réponses

poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
21 sept. 2015 à 11:43
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <SDL/SDL.h>

int main(int argc, char **argv)
{
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0)
{
fprintf(stderr,"Erreur lors de l'initialisation de la SDL\n");
return EXIT_FAILURE;
}

SDL_Joystick *joystick = NULL; // on crée le joystick
int numJoystick = SDL_NumJoysticks(); // Compte le nombre de joysticks
printf("Vous avez %d joysticks sur cette machine\n",numJoystick);
if ( numJoystick >= 1 )
{
joystick = SDL_JoystickOpen(0); // on l'assigne au numéro 0
if (joystick == NULL)
{
fprintf(stderr,"Erreur pour ouvrir le premier joystick\n");
return EXIT_FAILURE;
}
SDL_JoystickEventState(SDL_ENABLE); //On valide les evenements de type Joystick

if ( event.type == SDL_JOYAXISMOTION )
{
// Mouvement d'un axe
// Nous devons donc utiliser le champ jaxis
printf("Mouvement d'un axe\n");
printf("%d est la nouvelle valeur de l'axe %d pour le joystick %d\n",event.jaxis.value,event.jaxis.axis,event.jaxis.which);
}
else if ( event.type == SDL_JOYBUTTONDOWN || event.type == SDL_JOYBUTTONUP )
{
// Bouton appuyé ou relâché
// Nous devons donc utiliser le champ jbutton
if ( event.jbutton.state == SDL_PRESSED )
{
printf("Appui sur le bouton %d du joystick %d\n",event.jbutton.button,event.jbutton.which);
}
else if ( event.jbutton.state == SDL_RELEASED )
{
printf("Relâchement sur le bouton %d du joystick %d\n",event.jbutton.button,event.jbutton.which);
}
}
else if ( event.type == SDL_JOYBALLMOTION )
{
// Mouvement de trackball
// Nous devons donc utiliser le champ jball
printf("Mouvement du trackball\n");
printf("La balle %d du joystick %d a bougé de %d;%d\n",event.jball.ball,event.jball.which,event.jball.xrel,event.jball.yrel);
}
else if ( event.type == SDL_JOYHATMOTION )
{
// Mouvement d'un chapeau
// Nous devons donc utiliser le champ jhat
printf("Mouvement du chapeau %d du joystick %d\n",event.jhat.hat,event.jhat.which);
if ( event.jhat.value == SDL_HAT_CENTERED )
{
printf("Retour position neutre\n");
}
if ( event.jhat.value == SDL_HAT_DOWN )
{
printf("Position bas\n");
}
if ( event.jhat.value == SDL_HAT_LEFT )
{
printf("Position gauche\n");
}
if ( event.jhat.value == SDL_HAT_RIGHT )
{
printf("Position droite\n");
}
if ( event.jhat.value == SDL_HAT_UP )
{
printf("Position haut\n");
}
}
}

//Fin du programme
SDL_JoystickClose(joystick);
SDL_Quit();
return EXIT_SUCCESS;
}




DEBUG:
||=== Build: Debug in 6wd_1 (compiler: GNU GCC Compiler) ===|
C:\Projet_C\6wd_1\main.cpp||In function 'int SDL_main(int, char**)':|
C:\Projet_C\6wd_1\main.cpp|28|error: 'event' was not declared in this scope|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



je comprends pas
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
18 avril 2016 à 14:55
0