Skocz do zawartości

Sterowanie silnikami , krańcówki -ARDUINO UNO


darex120

Pomocna odpowiedź

Witam Serdecznie , nie wiem czy dobrze w forum wybrałem ale to się okaże a więc napisałem taki program poniżej , i chodzi mi o to że mam 5 silników , i wyłacznik on/off , oraz przy każdym silniku wyłącznik krańcowy , teraz po naciścnięciu przycisku on/off startuje silnik pierwszy następnie po dojechaniu do pewnego momentu załącza wyłącznik krańcowy ten uruchamia nastepny silnik i tak aż do 5 , 5 silnik ma cały czas pracować , teraz po naciśnięciu wyłącznika on/off , wszystko startuje ale w odwrotnej kolejności czyli silnik 4 , 3 , 2 , 1 oraz na samym końcu staje silnik 5 ,silnikami steruje za pomocą mostka L293

Oto kodzik (nie wiem czy tutaj sie wstawia więc z góry przepraszam) jesli chodzi o kurs oraz inne ksiazki w temacie ARDUINO przerobiłem ale jak narazie nic nie rozumiem

const int motor1=0;// DRZWI OTWORZ LEWE 
const int motor2=1; // DZRWI ZAMKNIJ LEWE
const int motor3=2; // DRZWI OTWORZ PRAWE
const int motor4=3;//  DRZWI ZAMKNIJ PRAWE
const int motor5=4; // DZWONNIK WYCHODZI 
const int motor6=5; // DZWONNIK WCHODZI 
const int motor7=6;//  DZWON 
const int motor8=7; // 
const int swiatlo=10;// SWIATŁO U DZWONNIKA
const int motor9=11; //STÓŁ
const int swiatlo1=12;//SWIATŁO W SZOPCE 
const int swiatlo2=9;//SWIATLO 

const int ButtonPin=13;// stan przycisku
int licznik=0;//liczba naciśnięć przycisków
int buttonState=0;
void setup()
{
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
pinMode(motor3,OUTPUT);
pinMode(motor4,OUTPUT);
pinMode(motor5,OUTPUT);
pinMode(motor6,OUTPUT);
pinMode(motor7,OUTPUT);
pinMode(motor8,OUTPUT);
pinMode(motor9,OUTPUT);
pinMode(swiatlo,OUTPUT);
pinMode(swiatlo1,OUTPUT);
pinMode(swiatlo2,OUTPUT);
pinMode(ButtonPin,INPUT_PULLUP);
}

void loop()
{
 buttonState=digitalRead(ButtonPin);// stan przycisku zalaczony lub wylaczony
// jesli stan przycisku zmieni sie z wysokiego na niski zaswiec diode czerwona
 if(buttonState==0)
{
 licznik++;
}
//jesli nacisnieto 1 raz
if(licznik==1)
{
  digitalWrite(swiatlo2,HIGH);//Zapal Swiatlo w budce
  digitalWrite(motor1,HIGH);//Drzwi Otworz
  digitalWrite(motor3,LOW);//Drzwi Otworz
  delay(2000);// czas odczekania na drgania styków
}

if(licznik==2)
{
  digitalWrite(swiatlo1,LOW);//zapal swiatlo w szopce
  digitalWrite(motor1,LOW); //zatrzym drzwi 
  digitalWrite(motor3,HIGH); //zatrzym drzwi
  digitalWrite(motor9,LOW); //uruchom stol
  digitalWrite(motor5,LOW); //uruchom dzwonnika
  delay(1000);
}
if(licznik==3)
{ 

   digitalWrite(motor3,LOW); //zatrzym dzwonnika 
  digitalWrite(swiatlo1,HIGH);//uruchom dzwon 

 delay(1000);
}
if(licznik==4)
{ 

   digitalWrite(motor6,LOW);
  digitalWrite(swiatlo,LOW);

 delay(1000);
}
if(licznik==5)
{
  digitalWrite(motor3,LOW);
  digitalWrite(motor4,LOW);
  delay(1000);
  digitalWrite(motor4,LOW);
  digitalWrite(motor3,LOW);
  delay(1000);
  digitalWrite(motor3,LOW);
  digitalWrite(motor4,LOW);
  delay(1000);
   digitalWrite(motor3,LOW);
  delay(1000);

}
if(licznik==6)
{
   digitalWrite(motor8 ,LOW);
  delay(500);
  digitalWrite(motor4,LOW);
  digitalWrite(motor5,LOW);
  delay(500);
  digitalWrite(motor6,LOW);
  digitalWrite(motor8,LOW);
  delay(500);
  digitalWrite(motor3,LOW);
  delay(1000);

}

if(licznik==7)
{
  digitalWrite(motor2,LOW);
  digitalWrite(motor4,LOW);
  digitalWrite(motor6,LOW);
  delay(1000);

}

if(licznik==8)
{
  digitalWrite(motor6,LOW);
  digitalWrite(motor7,LOW);
  digitalWrite(motor8,LOW);
  delay(1000);
  licznik=0;

}
}

[ Dodano: 27-02-2018, 21:21 ]

Witam

Więc napisałem nowy kod , chodzi tak jak powinien ,krańcówki działają ale teraz mam jeszcze jeden problem jak w ten kod wstawić program aby uruchamiał mi 2 silniki co jakiś czas , czytałem artykuły na temat wielozadaniowości ale jak narazie nie rozumiem , i jeszcze jedno co wstawić aby po naciśnięciu przycisku on/off mam go na 9 pinie rozpocząc start silników wszystkich ale w odwrotnym kierunku to jest kodzik

void setup() { 
 pinMode(9, INPUT_PULLUP); //włącznik on/off
 pinMode(10, INPUT_PULLUP); //krańcówka dół 
 pinMode(11, INPUT_PULLUP); //krańcówka góra 
 pinMode(12, INPUT_PULLUP);
 pinMode(0, OUTPUT); //mostek H 
 digitalWrite(0, LOW); 
 pinMode(2, OUTPUT); //mostek H 
 digitalWrite(2, LOW); 
   pinMode(1, OUTPUT); //mostek H 
 digitalWrite(1, LOW); 
 pinMode(3, OUTPUT); //mostek H 
 digitalWrite(3, LOW); 
 pinMode(5, OUTPUT);
 digitalWrite(5, LOW);


 if (digitalRead(9) == HIGH && digitalRead(9) == LOW) { //jeśli obie krańcówki nie wciśnięte 
digitalWrite(0, HIGH); // jedź do dołu 
digitalWrite(2, HIGH); 
while(digitalRead(8) == LOW);{ //gdy krańcówka dół wciśnięta zatrzymaj 
digitalWrite(0, HIGH); 
digitalWrite(2, LOW); 
} 
 } 
} 
boolean wykonaj=0; 
   void loop() { 

   if (digitalRead(9) == HIGH && digitalRead(9) == LOW) { //jeśli przycisk wciśnięty i krańcówka góra wciśnięta 
       digitalWrite(0,HIGH); // jedź do dołu 
       digitalWrite(2, LOW); 
       wykonaj=0; 
        while(digitalRead(10) == HIGH);{ //gdy krańcówka dół wciśnięta zatrzymaj 
              digitalWrite(2, HIGH); 
              digitalWrite(0, LOW); 

    } 
    } 
     if (digitalRead(11) == HIGH && digitalRead(11) == LOW) { //jeśli przycisk wciśnięty i krańcówka góra wciśnięta 
       digitalWrite(2, LOW); // jedź do dołu 
       digitalWrite(4, HIGH);
       digitalWrite(6, LOW);


       wykonaj=0; 
        while(digitalRead(11) == HIGH);{ //gdy krańcówka dół wciśnięta zatrzymaj 
              digitalWrite(2, LOW); 
              digitalWrite(4, HIGH); 

        }
     }
  if (digitalRead(12) == HIGH && digitalRead(12) == LOW) { //jeśli przycisk wciśnięty i krańcówka góra wciśnięta 
       digitalWrite(2, LOW); // jedź do dołu 
       digitalWrite(4, LOW);
       digitalWrite(6, HIGH);


       wykonaj=0; 
        while(digitalRead(12) == HIGH);{ //gdy krańcówka dół wciśnięta zatrzymaj 

              digitalWrite(2, LOW); 
              digitalWrite(6, HIGH); 


        }
     }

   }

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.