28-02-2018, 17:54
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
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
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;
}
}
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);
}
}
}