Arduino 3 podlahový výtah
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 1
- Registrován: úte led 01, 2019 6:45 pm
Arduino 3 podlahový výtah
Dobrý den,Mám z ůkol udělat 3 podlahový výtah. Mám kod, který je ve fázi vývoje. Momentálně jsem zaměřen na podmínky ketré jsou nejdůležitější. Musím udělat podmínku aby výtah jezdil normálně když ho zavolám do každého patra a potom když třeba pojede do 3 patra a po cestě ve druhém ho někdo zavolá tak zastaví nabere a jede dál. S touto podmínkou si nevím rady.
Kód: Vybrat vše
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PINsensPatroprvni 1
#define PINsensPatrodruhy 2
#define PINsensPatrotreti 3
#define PINbtnVytahprvni 4
#define PINbtnVytahdruhy 5
#define PINbtnVytahtreti 6
#define PINbtnPatroprvni 7
#define PINbtnPatrodruhy 8
#define PINbtnPatrotreti 9
#define motorPin1 10
#define motorPin2 11
#define motorPin3 12
#define motorPin4 13
int krokMotoru = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4);
bool sensPatro1, sensPatro2, sensPatro3; //snimace pater
bool btnVytah1, btnVytah2, btnVytah3; //tlacitka ve vytahu
bool btnPatro1, btnPatro2, btnPatro3; //tlacitka v patrech
byte stavVytahu; //musis vedet, co vytah dela, abys podle toho mohl resit nejakou logiku. Tezko muzes privolat vytah dolu, když jede nahoru
//0 - vytah stoji, 1 - vytah jede dolu, 2 - vytah jede nahoru, atd. Pripadne to řesit pomoci bool proměnnych
bool aktualniPatro;
bool vytahStoji=0;
bool stisknutoPrivolavaciTlacitko;
bool pozadovanePatro;
bool jedNahoru;
bool jedDolu;
bool vytahStop;
void setup() {
// put your setup code here, to run once:
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(PINbtnVytahprvni, INPUT);
pinMode(PINbtnVytahdruhy, INPUT);
pinMode(PINbtnVytahtreti, INPUT);
pinMode(PINbtnPatroprvni, INPUT);
pinMode(PINbtnPatrodruhy, INPUT);
pinMode(PINbtnPatrotreti, INPUT);
pinMode(PINsensPatroprvni,INPUT);
pinMode(PINsensPatrodruhy,INPUT);
pinMode(PINsensPatrotreti,INPUT);
lcd.begin();
}
void loop(){ //zde přidělit proměnným hodnoty z digitálních vstupů
if(sensPatro1){
aktualniPatro = 1;}
if(sensPatro2){
aktualniPatro = 2;}
if(sensPatro3){
aktualniPatro = 3;}
if(vytahStoji && stisknutoPrivolavaciTlacitko)
{
if(aktualniPatro < pozadovanePatro){
jedNahoru = true;
}
if(aktualniPatro > pozadovanePatro){
jedDolu = true;}
if(aktualniPatro == pozadovanePatro){
jedNahoru = false;
jedDolu = false;}
}
if(jedNahoru && stisknutoPrivolavaciTlacitko){
if(aktualniPatro<pozadovanePatro){
vytahStop==pozadovanePatro && jedNahoru;}
if(aktualniPatro>pozadovanePatro){
jedNahoru = true;}
}
if(jedDolu && stisknutoPrivolavaciTlacitko){
if(aktualniPatro<pozadovanePatro){
jedDolu = true;}
if(aktualniPatro>pozadovanePatro){
vytahStop==pozadovanePatro && jedDolu;}
}
}
void VypisPatra(){
lcd.setCursor(0,0);
lcd.print("Patro:");
lcd.print(digitalRead(aktualniPatro));
}
void JedNahoru(){
krokMotoru++;
if(krokMotoru > 3){
krokMotoru = 0;
}
RizeniMotoru(krokMotoru);
}
void JedDolu(){
krokMotoru--;
if(krokMotoru < 0){
krokMotoru = 3;
}
RizeniMotoru(krokMotoru);
}
void RizeniMotoru(int step){
if(step < 0 || step > 3){
//jenom takovej sichr.
//Pokud je proměnná step menší než 0, nebo větší než 3, tak se do proměnné přiřadí 0, tedy první krok
step = 0;
}
switch(step){
case 0:
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
break;
case 1:
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
break;
case 2:
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
break;
case 3:
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
break;
}
delay(3);
}
-
- Příspěvky: 273
- Registrován: pát kvě 09, 2014 8:11 pm
Re: Arduino 3 podlahový výtah
A jak to souvisi s fotovoltaikou??? Doporucoval bych dat dotaz na arduino forum
-
- Příspěvky: 5451
- Registrován: pát úno 13, 2015 2:24 pm
- Lokalita: SO, SK
- Bydliště: SO, SK
Re: Arduino 3 podlahový výtah
Radšej by som vytvoril polia a tam dal nejaké AND a OR podmienky.
Ak to bude treba rozšíriť na 5 či 10 poschodí, tak to nepojde morom ifov a elsov.
https://www.youtube.com/watch?v=v3j8XftvjXo
https://www.quora.com/How-are-elevators ... programmed
Ak to bude treba rozšíriť na 5 či 10 poschodí, tak to nepojde morom ifov a elsov.
https://www.youtube.com/watch?v=v3j8XftvjXo
https://www.quora.com/How-are-elevators ... programmed
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
-
- Příspěvky: 590
- Registrován: úte zář 06, 2016 2:52 pm
Re: Arduino 3 podlahový výtah
Asi skolni uloha ... predpokladam ze podobna otazka bude na x dalsich forech.dub042 píše:A jak to souvisi s fotovoltaikou??? Doporucoval bych dat dotaz na arduino forum
google proste nasel i mypower
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 3 Odpovědi
- 1705 Zobrazení
-
Poslední příspěvek od jan.westhuserlt
-
- 15 Odpovědi
- 4817 Zobrazení
-
Poslední příspěvek od proasnet
-
- 62 Odpovědi
- 9230 Zobrazení
-
Poslední příspěvek od JiTr
-
- 6 Odpovědi
- 1198 Zobrazení
-
Poslední příspěvek od Matess
-
- 1 Odpovědi
- 1189 Zobrazení
-
Poslední příspěvek od rob.brno