• 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
Arduino PRO Micro-Turnigy 9X
#1
Witam, potrzebuję pomocy w moim programie działa on jako moduł oświetlenia do modelu RC ale mam dużo błędów. Wiem że można to zrobić na funkcjach lub flagach ale mi to nie wychodzi. Proszę o pomoc.


Kod:
byte PinRx1 = 4;  // sygnal kan4 podlaczony do Pin8
byte PinRx2 = 6;  // sygnal kan6 podlaczony do Pin9
byte PinRx3 = 8;  // sygnal kan7 podlaczony do Pin10
byte PinRx4 = 9;  // sygnal kan8 podlaczony do Pin8
byte PinRx5 = 5;  // sygnal kan2 podlaczony do Pin9
                  // (poczatek detekcji)                  
int PPM1 = 0;     //kierunki
int PPM2 = 0;     //silnik
int PPM3 = 0;     //silnik 2
int PPM4 = 0;     //światła
byte Rx3 = 0;     // zmienna pomocnicza (poczatek detekcji)
int kanal81 =0;
int kanal82 =0;
int lewy =0;
int prawy =0;

int Licz = 0;       // zmienne pozwalajace drukowac
int LiczMax = 10;   // co 20 impuls PPM1

void setup()
{
  pinMode(7,OUTPUT);    // kogut
  pinMode(10,OUTPUT);   //drogowe
  pinMode(15,OUTPUT);   //robocze
  pinMode(16,OUTPUT);   //lewy
  pinMode(18,OUTPUT);   //prawy
  pinMode(14,OUTPUT);   //silnik
  pinMode(19,OUTPUT);   //ślimak
  pinMode(PinRx1,INPUT); // ustaw PinRx1 jako wejscie
  pinMode(PinRx2,INPUT); // ustaw PinRx2 jako wejscie
  pinMode(PinRx3,INPUT); // ustaw PinRx3 jako wejscie
  pinMode(PinRx4,INPUT);
  pinMode(PinRx5,INPUT);
  Serial.begin(57600);   // ustaw predkosc transmisji
}

void loop() {
do                       //czekaj az pojawi sie impuls na kan8
{                        //i wtedy rozpocznij detekcje kan1 i kan2
  Rx3=digitalRead(PinRx3);
} while (Rx3==0);
  Rx3=0;

PPM1=pulseIn(PinRx1,HIGH); // detekcja impulsu PPM na PinRx1
PPM2=pulseIn(PinRx2,HIGH); // detekcja impulsu PPM na PinRx2
PPM3=pulseIn(PinRx3,HIGH);
PPM4=pulseIn(PinRx4,HIGH);

Licz += 1;                 // zwieksz licznik impulsow o 1
if (Licz>LiczMax) {        // drukuj wartosc co n-ty impuls

  Serial.print(PPM1);
  Serial.print(";  ");
  Serial.print(PPM2);
  Serial.println(";  ");
  Serial.print(PPM3);
  Serial.print(";  ");
  Serial.print(PPM4);
  Serial.println(";  ");
  Serial.print(prawy);
  Serial.println("p");  
  Serial.println(";  ");
  Serial.print(lewy);
  Serial.println("l");  
  Serial.println(";  ");
  Serial.print(kanal82);
  Serial.println("k");  
  Serial.println(";  ");
  
  
  Licz = 0;
}
   if(PPM3 >= 1450)
  {
   digitalWrite(14,HIGH);
  }
  else digitalWrite(14,LOW);
    
  if(PPM4 <= 800)
  {
    delay(250);
    kanal81++;
  }
  if(kanal81 == 1)
  {
    digitalWrite(10,HIGH);
  }
  if(kanal81 == 2)
  {
    digitalWrite(15,HIGH);
  }
  if(kanal81 == 3)
  {
    kanal81=0;
  }
  if(kanal81 ==0)
  {
   digitalWrite(15,LOW);
   digitalWrite(10,LOW);
  }
  if(PPM4 >= 1450)
  {
    delay(250);
    kanal82++;
  }
  if(kanal82 == 1 && lewy == 0 && prawy == 0)
  {
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);  
  }
  if(kanal82 == 2)
  {
    kanal82=0;
  }
    if(PPM2 >= 800)
  {
    digitalWrite(19,HIGH);
  }
  else digitalWrite(19,LOW);

  if(PPM1 <=800)
  {
    delay(250);
    lewy++;
  }
    if(PPM1 >=1450)
  {
    delay(250);
    prawy++;
  }
  if(lewy == 1 && prawy == 0 && kanal82 == 0)
  {
    digitalWrite(16,HIGH);
    delay(450);
    digitalWrite(16,LOW);
    delay(450);
  }
  if(prawy == 1 && lewy == 0 && kanal82 == 0)
  {
    digitalWrite(18,HIGH);
    delay(450);
    digitalWrite(18,LOW);
    delay(450);
  }
  if(prawy == 1 && lewy == 1 && kanal82 == 0)
  {
    digitalWrite(18,HIGH);
    digitalWrite(16,HIGH);
    delay(450);
    digitalWrite(16,LOW);
    digitalWrite(18,LOW);
    delay(450);
  }
  if (kanal82 == 1 && lewy == 1 && prawy == 0)
  {
    digitalWrite(16,HIGH);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    digitalWrite(16,LOW);
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
  }
  if (kanal82 == 1 && lewy == 0 && prawy == 1)
  {
    digitalWrite(18,HIGH);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    digitalWrite(18,LOW);
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
  }
if (kanal82 == 1 && lewy == 1 && prawy == 1)
  {
    digitalWrite(16,HIGH);
    digitalWrite(18,HIGH);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    digitalWrite(16,LOW);
    digitalWrite(18,LOW);
    delay(150);
    digitalWrite(7,HIGH);
    delay(150);
    digitalWrite(7,LOW);  
    delay(150);
  }
  if(lewy == 2)
      lewy=0;
  if(prawy == 2)
      prawy=0;
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości