Arduino Polska Forum

Pełna wersja: ARDUINO UNO , Wyłączniki Krańcowe , Silniki . Wył. ON/OFF
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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
Kod:
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;

}
}
napisałem jeszcze taki  kod , chodzi tak jak powinien ,krańcówki działają ale teraz mam jeszcze problem jak w ten kod wstawić program aby uruchamiał mi 2 silniki co jakiś czas , a silnik po dojechaniu do krańcówki załączał nastepny lecz po czasie ,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


Kod:
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);
               
   
        }
     }
     
   }