Výtah se 3 podlažími
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Re: Výtah se 3 podlažími
Jako nejlepší je si to vyzkoušet...od toho ta práce zřejmě bude. Tyhlety desky mají výhodu, že mají operák a trimr, kterým jde nastavit citlivost. Není nic jednoduššího, než si to připojit k Arduinu a nechat si vypisovat stav vstupů na sériový port...Případně na displej, kterej jak píšeš tam stejně budeš mít. Aspoň si oživíš displej.
Re: Výtah se 3 podlažími
Vše už jsem udělal jen nevím jak ten motor řídit tak, aby jezdil do těch pater co potřebuji. S tímto problémem si nevím rady.
Re: Výtah se 3 podlažími
Kód na motor nebo snímač mám to rozdělený zvlášť.
Děkuji moc za ochotu a pomoc která přichází.
Děkuji moc za ochotu a pomoc která přichází.
Re: Výtah se 3 podlažími
Nevím jak to bude konstrukčně vypadat (velikost atd), ale napadlo mě, jestli by nešel použít oblíbený ultrazvuk k měření vzdálenosti? (ten ultrazvuk má dosah bez problému 3m, tak to by mělo stačit) Zase, ale záleží jak přesně má ten výtah zastavovat. Ten senzor nemusí být úplně přesný, tak aby lícovala podlaha výtahu s podlahou patra. Někde v krabici mám i laserový dálkoměr, ale ten levný co mám tak má snad dosah jen v řádu desítek cm.
Re: Výtah se 3 podlažími
Konstrukčně ještě nic nemám.Mám vyrobený model z merkuru. Výšku bych viděl tak maximálně na 40cm. K tomu snímači mám jen halův senzor.
Re: Výtah se 3 podlažími
Hezký večer.Potřeboval bych poradit s programem.Mám snímač ,který vypisuje patro. Ale jak dosáhnout aby fungovaly 3 tyto snímače spolu?
Aby vypisovaly patro první,druhý a třetí.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define D0Pin 8
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
pinMode(D0Pin, INPUT);
lcd.begin(); // set up the LCD's number of columns and rows:
}
void loop()
{
int digitalVal = digitalRead(D0Pin);
lcd.setCursor(0,1);
lcd.print("PATRO");
lcd.print(digitalVal);
}
Aby vypisovaly patro první,druhý a třetí.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define D0Pin 8
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
pinMode(D0Pin, INPUT);
lcd.begin(); // set up the LCD's number of columns and rows:
}
void loop()
{
int digitalVal = digitalRead(D0Pin);
lcd.setCursor(0,1);
lcd.print("PATRO");
lcd.print(digitalVal);
}
Re: Výtah se 3 podlažími
Zkus mrknout do knížky. Doporučuju nastudovat příkazy "IF" a "SWITCH"
Re: Výtah se 3 podlažími
První věc, kterou ti doporučím je pojmenovávat proměnný nějakým logickým názvem. D0Pin a digitalVal vůbec neodpovídají svému názvu. Sám na pojmenování pinů používám většinou nějakej název ve stylu pin_button1, nebo in_button1. A nebo jednoduše button1 - aspoň na první pohled poznám, že jde o vstup 1
Na začátku programu si načítám stavy vstupů do proměných (které mají taky logický název), abych v programu nepracoval s analogRead a digitalRead. Tento styl se trochu přibližuje funkci PLC a potom lze jednoduše přidat třeba hlídání náběžné/sestupné hrany, debounce apod.
Každopádně zatím ses moc nevycejchoval s tím svým programem. Vše už jsem udělal jen nevím jak ten motor řídit tak, aby jezdil do těch pater co potřebuji. (???)
Abych nerejpal, tak tady je takovej ideovej návrh výtahu. Ono je tam celkově nutné řešit dost věcí - nelze jet nahodu a dolu najednou. Je dobré hlídat, aby nebylo sepnuto více snímačů v šachtě, když si někdo zavolá výtah z 2. patra, tak aby nejel k někomu do třetího patra, když si ho zavolá pozdějc... Výtahem zas tak často nejezdím, tak nevím co ještě.
Ps.: Jestli sem přidáváš kód, tak ho vlož mezi tagy code (viz tlačítka nahoře).
Kód: Vybrat vše
//I/O
#define btnIN1 A1 //START programu 1
#define btnIN2 A2 //START programu 2
#define btnIN3 A3 //ABORT - preruseni provadeneho programu
Kód: Vybrat vše
bool btnRight, btnUp, btnDown, btnLeft, btnSelect, btnNone; //aktualni stavy tlacitek
bool btnLastRight, btnLastUp, btnLastDown, btnLastLeft, btnLastSelect, btnLastNone; //minulé stavy tlacitek (kvuli detekci hrany)
bool btnEdgeRight, btnEdgeUp, btnEdgeDown, btnEdgeLeft, btnEdgeSelect, btnEdgeNone; //stavy tlacitek edge
Abych nerejpal, tak tady je takovej ideovej návrh výtahu. Ono je tam celkově nutné řešit dost věcí - nelze jet nahodu a dolu najednou. Je dobré hlídat, aby nebylo sepnuto více snímačů v šachtě, když si někdo zavolá výtah z 2. patra, tak aby nejel k někomu do třetího patra, když si ho zavolá pozdějc... Výtahem zas tak často nejezdím, tak nevím co ještě.
Kód: Vybrat vše
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
byte aktualniPatro;
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;
otevriDvere = true;
}
}
//a tak dále :)
}
Re: Výtah se 3 podlažími
Ta logika co je zde napsaná je naprosto správně s těma patrama. Když do toho chci dát i lcd display který vypisuje jaké je zrovna patro tak mám program jen na první patro a nwm jak tam dál zakombinovat dalsí snímače. Děkuji za návrhy kodu. Moc mi to pomáhá. Jen pro upřesnění výtah nebude mít dveře. Ten kod který tady mám je na vypisování pater.
Děkuji moc za pomoc.
Děkuji moc za pomoc.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 47 hostů