Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - sebastien

Pages: [1]
1
Présentez vous ! / Re : Bonjour a tous
« le: mars 30, 2020, 12:15:13 am »
j'ai trouvé mon erreur mes boucles For ont l'a même variable i. Merci à vous.

2
Présentez vous ! / Re : Bonjour a tous
« le: mars 26, 2020, 08:59:33 am »
Alimentation de labo intensité 10A tension 0-60V. Avec La libraire l'utilisation de millis() pour simuler du multitâche. Pour faire bouger tous les servos en mème temps été catastrophique (mouvement été aléatoire).

3
Présentez vous ! / Re : Bonjour a tous
« le: mars 26, 2020, 08:40:14 am »
Merci pour votre accueille, Pourquoi je n’utilise pas la bibliothèque, pouvoir les faire fonctionner tous en même temps. Pour l'alimentation ces une alimentation stabiliser 5V

4
Présentez vous ! / Bonjour a tous
« le: mars 24, 2020, 09:59:03 pm »
je suis tombé par hasard sur votre forum.  il m'arrive fréquemment de faire de la programmation Arduino pour gérer des trains.  Mon père est un amis son passionné.  ils m'ont demandé de crée un programme pour gérer  x servo programmer avec x bouton et x scénario.
le programme a l'air de fonctionner avec deux servo parce que j'en ai que deux et plusieurs scénario et quand il l'a piqué sur leur gare ça ne fonctionne pas correctement.  je vous laisse le programme en PJ  je n'ai pas utiliser la librairie servo  pour pouvoir les faire fonctionner tous en même temps.  merci d'avance pour le coup de main.  de plus ça peut intéresser quelqu'un et c'est gratuit.  ;) ;)
//-------------------------------------------------------------------  -------------------------------------------------------------------
int       Aiguillage                                    =  0;
int       Senario                                       =  0;
//-------------------------------------------------------------------  -------------------------------------------------------------------
const int PinInBouton   []                              = {8, 9, 10, 11};               // declaration constante de broche
const int PinOutServo   []                              = {2, 3};                       // declaration constante de broche
const int PinOutLed     []                              = {22, 23, 4, 5};               // declaration constante de broche
//-------------------------------------------------------------------  -------------------------------------------------------------------
const int NbrSenario                                    = (sizeof (PinInBouton) / sizeof (PinInBouton[0]));         // le Nbr. de Senario = Nbr. de Bouton
const int NbrAiguillage                                 = (sizeof (PinOutServo) / sizeof (PinOutServo[0]));
int       SenarioActif  [NbrSenario] [NbrAiguillage]    = { 0 };                                                   
boolean   EtatOutLed    [NbrSenario]                    = { LOW };
const int SenarioInitial                                = 0;                                                        // Senario a activé aprés demarrage 0 pour le premier
//-------------------------------------------------------------------  -------------------------------------------------------------------
const int ProgSenario   [NbrSenario] [NbrAiguillage]    = { {1, 2},
                                                            {2, 1},
                                                            {0, 1},
                                                            {0, 2} };                    // 1 pour Voie A - 2 pour Voie B - 0 pour Rien faire
