• 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
Czujnik kierunku wiatru - nieznany protokół
#14
Udało mi się odczytać kierunki, tylko nie wiem jak teraz zoptymalizować kod hmmm.
Kod:
// Ustaw pin do odczytu
const int kierunekWiatruPin = 2;

// deklaracja zmiennych:
int PWM[15];
int compass[3];
const char* kierunek;

void setup() {
 Serial.begin(115200);
 pinMode(kierunekWiatruPin, INPUT);    
 attachInterrupt(digitalPinToInterrupt(kierunekWiatruPin), kierunekWiatru, RISING);
}

void loop(){
 
 
 
}

void kierunekWiatru(){
 if(pulseIn(kierunekWiatruPin, HIGH) > 1000){
 for (byte k=0; k<15; k++) {
     PWM[k] = pulseIn(kierunekWiatruPin, HIGH);
   }
     if(PWM[3] > 400 and PWM[3] < 600) compass[0] = 1; else compass[0] = 0;
     if(PWM[4] > 400 and PWM[4] < 600) compass[1] = 1; else compass[1] = 0;
     if(PWM[5] > 400 and PWM[5] < 600) compass[2] = 1; else compass[2] = 0;
     if(PWM[6] > 400 and PWM[6] < 600) compass[3] = 1; else compass[3] = 0;
   
       if(compass[0] == 1 and compass[1] == 1 and compass[2] == 1 and compass[3] == 1) kierunek = "N";
       if(compass[0] == 1 and compass[1] == 1 and compass[2] == 1 and compass[3] == 0) kierunek = "NNE";
       if(compass[0] == 1 and compass[1] == 1 and compass[2] == 0 and compass[3] == 0) kierunek = "NE";
       if(compass[0] == 1 and compass[1] == 1 and compass[2] == 0 and compass[3] == 1) kierunek = "ENE";
       if(compass[0] == 1 and compass[1] == 0 and compass[2] == 1 and compass[3] == 1) kierunek = "E";
       if(compass[0] == 1 and compass[1] == 0 and compass[2] == 1 and compass[3] == 0) kierunek = "ESE";
       if(compass[0] == 1 and compass[1] == 0 and compass[2] == 0 and compass[3] == 1) kierunek = "SE";
       if(compass[0] == 1 and compass[1] == 0 and compass[2] == 0 and compass[3] == 0) kierunek = "SSE";
       if(compass[0] == 0 and compass[1] == 1 and compass[2] == 1 and compass[3] == 1) kierunek = "S";
       if(compass[0] == 0 and compass[1] == 1 and compass[2] == 1 and compass[3] == 0) kierunek = "SSW";
       if(compass[0] == 0 and compass[1] == 1 and compass[2] == 0 and compass[3] == 1) kierunek = "SW";
       if(compass[0] == 0 and compass[1] == 1 and compass[2] == 0 and compass[3] == 0) kierunek = "WSW";
       if(compass[0] == 0 and compass[1] == 0 and compass[2] == 1 and compass[3] == 1) kierunek = "W";
       if(compass[0] == 0 and compass[1] == 0 and compass[2] == 1 and compass[3] == 0) kierunek = "WNW";
       if(compass[0] == 0 and compass[1] == 0 and compass[2] == 0 and compass[3] == 1) kierunek = "NW";
       if(compass[0] == 0 and compass[1] == 0 and compass[2] == 0 and compass[3] == 0) kierunek = "NNW";      
   
      Serial.println(kierunek);
 }
}
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Czujnik kierunku wiatru - nieznany protokół - przez ostry38 - 14-03-2019, 10:43

Skocz do:


Przeglądający: 1 gości