Programme chiffre par disque(servo-moteur) | Arduino & Co | FORUM

ATTENTION : Même si le site vous reconnait, il est possible que vous deviez vous connecter spécifiquement sur le forum pour pouvoir répondre ou poster un message!

A A A
Avatar

SVP pensez à vous inscrire
guest

sp_LogInOut Connexion sp_Registration S'inscrire

S'inscrire | Mot-de-passe perdu ?
Recherche avancée

— Activité du forum —




— Match —





— Options du forum —





La longueur du mot recherché est au minimum de 3 caractères et au maximum de 84 caractères

sp_Feed Flux RSS du sujet sp_TopicIcon
Programme chiffre par disque(servo-moteur)
28/03/2017
13:45
Avatar
clecle226
New Member
Membres utilistaeurs
Nombre de messages du forum : 2
Membre depuis :
27/03/2017
sp_UserOfflineSmall Hors ligne

//4 digit servo-moteur(disques)
//1 ou 2 servo-moteur pour msg
//servo-moteur pour bulle petit bonhomme

//bouton poussoire 2 (bjr et bye)

//horloge
//memoire sd

// 2 cycle active(vous êtes le viteur Num …) et passifs/attente(cycle de msg)
#include<Servo.h>
#include<math.h>

Servo ListeRouleau[5];
int test = 1;
void setup() {
  (ListeRouleau[1]).attach(5);
  (ListeRouleau[2]).attach(6);
  (ListeRouleau[3]).attach(9);
  (ListeRouleau[4]).attach(10);
  Serial.begin(9600);
}

void loop() {
  delay(1000);
  test++;//simule l’arrivé d’un nouveau visiteur
  DecoupageChiffreEntree(test);
}

void ChiffreParDisque(int rouleau, int chiffre)
{
 Servo appel = ListeRouleau[rouleau];// on appel le bon disque et on fait correspondre le chiffre à la rotation
 switch(chiffre)// 180/11
  {
    case 0:
      appel.write(16);
      break;
    case 1:
      appel.write(32);
            break;
    case 2:
      appel.write(48);
            break;
    case 3:
      appel.write(64);
            break;
    case 4:
      appel.write(80);
            break;
    case 5:
      appel.write(96);
            break;
    case 6:
      appel.write(112);
            break;
    case 7:
      appel.write(128);
            break;
    case 8:
      appel.write(144);
            break;
    case 9:
      appel.write(160);
            break;
    default: //blanc
      appel.write(0);
      break;
  }
}
int UniteOnly(int nombre)
{
  /*int dizaine = (int)(floor((float)nombre/10));
  dizaine = dizaine*10;
  return (nombre-dizaine);*/
  return nombre%10;

}
void DecoupageChiffreEntree(int Entry)
{
  int unite = UniteOnly(Entry);//ces fonctions permettent le découpage du nombre
  int dizaine = UniteOnly((int)(floor((float)Entry/10)));
  int centaine = UniteOnly((int)(floor((float)Entry/100)));
  int mille = UniteOnly((int)(floor((float)Entry/1000)));
  ChiffreParDisque(1, unite);// On envoie l’ordre pour chaque nombre
  ChiffreParDisque(2, dizaine);
  ChiffreParDisque(3, centaine);
  ChiffreParDisque(4, mille);
}

28/03/2017
13:47
Avatar
clecle226
New Member
Membres utilistaeurs
Nombre de messages du forum : 2
Membre depuis :
27/03/2017
sp_UserOfflineSmall Hors ligne

NB: ici les break du switch, ne sont PAS optionnel comme c’est marqué partout sur internet.
si il y a pas break, il n’envoie pas l’information au servo-moteur

28/03/2017
15:27
Avatar
tuxun
Modérateur
Membres utilistaeurs

Membres Administratifs

Moderateurs
Nombre de messages du forum : 61
Membre depuis :
15/01/2014
sp_UserOfflineSmall Hors ligne

Note: Les break ne sont JAMAIS optionnels.

https://www.arduino.cc/en/Reference/SwitchCase

« The break keyword exits the switch statement, and is typically used at the end of each case. Without a break statement, the switch statement will continue executing the following expressions (« falling-through ») until a break, or the end of the switch statement is reached. »

Le mot clé « break » sort de la boucle switch, et est généralement utilisé a la fin de chaque « case ». Sans le mot clé « break », la boucle « switch » continuera d’exécuter les lignes suivantes, jusqu’à ce qu’un « break », ou bien la fin du « switch », soit atteinte. (trad non officielle de la doc officielle arduino, mais de ce que je sais, c’est valable pour tout les switch de tous les langages de prog de la planète (c,java,etc)

 

En gros ce code:

var number=2;

switch(number)

{

case 1:

print(« a »);

case 2:

print(« b »);

case 3:

print(« c »);

}

affiche « bc »….

 

et celui ci:

var number=2;

switch(number)

{

case 1:

print(« a »);

break;

case 2:

print(« b »);

break;

case 3:

print(« c »);

break;

}

affiche « b ».

 

Edit: propre le forum qui transforme les apostrophe en guillemets 😉

a+

Fuseau horaire du forum :Europe/Paris

Nb max. d'utilisateurs en ligne : 22

Actuellement en ligne :
1 Invité(s)

Consultent cette page actuellement :
1 Invité(s)

Auteurs les plus actifs :

Gérard: 10

Mordi: 8

chb: 8

Quentin Drouin: 8

jean-marc-alain: 7

tholdak: 6

Greg: 5

badeyes: 5

Brigitte A: 3

Otaron: 3

Statistiques des membres :

Invités : 0

Membres : 240

Modérateurs : 6

Administrateurs : 8

Statistiques du forum :

Groupes : 5

Forums : 12

Sujets : 79

Messages :349

Nouveaux membres :

Julien Dcalk, cmaphoto37, ChantelleLecourt37, ChantelleLecourt, pascaleosty, Gwen37, clecle226, TyZef, fulpur, Gilles R

Modérateurs : Séb Debeil: 4, Thierry SUTTON: 0, hervedecaux: 2, tuxun: 61, Romain Lalande: 7, Julien Kerlo: 2

Administrateurs : admin: 0, Didier Roudaut: 81, Cyrille: 21, Nico: 34, Shimegi: 28, Fabien Allanic: 6, jf.vigneron: 11, francois: 1

Les commentaires sont clos.