//-------------------------------------------------------------------  -------------------------------------------------------------------
int       AngleVoieA    [NbrAiguillage]                 = {105, 105};                    // La valeur de l'angle est entre 0° et 179°
int       AngleVoieB    [NbrAiguillage]                 = {65, 65};                      // La valeur de l'angle est entre 0° et 179°
int       AngleActuel   [NbrAiguillage]                 = {90, 90};
//-------------------------------------------------------------------  -------------------------------------------------------------------                                 
int           TempsClignotementLed                      = 150;
unsigned long MillisClignotementLed [NbrSenario]        = { millis() };
int           TempsAiguillage                           = 50;
unsigned long MillisAiguillage      [NbrAiguillage]     = { millis() };
//-------------------------------------------------------------------  -------------------------------------------------------------------
void setup()
{
  Serial.begin(115200);
  for (Aiguillage = 0 ; Aiguillage < NbrAiguillage ; Aiguillage++)                        // On initialise les servo
    {
      pinMode(PinOutServo [Aiguillage], OUTPUT);                                          // met la broche en sortie
    }
  for (Senario = 0 ; Senario < NbrSenario ; Senario++)
    {
    pinMode(PinOutLed [Senario], OUTPUT);
    pinMode(PinInBouton [Senario], INPUT_PULLUP);
    digitalWrite(PinOutLed [Senario], EtatOutLed [Senario]); 
    MillisAiguillage [Senario] = millis(); 
    }
  for (int I = 0 ; I < NbrAiguillage ; I++)
    {
      SenarioActif [SenarioInitial] [I] = 1;
    }

  Serial.print("Nbr Aiguillage : ");
  Serial.print(NbrAiguillage);
  Serial.print(" Nbr Senario : ");
  Serial.println(NbrSenario);

    for (Senario = 0 ; Senario < NbrSenario ; Senario++)
    {
      for (Aiguillage = 0 ; Aiguillage < NbrAiguillage ; Aiguillage++)
        {
          Serial.print(" S ");
          Serial.print(Senario);
          Serial.print(" A ");
          Serial.print(Aiguillage);
          Serial.print(" SenarioActif ");
          Serial.print(SenarioActif[Senario][Aiguillage]);
          Serial.print(" ProgSenario ");
          Serial.print(ProgSenario[Senario][Aiguillage]);
         
        }
      Serial.println();
    }

 Serial.println(" Debut ");
}
//-------------------------------------------------------------------  -------------------------------------------------------------------
void loop()
{
  for (Senario = 0 ; Senario < NbrSenario ; Senario++)
    {
      for (Aiguillage = 0 ; Aiguillage < NbrAiguillage ; Aiguillage++)
        {
        ClignotementLed ();
        SenarioMouvementServo ();
        ActionBouton ();
        }
    }
}
//-------------------------------------------------------------------  -------------------------------------------------------------------
void ClignotementLed ()
{   
  if (SenarioActif [Senario] [Aiguillage] == 1 and (millis() - MillisClignotementLed [Senario] >= TempsClignotementLed))
    {
      digitalWrite(PinOutLed [Senario] , !digitalRead(PinOutLed [Senario]));
      MillisClignotementLed [Senario] = millis();     
    }
}
//-------------------------------------------------------------------  -------------------------------------------------------------------
void ActionBouton ()
{
  if (digitalRead(PinInBouton [Senario]) == HIGH)
    {
    for (int I = 0 ; I < NbrAiguillage ; I++)
      {
        SenarioActif [Senario] [I] = 1;
      }
    if (Senario&1)
      {
      for (int I = 0 ; I < NbrAiguillage ; I++)
        {
        SenarioActif [(Senario - 1)] [I] = 0;
        }
      digitalWrite(PinOutLed [(Senario - 1)] , LOW);
      }
    else
      {
      for (int I = 0 ; I < NbrAiguillage ; I++)
        {
        SenarioActif [(Senario + 1)] [I] = 0;
        }
      digitalWrite(PinOutLed [(Senario + 1)] , LOW);
      }       
    }
}
//-------------------------------------------------------------------  -------------------------------------------------------------------
void SenarioMouvementServo ()
{
  if (SenarioActif[Senario][Aiguillage] == 1 and ProgSenario[Senario][Aiguillage] != 0 and (millis() - MillisAiguillage[Aiguillage] >= TempsAiguillage))
    {
      Serial.print(" S ");
      Serial.print(Senario);
      Serial.print(" A ");
      Serial.print(Aiguillage);
      Serial.print(" = ");
      Serial.print(ProgSenario[Senario][Aiguillage]);
      if (ProgSenario[Senario][Aiguillage] == 1 and AngleActuel[Aiguillage] < AngleVoieA[Aiguillage])
        {
          Serial.print(" + ");
          AngleActuel[Aiguillage] = AngleActuel[Aiguillage]+1;
          digitalWrite(PinOutServo[Aiguillage], HIGH);               //active le servomoteur
          delayMicroseconds(((AngleActuel[Aiguillage]*10) + 600));  //pause en microseconde
          digitalWrite(PinOutServo[Aiguillage], LOW);              //désactive le servomoteur           
        }
      else
        {
          Serial.print(" /+ ");
        }
      if (ProgSenario[Senario][Aiguillage] == 2 and AngleActuel[Aiguillage] > AngleVoieB[Aiguillage])
        {
          Serial.print(" - ");
          AngleActuel[Aiguillage] = AngleActuel[Aiguillage]-1;
          digitalWrite(PinOutServo[Aiguillage], HIGH);               //active le servomoteur
          delayMicroseconds(((AngleActuel[Aiguillage]*10) + 600));  //pause en microseconde
          digitalWrite(PinOutServo[Aiguillage], LOW);              //désactive le servomoteur             
        }
      else
        {
          Serial.print(" /- ");
        }
      if ((ProgSenario[Senario] [Aiguillage] == 1 and AngleActuel[Aiguillage] == AngleVoieA[Aiguillage]) or (ProgSenario[Senario] [Aiguillage] == 2 and AngleActuel[Aiguillage] == AngleVoieB[Aiguillage]))
        {
          Serial.println(" ° ");
          for (int I = 0 ; I < NbrAiguillage ; I++)
            {
              SenarioActif [Senario] [I] = 0;
            }
          digitalWrite(PinOutLed [Senario] , HIGH);   
        }
      else
        {
          Serial.print(" /° ");     
        }
      MillisAiguillage [Aiguillage] = millis();     
    }
 
}
//-------------------------------------------------------------------  -------------------------------------------------------------------

Pages: [1]