IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Comment modifier le temps dans le programme Arduino? (de secondes en minutes)


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut Comment modifier le temps dans le programme Arduino? (de secondes en minutes)
    Bonjour,
    dans mon programme Arduino, ma plage de temps qui est modifier par mon potentiomètre va de 0 seconde à 30 secondes,
    mon objectif est que la plage de temps soit de 0 seconde à 15 minutes.
    Comment faire?

    Ceci est pour un arrosage automatique permettant de piloter 12 électrovannes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    int led1=12;
    int led2=13;
    int led3=2;
    int led4=3;
    int led5=4;
    int led6=5;
    int led7=6;
    int led8=7;
    int led9=8;
    int led10=9;
    int led11=10;
    int led12=11;
     
    int v,v2;
     
    int pot=0;
     
     
    const int buttonPin2 = A2;
    const int buttonPin3 = A3;
    const int buttonPin4 = A4;
    const int buttonPin5 = A5;
    const int buttonPin6 = A14;
    const int buttonPin7 = A15;
    const int buttonPin8 = A8;
    const int buttonPin9 = A9;
    const int buttonPin10 = A10;
    const int buttonPin11 = A11;
    const int buttonPin12 = A12;
    const int buttonPin13 = A13;
     
     
    const int buttonPin = A1;
     
    int buttonState = 0;
     
    int buttonState2 = 0;
    int buttonState3 = 0;
    int buttonState4 = 0;
    int buttonState5 = 0;
    int buttonState6 = 0;
    int buttonState7 = 0;
    int buttonState8 = 0;
    int buttonState9 = 0;
    int buttonState10 = 0;
    int buttonState11 = 0;
    int buttonState12 = 0;
    int buttonState13 = 0;
     
    int etat=0;
    int prevetat=0;
     
     
    void setup() {
     
     
     pinMode(buttonPin2, INPUT);
     pinMode(buttonPin3, INPUT);
     pinMode(buttonPin4, INPUT);
     pinMode(buttonPin5, INPUT);
     pinMode(buttonPin6, INPUT);
     pinMode(buttonPin7, INPUT);
     pinMode(buttonPin8, INPUT);
     pinMode(buttonPin9, INPUT);
     pinMode(buttonPin10, INPUT);
     pinMode(buttonPin11, INPUT);
     pinMode(buttonPin12, INPUT);
     pinMode(buttonPin13, INPUT);
     
     pinMode (led1,OUTPUT);
     pinMode (led2,OUTPUT);
     pinMode (led3,OUTPUT);
     pinMode (led4,OUTPUT);
     pinMode (led5,OUTPUT);
     pinMode (led6,OUTPUT);
     pinMode (led7,OUTPUT);
     pinMode (led8,OUTPUT);
     pinMode (led9,OUTPUT);
     pinMode (led10,OUTPUT);
     pinMode (led11,OUTPUT);
     pinMode (led12,OUTPUT);
     
     Serial.begin(9600);
     
      pinMode(buttonPin, INPUT);
     
      }
     
    void loop() {
     
     
       buttonState = digitalRead(buttonPin);
     
       buttonState2 = digitalRead(buttonPin2);
       buttonState3 = digitalRead(buttonPin3);
       buttonState4 = digitalRead(buttonPin4);
       buttonState5 = digitalRead(buttonPin5);
       buttonState6 = digitalRead(buttonPin6);
       buttonState7 = digitalRead(buttonPin7);
       buttonState8 = digitalRead(buttonPin8);
       buttonState9 = digitalRead(buttonPin9);
       buttonState10 = digitalRead(buttonPin10);
       buttonState11 = digitalRead(buttonPin11);
       buttonState12 = digitalRead(buttonPin12);
       buttonState13 = digitalRead(buttonPin13);
     
     
     
       if (buttonState == LOW) {
      digitalWrite(led1,HIGH);
      digitalWrite(led2,HIGH);
      digitalWrite(led3,HIGH);
      digitalWrite(led4,HIGH);
      digitalWrite(led5,HIGH);
      digitalWrite(led6,HIGH);
      digitalWrite(led7,HIGH);
      digitalWrite(led8,HIGH);
      digitalWrite(led9,HIGH);
      digitalWrite(led10,HIGH);
      digitalWrite(led11,HIGH);
      digitalWrite(led12,HIGH);
     
      v=analogRead(pot);
      v2=map(v,0,123,0,5000);
     
      int x=v2;
     
     
      digitalWrite(led1,LOW);
      if (buttonState2 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led1,HIGH);
     
     
     
      digitalWrite(led2,LOW);
      if (buttonState3 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led2,HIGH);
     
     
     
      digitalWrite(led3,LOW);
      if (buttonState4 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }                             
      digitalWrite(led3,HIGH);
     
     
     
       digitalWrite(led4,LOW);
      if (buttonState5 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }                             
      digitalWrite(led4,HIGH);
     
     
     
      digitalWrite(led5,LOW);
      if (buttonState6 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led5,HIGH);
     
     
     
      digitalWrite(led6,LOW);
      if (buttonState7 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led6,HIGH);
     
     
     
      digitalWrite(led7,LOW);
      if (buttonState8 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led7,HIGH);
     
     
       digitalWrite(led8,LOW);
      if (buttonState9 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led8,HIGH);
     
     
     
       digitalWrite(led9,LOW);
      if (buttonState10 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led9,HIGH);
     
     
     digitalWrite(led10,LOW);
      if (buttonState11 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led10,HIGH);
     
     
     
     digitalWrite(led11,LOW);
      if (buttonState12 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led11,HIGH);
     
     
     
       digitalWrite(led12,LOW);
      if (buttonState13 == HIGH) {
      delay(x); 
      } else{
      delay(0);
      }
      digitalWrite(led12,HIGH);
     
     
     
     
      buttonState = digitalRead(buttonPin);
      }else{
      digitalWrite(led1, HIGH);
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      digitalWrite(led5, HIGH);
      digitalWrite(led6, HIGH);
      digitalWrite(led7, HIGH);
      digitalWrite(led8, HIGH);
      digitalWrite(led9, HIGH);
      digitalWrite(led10, HIGH);
      digitalWrite(led11, HIGH);
      digitalWrite(led12, HIGH);
     
      }
      }

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    On pourrait-vous donner la réponse mais ce serait trop facile...

    Comprenez vous le code que vous avez posté? (Merci de mettre les balises de code)

    Ou lisez vous ce potentiomètre?
    Comment ça valeur est elle transformée en 5 secondes (hint 5000ms = 5s)?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut
    Salut Jay M,

    je pense que les paramètres à modifier sont là,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    v=analogRead(pot);
    v2=map(v,0,123,0,5000);
     
    int x=v2;
    J'ai déjà remplacé la valeur de 5000 pour 6000 mais rien ne change.
    Comme si mon programme ne pouvais pas dépasser 30 secondes.

    je ne comprends pas.
    Images attachées Images attachées  

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    bon il y a trois choses:

    - la première c'est qu'il faut écrire 30000 si vous voulez avoir 30 secondes - la seconde c'est que le potentiomètre (analogRead()) va donner une valeur entre 0 et 1023 - pas 0 et 123 sans doute donc il vaut mieux écrire- la dernière c'est qu'un int est un entier signé sur 16 bits et donc la valeur max représentable est 32767. ça rentre juste pour 30 secondes... Pour être sûr de ne pas avoir de souci le mieux c'est quand même de représenter le temps avec un unsigned long

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut
    en ayant été sur d'autres forums, j'ai pu comprendre qu'il fallait utiliser le terme "long" en effet pour élargir le temps il me semble.
    Mais comment l'intégrer à mon programme ce terme "long"?

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut
    je viens de changer la ligne:

    pour:

    et j'ai écris aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v2=map(v,0,1023,0,60000);
    je ne dépasse toujours pas les 30 secondes.

    je remarque aussi, arrivé au 3/4 du potentiomètre j'ai 30 secondes et quand je tourne le potentiomètre à 100/100 le programme ne s'arrêt plus comme si on était à "l'infini" , comme si on avait dépassé un seuil.

  7. #7
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    chargez ce code (avec le potentiomètre connecté en A0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    const byte potPin = A0;
     
    void setup() {
      Serial.begin(115200);
    }
     
    void loop() {
      static int prevPotVal = 0;
      int potVal = analogRead(potPin);
      if (potVal != prevPotVal) {
        Serial.println(potVal);
        prevPotVal = potVal;
      }
    }
    ouvrez la console série à 115200 bauds et faites bouger le potentiomètre

    ==> que voyez vous. (valeur min, valeur max) - est-ce que la valeur varie linéairement avec la rotation?

  8. #8
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut
    donc,

    pour une valeur je suis à 0
    pour la valeur opposée je suis à 1023

    je suis à 500 quand je suis à la moitié

    je dois avoir un potentiomètre linéaire.

  9. #9
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Ok super !

    (Attention 15 minutes ce n’est pas 150000 mais 15 x 60 x 1000 = 900000)

  10. #10
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Par défaut
    Rebonjour Jay M,

    Jai voulu ajouter au programme quelques lignes afin que,

    si les sorties LedPins 12,13,4,5 fonctionnent , que la sortie ledPin 25 fonctionne aussi (car ledPin 25 est une électrovanne principal)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    const byte potPin = A0;
    const byte ledPins[] = {12, 13,  2,  3,  4,   5,   6,  7,  8,   9,  10, 11};
    const byte buttonPins[] = {A1, A2, A3, A4, A5, A14, A15, A8, A9, A10, A11, A12, A13};
    const byte ledPins25 = 25;
     
     
    void toutAllumer() {
      for (byte i = 0; i < 12; i++) digitalWrite(ledPins[i], HIGH);
      digitalWrite(ledPins25, HIGH);
     
    }
     
    void setup() {
      pinMode(ledPins25, OUTPUT);
      pinMode(ledPins27, OUTPUT);
     
      for (byte i = 0; i < 13; i++) pinMode(buttonPins[i], INPUT);
      for (byte i = 0; i < 12; i++) pinMode(ledPins[i], OUTPUT);
     
     
     
    }
     
    void loop() {
      toutAllumer();
     
      if (digitalRead(buttonPins[0]) == LOW) {
        unsigned long duree = map(analogRead(potPin), 0, 123, 0, 150000);
        for (byte i = 0; i < 12; i++) {
          digitalWrite(ledPins[i], LOW);
     
         if (digitalRead(ledPins[12])== LOW);
          digitalWrite(ledPins25, LOW);
     
     
     
          if (digitalRead(buttonPins[i + 1]) == HIGH) delay(duree);
          digitalWrite(ledPins[i], HIGH);
     
     
          if (digitalRead(ledPins[12])== HIGH);
          digitalWrite(ledPins25, HIGH);
     
     
        }
     
      }
    }
    j'ai donc intégré cela dans le programme
    ça ne marche pas car
    quelques soit les sorties en fonctionnement , la sortie 25 fonctionne.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/02/2006, 16h24
  2. Comment modifier un champ dans une table liée ?
    Par HookerSeven dans le forum Access
    Réponses: 11
    Dernier message: 05/02/2006, 23h50
  3. Réponses: 2
    Dernier message: 12/01/2006, 08h34
  4. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 14h48
  5. Comment jouer des sons dans un programme ???
    Par aldur_disciple dans le forum MFC
    Réponses: 8
    Dernier message: 17/08/2005, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo