Partage
  • Partager sur Facebook
  • Partager sur Twitter

attiny85 PinChangeInterrupt rcswitch SVP

Sujet résolu
    11 février 2015 à 16:18:36

    bonjour a tous

    j ai besoin d un tit coup de pouce SVP

    j' ai essayez  ce code avec un attiny85 qui fonctionne bien.. sonnette sans fil 433mhz

    sauf que je voudrais greffer un lcd i2c et il utilise PB2 & PB0

    et comme rcswitch utilise l'interupte int0 sur PB0

    il faudrait que je puisse rajouter l'interupte sur PB3

    et comme je suis zéro je voudrait savoir si c est possible de changer d'interupte

    et si quelqu’un pouvais me donner un coup de pouce car je suis extra nul j'apprends sur le tas

    j ai trouver ça

    https://code.google.com/p/arduino-tiny/downloads/detail?name=PinChangeInterrupt-0001.zip

     et la libraire pour la personne qui veut bien me donner un coup de pouce

    https://code.google.com/p/rc-switch/downloads/detail?name=RCSwitch.zip&can=3&q=

    merci d'avance ANDRO

    CODE

    //                      -------
    //        pwm0 PB0      |0   -|gnd
    //        pwm1 PB1 relay|1   4|     PB4   Ain2
    //        Ain1 PB2    rx|2   3|     PB3   Ain3
    //                vcc   |+   x|     PB5   Ain0
    //                      -------
    
    #include <RCSwitch.h>
    #define R_ON 2365
    
    int val1;
    
    int RELAYPin = 1;
    RCSwitch mySwitch = RCSwitch();
    
    void setup() {
    
    pinMode(RELAYPin, OUTPUT);
    pinMode(1, OUTPUT);
              digitalWrite(RELAYPin,HIGH);
                delay (1500);
                digitalWrite(RELAYPin,LOW);
                
        mySwitch.enableReceive(0);//INT0 BP2
    
    }
    
    void loop() {
    
      if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
     switch (value) {
    
            case R_ON:
    
                digitalWrite(RELAYPin,HIGH);
                delay (3000);
                digitalWrite(RELAYPin,LOW);         
                break;
        }
    
        mySwitch.resetAvailable();
      }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      14 février 2015 à 13:31:33

      J'ai bien envie de dire que cela se passe sur la ligne 24 : mySwitch.enableReceive(0)

      En faisant ça, tu active la réception sur INT0.

      Si tu as envie d'activer la réception sur INT3, cette ligne devient tout simplement : mySwitch.enableReceive(3)

      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2015 à 0:10:41

        merci de me répondre lorrio

        non ce que tu dit ça peut pas fonctionné

        int0 & pcint3 c est pas la même chose

        su un attiny il y a que un external interupte int0 sur pb2

        enfin sauf erreur de ma part

        c est pour ça qu'il ont crée PinChangeInterrupt-0001.zip

        mais il faut être meilleur que moi pour comprendre quelque chose ,mais c est intéressant de savoir si c est possible de déplacer le int0 sur une autre pin..

        a+ merci

        • Partager sur Facebook
        • Partager sur Twitter
          15 février 2015 à 13:12:50

          En effet, sur un ATtiny, il n'y a qu'une seule interruption externe (External Interrupt) : INT0 mappée sur PB2.

          En revanche, il y a une autre source d'interruption : interruption sur changement d'état (Pin Change Interrupt) : PCINT0.

          Cette interruption peut être déclenchée par 6 sources : PCINT0, PCINT1, PCINT2, PCINT3, PCINT4, PCINT5 mappées respectivement sur PB0, PB1, PB2, PB3, PB4 et PB5.

          Du coup, toutes les pins du port B peuvent servir à déclencher une interruption mais comme elles déclenchent toutes la même interruption, il faudra faire un peu de traitement dans la routine pour savoir quelle pins est à l'origine de l'interruption.

          La lib que tu donnes propose donc la fonction attachPcInterrupt (qui ressemble beaucoup à attachInterrupt) exploitant PCINT0 et non INTx.

          Tu n'as donc rien à faire à part utiliser attachPcInterrupt à la place de attachInterrupt.

          En revanche, PCINT0 est beaucoup plus sommaire que INTx puisque tu ne peux pas choisir le mode (RISING, FALLING, CHANGE ...) : l'interruption sera appelée à chaque changement d'état (ce sera donc le mode CHANGE dans tous les cas).


          Du coup, tu dois ajouter les lib PinChangeInterrupt et RcSwitch à ton projet.

          Si tu veux que RcSwitch utilise PB3, tu devras donc changer le code source de la lib RcSwitch de façon à remplacer l'appel de attachInterrupt (ligne 448 si je me base sur ces sources) par un appel à attachPcInterrupt.

          EDIT: tu devras aussi changer detachInterrupt (ligne 456) par detachPcInterrupt.

          -
          Edité par lorrio 15 février 2015 à 13:24:51

          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2015 à 20:38:12

            houaou trop cool Lorrio l'explication,j ai fait ce que tu as marqué

            ligne 448
            ligne 456
            attachPcInterrupt(3,TEST, CHANGE);

            j ai essayer de chercher des exemples sur le net pas trouver grand choses,enfin c est surtout que le niveaux et trop haut pour moi,
            j ai essayer d'avancé voici le code modifié

            je sais pas trop quoi faire.. merci pour le temps que tu as consacré pour m'expliquer

            //                      -------
            //        pwm0 PB0      |0   -|gnd
            //        pwm1 PB1 relay|1   4|     PB4   Ain2
            //      Int0 Ain1 PB2 rx|2   3|     PB3   Ain3
            //                vcc   |+   x|     PB5   Ain0
            //                      -------
            #include <PinChangeInterrupt.h> 
            #include <RCSwitch.h>
            #define R_ON 1451
            
            int val1;
            
            int RELAYPin = 1;
            RCSwitch mySwitch = RCSwitch();
            void TEST();
            void setup() {
            
            pinMode(RELAYPin, OUTPUT);
            pinMode(1, OUTPUT);
                      digitalWrite(RELAYPin,HIGH);
                        delay (1500);
                        digitalWrite(RELAYPin,LOW);
            ////////ici que ca coince            
            attachPcInterrupt(3,TEST, CHANGE);            
                mySwitch.enableReceive(0);//INT0 BP2
            
            }
            void TEST() {
            
            ////////////////////////  
            }
            void loop() {
            
            
              if (mySwitch.available()) {
            
            int value = mySwitch.getReceivedValue();
             switch (value) {
            
                    case R_ON:
            
                        digitalWrite(RELAYPin,HIGH);
                        delay (3000);
                        digitalWrite(RELAYPin,LOW);         
                        break;
                }
            
                mySwitch.resetAvailable();
              }
            }
            



            • Partager sur Facebook
            • Partager sur Twitter
              15 février 2015 à 20:49:22

              Là, c'est moi qui ne te suis plus...

              Je t'ai dis de modifier le code de la lib RcSwitc, pas de modifier ton programme.

              Du coup, pourquoi avoir avoir ajouté un attachPcInterrupt sur une fonction TEST en plein milieu de ton programme ?

              Dans la lib RCSwitch, on peut voir :

              /**
               * Enable receiving data
               */
              void RCSwitch::enableReceive(int interrupt) {
                this->nReceiverInterrupt = interrupt;
                this->enableReceive();
              }
              
              void RCSwitch::enableReceive() {
                if (this->nReceiverInterrupt != -1) {
                  RCSwitch::nReceivedValue = NULL;
                  RCSwitch::nReceivedBitlength = NULL;
                  attachInterrupt(this->nReceiverInterrupt, handleInterrupt, CHANGE);
                }
              }
              
              /**
               * Disable receiving data
               */
              void RCSwitch::disableReceive() {
                detachInterrupt(this->nReceiverInterrupt);
                this->nReceiverInterrupt = -1;
              }
              

              Si tu fais les modifications que je te donne, cela devient donc :

              /**
               * Enable receiving data
               */
              void RCSwitch::enableReceive(int interrupt) {
                this->nReceiverInterrupt = interrupt;
                this->enableReceive();
              }
              
              void RCSwitch::enableReceive() {
                if (this->nReceiverInterrupt != -1) {
                  RCSwitch::nReceivedValue = NULL;
                  RCSwitch::nReceivedBitlength = NULL;
                  attachPcInterrupt(this->nReceiverInterrupt, handleInterrupt, CHANGE); // CHANGEMENT ICI
                }
              }
              
              /**
               * Disable receiving data
               */
              void RCSwitch::disableReceive() {
                detachPcInterrupt(this->nReceiverInterrupt); // CHANGEMENT ICI
                this->nReceiverInterrupt = -1;
              }
              

              C'est aussi simple que ça, il n'y a pas à chercher plus loin.

              Il te faudra ensuite changer ton programme pour dire que tu veux utiliser PB3 au niveau de la ligne mySwitch.enableReceive(0);

              Par contre, j'ai un petit doute...

              Soit il te faudrait mettre mySwitch.enableReceive(3); avec le 3 indiquant PB3.

              Soit il te faudrait mettre mySwitch.enableReceive(11); étant donné que PB3 correspond à la pin 11 de l'arduino

              Je te laisse essayer les 2 et voir ce que cela donne.


              -
              Edité par lorrio 15 février 2015 à 20:50:28

              • Partager sur Facebook
              • Partager sur Twitter
                15 février 2015 à 21:19:58

                oups j avais bien  modifier le RCSwitch.cpp

                mais comme ça fonctionnait pas je me suis dit que c était plus compliqué

                PB3 car c est un attiny85 et non un arduino

                donc j ai fait ce que tu m as dit

                #include <PinChangeInterrupt.h>
                #include <RCSwitch.h>
                #define R_ON 1451
                
                int val1;
                
                int RELAYPin = 1;
                RCSwitch mySwitch = RCSwitch();
                
                void setup() {
                
                pinMode(RELAYPin, OUTPUT);
                pinMode(1, OUTPUT);
                          digitalWrite(RELAYPin,HIGH);
                            delay (1500);
                            digitalWrite(RELAYPin,LOW);
                            
                    mySwitch.enableReceive(3);//INT0 BP2
                
                }
                
                void loop() {
                
                  if (mySwitch.available()) {
                
                int value = mySwitch.getReceivedValue();
                 switch (value) {
                
                        case R_ON:
                
                            digitalWrite(RELAYPin,HIGH);
                            delay (3000);
                            digitalWrite(RELAYPin,LOW);         
                            break;
                    }
                
                    mySwitch.resetAvailable();
                  }
                }

                et voici le code erreur

                C:\Program Files (x86)\Arduino\libraries\RCSwitch\RCSwitch.cpp: In member function 'void RCSwitch::enableReceive()':
                C:\Program Files (x86)\Arduino\libraries\RCSwitch\RCSwitch.cpp:448: error: 'attachPcInterrupt' was not declared in this scope
                C:\Program Files (x86)\Arduino\libraries\RCSwitch\RCSwitch.cpp: In member function 'void RCSwitch::disableReceive()':
                C:\Program Files (x86)\Arduino\libraries\RCSwitch\RCSwitch.cpp:456: error: 'detachPcInterrupt' was not declared in this scope

                bouuu

                -
                Edité par androstorm 16 février 2015 à 9:59:34

                • Partager sur Facebook
                • Partager sur Twitter
                  15 février 2015 à 21:46:22

                  Eh, il faut aussi faire l'include qui va avec bien évidement.

                  En haut du fichier RCswitch.cpp, tu devrais ajouter un truc du genre : #include <PinChangeInterrupt.h>

                  -
                  Edité par lorrio 15 février 2015 à 21:47:13

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 février 2015 à 10:24:17

                    ok voila j ai changer,

                    dans RCswitch.cpp

                    */
                    
                    #include "PinChangeInterrupt.h" //--------rajouté
                    
                    #include "RCSwitch.h"
                    
                    unsigned long RCSwitch::nReceivedValue = NULL;
                    unsigned int RCSwitch::nReceivedBitlength = 0;
                    unsigned int RCSwitch::nReceivedDelay = 0;
                    unsigned int RCSwitch::nReceivedProtocol = 0;
                    unsigned int RCSwitch::timings[RCSWITCH_MAX_CHANGES];
                    int RCSwitch::nReceiveTolerance = 60;

                    et voici le code erreur

                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:37: multiple definition of `RCSwitch::RCSwitch()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:36: first defined here
                    RCSwitch\RCSwitch.cpp.o:(.bss._ZN8RCSwitch14nReceivedValueE+0x0): multiple definition of `RCSwitch::nReceivedValue'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.bss._ZN8RCSwitch14nReceivedValueE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o:(.data._ZN8RCSwitch17nReceiveToleranceE+0x0): multiple definition of `RCSwitch::nReceiveTolerance'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.data._ZN8RCSwitch17nReceiveToleranceE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:37: multiple definition of `RCSwitch::RCSwitch()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:36: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::setProtocol(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:50: multiple definition of `RCSwitch::setProtocol(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:49: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::setProtocol(int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:63: multiple definition of `RCSwitch::setProtocol(int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:62: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::setPulseLength(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:78: multiple definition of `RCSwitch::setPulseLength(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:77: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::setRepeatTransmit(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:85: multiple definition of `RCSwitch::setRepeatTransmit(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:84: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::setReceiveTolerance(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:92: multiple definition of `RCSwitch::setReceiveTolerance(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:91: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::disableTransmit()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:110: multiple definition of `RCSwitch::disableTransmit()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:109: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getCodeWordB(int, int, unsigned char)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:191: multiple definition of `RCSwitch::getCodeWordB(int, int, unsigned char)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:190: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getCodeWordA(char*, int, unsigned char)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:226: multiple definition of `RCSwitch::getCodeWordA(char*, int, unsigned char)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:225: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::available()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:461: multiple definition of `RCSwitch::available()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:460: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::resetAvailable()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:466: multiple definition of `RCSwitch::resetAvailable()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:465: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getReceivedValue()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:469: multiple definition of `RCSwitch::getReceivedValue()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:468: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getReceivedBitlength()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:475: multiple definition of `RCSwitch::getReceivedBitlength()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:474: first defined here
                    RCSwitch\RCSwitch.cpp.o:(.bss._ZN8RCSwitch18nReceivedBitlengthE+0x0): multiple definition of `RCSwitch::nReceivedBitlength'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.bss._ZN8RCSwitch18nReceivedBitlengthE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getReceivedDelay()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:479: multiple definition of `RCSwitch::getReceivedDelay()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:478: first defined here
                    RCSwitch\RCSwitch.cpp.o:(.bss._ZN8RCSwitch14nReceivedDelayE+0x0): multiple definition of `RCSwitch::nReceivedDelay'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.bss._ZN8RCSwitch14nReceivedDelayE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getReceivedProtocol()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:483: multiple definition of `RCSwitch::getReceivedProtocol()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:482: first defined here
                    RCSwitch\RCSwitch.cpp.o:(.bss._ZN8RCSwitch17nReceivedProtocolE+0x0): multiple definition of `RCSwitch::nReceivedProtocol'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.bss._ZN8RCSwitch17nReceivedProtocolE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getReceivedRawdata()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:487: multiple definition of `RCSwitch::getReceivedRawdata()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:486: first defined here
                    RCSwitch\RCSwitch.cpp.o:(.bss._ZN8RCSwitch7timingsE+0x0): multiple definition of `RCSwitch::timings'
                    RCSwitch\RCSwitch - Copie.cpp.o:(.bss._ZN8RCSwitch7timingsE+0x0): first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::receiveProtocol1(unsigned int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:492: multiple definition of `RCSwitch::receiveProtocol1(unsigned int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:491: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::receiveProtocol2(unsigned int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:528: multiple definition of `RCSwitch::receiveProtocol2(unsigned int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:527: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::dec2binWzerofill(unsigned long, unsigned int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:600: multiple definition of `RCSwitch::dec2binWzerofill(unsigned long, unsigned int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:599: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::getCodeWordC(char, int, int, unsigned char)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:265: multiple definition of `RCSwitch::getCodeWordC(char, int, int, unsigned char)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:264: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::handleInterrupt()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:562: multiple definition of `RCSwitch::handleInterrupt()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:561: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::disableReceive()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:456: multiple definition of `RCSwitch::disableReceive()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:455: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::enableReceive()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:445: multiple definition of `RCSwitch::enableReceive()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:444: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::enableReceive(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:440: multiple definition of `RCSwitch::enableReceive(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:439: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::transmit(int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:340: multiple definition of `RCSwitch::transmit(int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:339: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::sendSync()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:427: multiple definition of `RCSwitch::sendSync()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:426: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::sendTF()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:415: multiple definition of `RCSwitch::sendTF()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:414: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::sendT1()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:405: multiple definition of `RCSwitch::sendT1()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:404: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::sendT0()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:395: multiple definition of `RCSwitch::sendT0()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:394: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::sendTriState(char*)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:297: multiple definition of `RCSwitch::sendTriState(char*)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:296: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOff(char*, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:171: multiple definition of `RCSwitch::switchOff(char*, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:170: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOn(char*, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:161: multiple definition of `RCSwitch::switchOn(char*, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:160: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOff(int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:151: multiple definition of `RCSwitch::switchOff(int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:150: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOn(int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:141: multiple definition of `RCSwitch::switchOn(int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:140: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOff(char, int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:131: multiple definition of `RCSwitch::switchOff(char, int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:130: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::switchOn(char, int, int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:120: multiple definition of `RCSwitch::switchOn(char, int, int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:119: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::send1()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:380: multiple definition of `RCSwitch::send1()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:379: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::send0()':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:364: multiple definition of `RCSwitch::send0()'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:363: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::send(char*)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:322: multiple definition of `RCSwitch::send(char*)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:321: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::send(unsigned long, unsigned int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:318: multiple definition of `RCSwitch::send(unsigned long, unsigned int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:317: first defined here
                    RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::enableTransmit(int)':
                    C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:101: multiple definition of `RCSwitch::enableTransmit(int)'
                    RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:100: first defined here

                     encore désolé que tu te prenne la tête la dessus.

                    -
                    Edité par androstorm 16 février 2015 à 10:33:53

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 février 2015 à 10:37:10

                      Je veux bien aider mais si tu ne prends même pas la peine de lire les erreurs, je vais vite m'impatienter.

                      C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch.cpp:37: multiple definition of `RCSwitch::RCSwitch()'
                      RCSwitch\RCSwitch - Copie.cpp.o:C:\Program Files (x86)\Arduino\libraries\RCSwitch/RCSwitch - Copie.cpp:36: first defined here

                      Si tu veux te créer un fichier RCSwitch - Copie.cpp pour pour ne pas modifier le fichier RCSwitch.cpp orignal, c'est ton choix.

                      Par contre, si tu fais ça, tu es priés de ne pas ajouter les 2 libs (RCSwitch et RCSwitch - Copie) à ton projet mais seulement ta lib modifiée car sinon, tu vas te retrouver avec toutes les fonctions en double (et c'est pour cela que ton compilateur gueule).

                      A mon avis, mettre des espaces ainsi qu'un tiret dans un nom de fichier de lib, c'est une très mauvaise idée.

                      A ta place, je nommerais plutôt le fichier en RCSwitcPCint.cpp en sachant que le suffixe PCint qui indique qu'il s'agit de la version basée sur les PinChange interrtup.


                      -
                      Edité par lorrio 16 février 2015 à 10:38:25

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 février 2015 à 11:18:16

                        mille excuse dans le dossier RCSwitch il y avait

                        RCSwitch.cpp et RCSwitch - Copie.cpp l'original

                        je n'aurait pas pensé qu'il allait y avoir un conflit

                        tout fonctionne grâce a toi ,et grâce a toi et ça c est le plus important j 'ai appris énormément de chose.

                        grand merci

                        andro

                        -
                        Edité par androstorm 16 février 2015 à 13:26:57

                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 janvier 2023 à 22:34:10

                          bonjour , je suis nouveau sur le forum , et j aimerait utiliser rcswitch  en mode réception sur pcint 4 , j ai tous essayer comme ci dessus plusieurs fois et sur 2 pc différents , mais impossible de faire une compilation correcte .

                          j ai telecharger tout se que le compilateur avais besoin au fur et a mesure :

                          core_build_option.h

                          core_macros.h

                          core_isa.h

                          core_matmap.h

                          tie.h

                          wiring.h

                          xtensa_config_core.h

                          xtensa_hal.h

                          xtensa_xtensa_versions.h

                          et maintenant je me retrouve avec sa comme erreur que je ne comprend plus vraiment :

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp: In function 'void attachPcInterrupt(uint8_t, void (*)(), uint8_t)':

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp:76:38: error: 'digitalPinToBitMask' was not declared in this scope

                             bitMask = digitalPinToBitMask( pin );

                                                                ^

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp:179:28: error: 'MASK1' was not declared in this scope

                                 GIMSK |= MASK1( PCIE );

                                                      ^

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp: In function 'void InterruptOff(uint8_t)':

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp:249:30: error: 'MASK1' was not declared in this scope

                                 GIMSK &= ~ MASK1( PCIE );

                                                        ^

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp: In function 'void detachPcInterrupt(uint8_t)':

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp:266:38: error: 'digitalPinToBitMask' was not declared in this scope

                             bitMask = digitalPinToBitMask( pin );

                                                                ^

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp: In function 'void detachPcInterrupt(uint8_t, void (*)(), uint8_t)':

                          C:\Users\DADA SURFACE\Documents\Arduino\libraries\PinChangeInterrupt\PinChangeInterrupt.cpp:315:38: error: 'digitalPinToBitMask' was not declared in this scope

                             bitMask = digitalPinToBitMask( pin );

                                                                ^

                          exit status 1

                          Erreur de compilation pour la carte ATtiny25/45/85

                          pouvez vous m aider ? 
                          merci 
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 janvier 2023 à 22:49:49

                            sur attiny85 bien sur , car j aimerait utiliser int0 pour le sck de i2c pour un ecran , merci
                            • Partager sur Facebook
                            • Partager sur Twitter

                            attiny85 PinChangeInterrupt rcswitch SVP

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown