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 :

Besoin d'aide pour modifier un sketch arduino


Sujet :

Arduino

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour modifier un sketch arduino
    bonjour a tous , je suis débutant dans le monde arduino, j'ai un pro mini delay relay module (IO22C08); et je veut que ce dernier fonctionne comme séquenceur de puissance, CAD; lorsque je met un contact entre le GND et IN1 ,le relais 1 sera ON pondant 1 seconde puis OFF pondant 3 secondes, apres le relais 2 ON 1 seconde puis OFF pondant 3 seconde jusqu’à le relais 8 ;a la fin le système recommence l'opération pour toujours
    .

    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
    #include <SD.h>
     
    //Author: cantone-electonics
    //More information welcome to : <a href="http://www.canton-electronics.com" target="_blank">http://www.canton-electronics.com</a> 
    //Arduino 1.6.
    //for Arduino pro mini
    //4 bit Common Cathode Digital Tube Module test code,use Timer2
     
    /*---Segment Display Screen----
    --A--
    F---B
    --G--
    E---C
    --D-- 
     __  __   __  __
    |__||__|.|__||__|
    |__||__|'|__||__|
    ----------------------*/  
    #include <FlexiTimer2.h> 
    #define uchar unsigned char 
    #define uint  unsigned int
     
    int display_dat; 
    int key_value;
     
    //Pin connected to latch of Digital Tube Module
    int latchPin = A2;
    //Pin connected to clock of Digital Tube Module
    int clockPin = A3;
    //Pin connected to data of Digital Tube Module
    int dataPin = 13;
    //Pin connected to 595_OE of Digital Tube Module
    int OE_595 = A1;
     
    const int K1 = 7;
    const int K2 = 8;
    const int K3 = 9;
    const int K4 = 10;
     
    const int INPUT1 = 2;
    const int INPUT2 = 3;
    const int INPUT3 = 4;
    const int INPUT4 = 5;
    const int INPUT5 = 6;
    const int INPUT6 = A0;
    const int INPUT7 = 12;
    const int INPUT8 = 11;
     
     
    int relay1_delay_time = 1;//1-9999 seconds,Modify the number change the delay time
    int relay2_delay_time = 2;//1-9999 seconds,Modify the number change the delay time
    int relay3_delay_time = 3;//1-9999 seconds,Modify the number change the delay time
    int relay4_delay_time = 4;//1-9999 seconds,Modify the number change the delay time
    int relay5_delay_time = 5;//1-9999 seconds,Modify the number change the delay time
    int relay6_delay_time = 6;//1-9999 seconds,Modify the number change the delay time
    int relay7_delay_time = 7;//1-9999 seconds,Modify the number change the delay time
    int relay8_delay_time = 8;//1-9999 seconds,Modify the number change the delay time
     
    int relay1_time_left;
    int relay2_time_left;
    int relay3_time_left;
    int relay4_time_left;
    int relay5_time_left;
    int relay6_time_left;
    int relay7_time_left;
    int relay8_time_left;
     
    int relay1_display;
    int relay2_display;
    int relay3_display;
    int relay4_display;
    int relay5_display;
    int relay6_display;
    int relay7_display;
    int relay8_display;
     
     
    /*       NO.:0,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      
    /*Character :0,1,2,3,4,5,6,7,8,9,A, b, C, c, d, E, F, H, h, L, n, N, o, P, r, t, U, -,  ,*/
    uchar  TUBE_SEG[] = 
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa7,0xa1,0x86,0x8e,0x89,0x8b,0xc7,0xab,0xc8,0xa3,0x8c,0xaf,0x87,0xc1,0xbf,0xff};//Common anode Digital Tube Character Gallery
     
    uchar TUBE_NUM[8]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,};//Tuble bit number
     
    uchar dat_buf[8];
     
    //***********************************************
    // dat : Data to be displayed
    // com_num :  Digital Tube Common 
    //relay_port : Relay port
    //***********************************************
    uchar dat;
    uchar com_num;
    uchar relay_port;
    void TubeDisplayOneBit()
    {
      uchar tube_dat,bit_num;
      uchar display_l,display_h,relay_dat;
     
       tube_dat = TUBE_SEG[dat]; //Common Cathode Digital Tube,bit negated
       bit_num = ~TUBE_NUM[com_num];
     
       display_l  = ((tube_dat & 0x10)>>3);  //Q4   <-D1 -3
       display_l |= ((bit_num & 0x01)<<2);   //DIGI0<-D2 +2
       display_l |= ((tube_dat & 0x08)>>0);  //Q3   <-D3 0
       display_l |= ((tube_dat & 0x01)<<4);  //Q0   <-D4 -4
       display_l |= ((tube_dat & 0x80)>>2);  //Q7   <-D5 -2
       display_l |= ((tube_dat & 0x20)<<1);  //Q5   <-D6 1
       display_l |= ((tube_dat & 0x04)<<5);  //Q2   <-D7 5
     
       display_h  = ((bit_num & 0x02)>>0);   //DIGI1<-D1 0
       display_h |= ((bit_num & 0x04)>>0);   //DIGI2<-D2 0
       display_h |= ((tube_dat  & 0x40)>>3); //Q6   <-D3 -3
       display_h |= ((tube_dat  & 0x02)<<3); //Q1   <-D4 3
       display_h |= ((bit_num & 0x08)<<2);  //DIGI3<-D5 2
     
       relay_dat = ((relay_port & 0x7f)<<1); 
       relay_dat = relay_dat | ((relay_port & 0x80)>>7);
     
         //ground latchPin and hold low for as long as you are transmitting
         digitalWrite(latchPin, LOW);  
     
         shiftOut(dataPin, clockPin, MSBFIRST, display_h);
         shiftOut(dataPin, clockPin, MSBFIRST, display_l);  
         shiftOut(dataPin, clockPin, MSBFIRST, relay_dat); 
     
         //return the latch pin high to signal chip that it 
         //no longer needs to listen for information
         digitalWrite(latchPin, HIGH);
     
    }
     
     
     
     
    uint OneSecondCnt=500;
    void TubeDisplay4Bit(void)
    {
      if(com_num<7) com_num ++;else com_num=0;
      dat = dat_buf[com_num];
      TubeDisplayOneBit();
     
      OneSecondCnt--;
      if(OneSecondCnt==0)
      {
        OneSecondCnt = 500;
        if(relay1_time_left>0){relay1_time_left--; relay1_display = relay1_time_left;} else {bitClear(relay_port,0);relay1_display = relay1_delay_time;}
        if(relay2_time_left>0){relay2_time_left--; relay2_display = relay2_time_left;} else {bitClear(relay_port,1);relay2_display = relay2_delay_time;}
        if(relay3_time_left>0){relay3_time_left--; relay3_display = relay3_time_left;} else {bitClear(relay_port,2);relay3_display = relay3_delay_time;}
        if(relay4_time_left>0){relay4_time_left--; relay4_display = relay4_time_left;} else {bitClear(relay_port,3);relay4_display = relay4_delay_time;}
        if(relay5_time_left>0){relay5_time_left--; relay5_display = relay5_time_left;} else {bitClear(relay_port,4);relay5_display = relay5_delay_time;}
        if(relay6_time_left>0){relay6_time_left--; relay6_display = relay6_time_left;} else {bitClear(relay_port,5);relay6_display = relay6_delay_time;}
        if(relay7_time_left>0){relay7_time_left--; relay7_display = relay7_time_left;} else {bitClear(relay_port,6);relay7_display = relay7_delay_time;}
        if(relay8_time_left>0){relay8_time_left--; relay8_display = relay8_time_left;} else {bitClear(relay_port,7);relay8_display = relay8_delay_time;}
     
      }
     
     
      if(key_value==0) display_dat = relay1_display; 
      else if(key_value==1) display_dat = relay2_display;
      else if(key_value==2) display_dat = relay3_display;  
      else if(key_value==3) display_dat = relay4_display;
     
       /*
      if(key_value==0) display_dat = relay5_display; 
      else if(key_value==1) display_dat = relay6_display;
      else if(key_value==2) display_dat = relay7_display;  
      else if(key_value==3) display_dat = relay8_display;
        */
     
       dat_buf[0] = display_dat/1000;
       display_dat = display_dat%1000;
       dat_buf[2] = display_dat/100;
       display_dat = display_dat%100;
       dat_buf[4] = display_dat/10;
       dat_buf[6] = display_dat%10;
     
    }
     
    void setup() {
       //set pins to output because they are addressed in the main loop
     
     
       pinMode(latchPin, OUTPUT);
       pinMode(clockPin, OUTPUT);
       pinMode(dataPin, OUTPUT);
       pinMode(OE_595, OUTPUT);
     
       pinMode(K1, INPUT);
       pinMode(K2, INPUT);
       pinMode(K3, INPUT);
       pinMode(K4, INPUT);
     
       pinMode(INPUT1, INPUT);
       pinMode(INPUT2, INPUT);
       pinMode(INPUT3, INPUT);
       pinMode(INPUT4, INPUT);
       pinMode(INPUT5, INPUT);
       pinMode(INPUT6, INPUT);
       pinMode(INPUT7, INPUT);
       pinMode(INPUT8, INPUT);
     
     
      FlexiTimer2::set(2, 1.0/1000, TubeDisplay4Bit); // call every 2ms "ticks"
      FlexiTimer2::start();
     
      digitalWrite(OE_595, LOW);// Enable 74HC595  
     
      digitalWrite(INPUT1, HIGH);
      digitalWrite(INPUT2, HIGH);
      digitalWrite(INPUT3, HIGH);
      digitalWrite(INPUT4, HIGH);
      digitalWrite(INPUT5, HIGH);
      digitalWrite(INPUT6, HIGH);
      digitalWrite(INPUT7, HIGH);
      digitalWrite(INPUT8, HIGH);
     
     
      digitalWrite(K1, HIGH);
      digitalWrite(K2, HIGH);
      digitalWrite(K3, HIGH);
      digitalWrite(K4, HIGH);
     
      key_value = 0;
    }
     
    void loop() {
     
     
      while(1)
      {
     
        if(digitalRead(INPUT1)==LOW) {relay1_time_left = relay1_delay_time;bitSet(relay_port,0);}
     
        if(digitalRead(INPUT2)==LOW) {relay2_time_left = relay2_delay_time;bitSet(relay_port,1);}
     
        if(digitalRead(INPUT3)==LOW) {relay3_time_left = relay3_delay_time;bitSet(relay_port,2);}
     
        if(digitalRead(INPUT4)==LOW) {relay4_time_left = relay4_delay_time;bitSet(relay_port,3);}
     
        if(digitalRead(INPUT5)==LOW) {relay5_time_left = relay5_delay_time;bitSet(relay_port,4);}
     
        if(digitalRead(INPUT6)==LOW) {relay6_time_left = relay6_delay_time;bitSet(relay_port,5);}
     
        if(digitalRead(INPUT7)==LOW) {relay7_time_left = relay7_delay_time;bitSet(relay_port,6);}
     
        if(digitalRead(INPUT8)==LOW) {relay8_time_left = relay8_delay_time;bitSet(relay_port,7);}
     
        if     (digitalRead(K1)==LOW) {key_value = 0; } 
        else if(digitalRead(K2)==LOW) {key_value = 1; } 
        else if(digitalRead(K3)==LOW) {key_value = 2; } 
        else if(digitalRead(K4)==LOW) {key_value = 3; } 
     
     
      }
    }
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Besoin d'aide pour modifier css d'un menu via js
    Par axorama dans le forum jQuery
    Réponses: 14
    Dernier message: 31/08/2010, 15h48
  2. Besoin d'aide pour modifier un fichier html
    Par killahpriest dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/08/2010, 15h35
  3. [Débutant] Besoin d'aide pour modifier un jeu
    Par stoff66 dans le forum Assembleur
    Réponses: 9
    Dernier message: 31/08/2006, 18h24
  4. [VB6]besoin d'aide pour modifier une application
    Par mister perfect dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 19/05/2006, 11h46
  5. [Debutant] Besoin d'aide pour modifier un tableau...
    Par CyberTwister dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/03/2006, 14h14

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