• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Gotowy Program Wemos D1 mini -probrem podczas kompilacji
#1
Witam!
Potrzebuję pomocy przy uruchomieniu czujnika ze stacji meteorologicznej na esp12e.
Gotowy projekt udało mi się znaleźć na github https://github.com/bunnyhu/ESP8266_TX20_wind_sensor
Problem jednak mam taki, że oprogramowanie jest napisane na płytkę Wemos D1 a ja z kolei posiadam samo esp12E.
Problem pojawia się podczas próby kompilacji dla zwykłego esp12e (jeżeli w arduino ustawię jako płytkę wemos D1 to kompiluje wszystko bez żadnego problemu.
Zamieszczam kod

Kod:
const byte DATAPIN=D2;
volatile boolean TX20IncomingData = false;

unsigned char chk;
unsigned char sa,sb,sd,se;
unsigned int sc,sf, pin;

String tx20RawDataS = "";


void isTX20Rising() {
 if (!TX20IncomingData) {
   TX20IncomingData = true;
 }  
}

/*
* SETUP
*/
void setup() {
 pinMode(DATAPIN, INPUT);
 attachInterrupt(digitalPinToInterrupt(DATAPIN), isTX20Rising, RISING);
 Serial.begin(115200);
}

boolean readTX20() {
   int bitcount=0;
   
   sa=sb=sd=se=0;
   sc=0;sf=0;
   tx20RawDataS = "";

   for (bitcount=41; bitcount>0; bitcount--) {
     pin = (digitalRead(DATAPIN));
     if (!pin) {
       tx20RawDataS += "1";      
     } else {
       tx20RawDataS += "0";      
     }
     if ((bitcount==41-4) || (bitcount==41-8) || (bitcount==41-20)  || (bitcount==41-24)  || (bitcount==41-28)) {
       tx20RawDataS += " ";
     }      
     if (bitcount > 41-5){
       // start, inverted
       sa = (sa<<1)|(pin^1);
     } else
     if (bitcount > 41-5-4){
       // wind dir, inverted
       sb = sb>>1 | ((pin^1)<<3);
     } else
     if (bitcount > 41-5-4-12){
       // windspeed, inverted
       sc = sc>>1 | ((pin^1)<<11);
     } else
     if (bitcount > 41-5-4-12-4){
       // checksum, inverted
       sd = sd>>1 | ((pin^1)<<3);
     } else
     if (bitcount > 41-5-4-12-4-4){
       // wind dir
       se = se>>1 | (pin<<3);
     } else {
       // windspeed
       sf = sf>>1 | (pin<<11);
     }
         
     delayMicroseconds(1220);    
   }
   chk= ( sb + (sc&0xf) + ((sc>>4)&0xf) + ((sc>>8)&0xf) );chk&=0xf;
   delayMicroseconds(2000);  // just in case
   TX20IncomingData = false;  

   if (sa==4 && sb==se && sc==sf && sd==chk){      
     return true;
   } else {
     return false;      
   }
}

/*
* LOOP
*/
void loop() {
 if (TX20IncomingData) {
   char a[90];
   boolean validData = readTX20();
   Serial.println(tx20RawDataS);
   sprintf(a, "ID: %d\t%d\n", sa, B00100);
   Serial.write (a);
   sprintf(a, "Wind direction: %d\t%d\n", sb, se);
   Serial.write (a);
   sprintf(a, "Wind speed: %d\t%d\n", sc, sf);
   Serial.write (a);
   sprintf(a, "Checksum: %d\t%d\n", sd, chk);
   Serial.write (a);
   if (validData){      
     Serial.println(" :) OK :) OK :) OK :) OK");
   } else {
     Serial.println(" !!! ERROR !!! ERROR !!!");
   }
   Serial.println("");
 }
}
Podczas kompilacji dla esp Generic ESP12E otrzymuję komunikat

Kod:
tx20_v3:1: error: 'D2' was not declared in this scope

const byte DATAPIN=D2;

                   ^

exit status 1
'D2' was not declared in this scope
Na programowaniu arduino nie znam się (na razie potrafię wszystko poustawiać i wgrać gotowy kod co i tak jest już sporym sukcesem) dlatego proszę o tłumaczenie powoli dla całkowicie początkującego żebym zrozumiał.
Podłączenie czujników mam do pinu nr17 (d4; GPIO2; TX1)
Mam nadzieję, że w miarę jasno opisałem cały temat.
Pozdrawiam.
 
Odpowiedź
#2
D2 to oznaczenie Pinu w płytce, jeżeli Ty masz inną, to oznaczenie też jest inne. Musisz tam umieścić nr Pinu, do którego podłączasz źródło danych na swojej płytce - czyli 17.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości