Niveau région nous on est à Paris.
Du coup si y'a besoin je sais qu'il y a un fablab ou un peut s'inscrire genre pour un semestre et si tu viens avec ta matière tu peut utiliser les imprimantes 3D et compagnie donc faut voir.
Sinon je pensais effectivement passer par l'interface série de l'arduino.
Pour faire très simple le code principal devrait ressembler à ça :
compteur pli = 0
tant que rupteur = 0 // rupteur étant la valeur envoyée par le microrupteur
pli à gauche
pli à droite
compteur = compteur + 1
afficher compteur
donc après me reste juste à trouver les bonnes librairies pour gérer le moteur et le microrupteur.
Dans l'ensemble ça a pas l'air hyper compliqué, faut juste trouver le matos bien adapté
Histoire de coller un peu plus à l'architecture final du code sur l'arduino et d'avoir quelque chose de propre je me permet de te proposer ça comme ça :
// Structure de Code V0 proposé par mike118 le 26/09/2015
// Projet Machine de résistance au double plis type MIT
// Fonctionnalité : comptage de double pli avant rupture du matériel testé
// => Le test se lance via le moniteur série par l'opérateur
// => après rupture le moniteur série affiche le résultat
// Code complété par ..... le ... Version
// Version actuelle : V0
// Inclusion des librairies de forme #include<librairie.h>
// à remplir
#define BAUD 9600 // déclaration des defines
// à remplir
//déclaration des variables globale ( le minimum possible pour un code propre)
int compteur=0;
void setup()
{
initPins();
initSerial(BAUD);
initVariables();
initPosition();
// initInterrupt (); Pas utile pour le cas présent mais si tu veux te la péter tu peux mettre une interruption sur le microrupteur ;)
}
void loop()
{
if(checkSerial())
{
while(!rupture())
{
pliDroite();
pliGauche();
compteur++;
}
display(compteur);
initVariables();
initPosition();
}
}
// Fonctions d'initialisation
void initPosition() // met le moteur en position initial
{
// à remplir
}
void initVariables() // initialise les variables ( compteur ) à 0
{
// à remplir
}
void initSerial( int baud) // initialise le port série pour communiquer avec le PC
{
// à remplir
}
void initPins() // initialise les entrées et sortie de la carte
{
// à remplir
}
// Fonctions d'usage
void pliDroite() // le moteur effectue le pli à droite
{
// à remplir
}
void pliGauche() // le moteur effectue le pli à gauche
{
// à remplir
}
void display(int count) // On affiche le résulta sur le moniteur série
{
// à remplir
}
int checkSerial() // On regarde si l'utilisateur lance le test de rupture via le moniteur série et on retourne le résultat
{
int result=0;
// à remplir
return result;
}
int rupture() // On regarde si il y a eu rupture et on retourne le résultat
{
int result=0;
// à remplir
return result;
}
Tu peux copier coller, ça compile
Il suffit juste de compléter aux endroits où j'ai marqué " à remplir" en commentaire
Pour le microrupteur pas de librairie, c'est comme un bouton brancher sur le pin PINBOUTON : " digitalRead( PINBOUTON) " fera l'affaire
par contre bien définir que le pin en question est en entré avec pinMode( PINBOUTON ) dans la fonction initPins().
Pour le moteur si c'est un servo tu as la librairie servo . Pour les moteur pas à pas perso j'utilise un driver qui permet de commander le moteur pas à pas avec 3 fils et dans ce cas c'est suffisament simple pour ne pas nécessiter de librairie.
Sinon si c'est les moteurs dynamixel ils ont une librairie très complète dont dynamixelSerial .
Bon je m'arrête là et te laisse compléter et chercher un peu par toi même
PS: cette structure n'est qu'une proposition, libre à toi de la copier coller tel quelle de la modifier, la simplifier ou de l'ignorer...
Perso je suggère de changer le nom des fonctions pour quelle te soient le plus naturelle possible, par contre je te suggère de respecter le type de casse des "VARIABLES" pour les defines, "variableCompose" pour les fonctions , "variable" pour les variables standards.
++