tribal.cz
Vytvořené odpovědi
-
AutorPříspěvky
-
tribal.czÚčastník
Vyřešeno neuvědomil jsem si že funkce return zastaví běh skriptu
tribal.czÚčastníkOmlouvám se za to slovo prostředník bylo nevhodně zvolené. Takže vše jde přes arduino-shop, ale musíte čekat mají jen něco skladem a objednávají ze zahraničí. Takže pokud objednáš u nich tak čekáš řeba dva týdny než to dodavatel dodoá a pak ještě než to dodá zvolený dopravce je to tedy prodloužené ale dá se s nimi narozdíl od jiných e-shopů ze zahraničí mluvit. Nemusíš používat žádné translatory a jsou velmi ochotní já jsem v první objednávce dostal poškozený displej byly ohnuté piny a v rohu malá asi 0,5cm prasklinka. omluvily se dali poukázku se slevou a do týdne půl jsem měl doma nový již funkční
tribal.czÚčastníkZ čeeských bych určitě doporučil ptshop, nebo arduino-shop.
První jmenovaný je velmi levný, (tedy jak na co) ale obecně platí že se na něm dají sehnat pěkné věci za pěknou cenu. Prodává víceméně klony s přvodníkem ch340 . Zatímco druhý prodává převážně origo nebo takové neznáme zajímavé desky jako je digispark(bohužel jen classic, verzi pro nemají ani jako „podpulťák“), tento obchod je sice dražší ale velmi roste za půl roku co sem u něj udělal první a zatím poslední objednávku se rozšířil o více jak 100%. Tenkrát fungoval ještě jako sekce na laser-shopu. Od té doby ho sleduji a dá se říci že každý měsíc rozšíří svojí nabídku o několik (1-10) kusů.
Jinak samozřejmě kupovat v zahraničí, tyto e-shopy jsou kvůli ne ideálním cenám vhodné akorát když potřebuješ něco rychle a nemůžeš čekat 2-3 týdny. I když arduino-shop je jen prostředník. Často narazíž u produktu na oznámení přijímáme předobjednávky což je zavádějící, ale znamená to jen že to prostě nemají skladem a musíš si počkat něž to ze zahraničí přijde. Skladové zásoby mají minimální.
tribal.czÚčastníktento problém jsem měl také a řešení je prakticky na facku kterou jsem si chtěl dát když se mi poprvé podařilo nahrát program. Pokud máš vše nainstalované podle toho http://digistump.com/wiki/digispark/tutorials/connecting. Tak dále postupuj následovně z příkladu vyber například blink. Poté bez zapojené desky do pc dej náhrat program. Ve stavovém řádku se ti zobrazí tato informace:
Projekt zabírá 718 bytů (11%) úložného místa pro program. Maximum je 6 012 bytů.
Globalní proměnné využívají 9 bytů dynamické paměti.
Running Digispark Uploader…
Plug in device now… (will timeout in 60 seconds)Nyní máš 1 minutu na připojení digisparku po jeho zapojení se vše nahraje a bude fungovat. Na linuxu je to trochu složitější je potřeba doinstalovat nějaké utilitky.
Je to řešené takto protože digispark využívá jako uploader micronucleus. Nikoliv standartní arduino nástroje
tribal.czÚčastníkNemáš za co, hlavně si pročti datasheet daného tranzistoru. Ne vždy je to stejné.
tribal.czÚčastníkAno tranzistorem si pouze sepneš potřebné. Pokusím se ti to popsat a ještě ti dám odkaz na itnetwork.cz kde je o tom článek takže. K rozsvícení využiješ jiný externí zdroj, arduinem budeš jen spínat. Tranzistor má tři vývody báze, colector a emitor.Bázi připojíš na nějaký pin třeba 5, emitor dáš na GND vývod diody a colector na GND zdroje. Mezi bázi a arduino si ještě bouchni diodu jako pojistku proti proražení tranzistoru. Takovýto obvod je bezpečný, poté si stačí jen nějaký kód. Třeba upravený příklad BLINK z arduino IDE
void setup() { pinMode(5, OUTPUT); } void loop() { digitalWrite(5, HIGH); delay(1000); digitalWrite(5, LOW); delay(1000); }
Tady máš ještě ten odkaz je to tam i schéma tak to líp pochopíš než z mého popisu
Edit: promiň zapomněl jsem odkaz 😀 http://www.itnetwork.cz/hardware-pc/arduino/arduino-spinani-velke-zateze
tribal.czÚčastníkPokud se jedná o něco co přesahuje hodnoty jen trochu jako ve tvém případě tak bych použil tranzistor. Pokud se jedná o něco většího tak bych obvod rozdělil a externí bych připojil na relé je to jednoduché a čisté řešení.
tribal.czÚčastníkNo zítra to skusím a dám echo. Dst možná napíšu článek snad to pomůže i někomu jinýmu
tribal.czÚčastníkAis už vím kde je chyba vše co jsem kde našel se věnovalo nodeMcu, jinak zajímalo by mne zda lze flashovat pomocí desky una bez čipu
tribal.czÚčastníkPřemýšlím nad podobným problémem a přišlo mi zbytečné vedle sebe dávat dvě desky, nejen kvůli velikosti výsledné krabičky, ovšem nedávno jsem změnil bohužel názor a pořídil si arduino micro od digisparku jedná se omalinký usb dongle s minimem pinů o velikosti cca 50,- korunové mince +- takže nezabere větší místo než knoflíková baterie 3V která se například používá pro čas. Může se ovšem vyskytnout problém který momentálně řeším a je jím neustále se odpojující microkontrolér od pc vypadalo to na nedostatečné napájení ale po připojení 5V externě se nic nezlepšilo. Samozřejmě se může jednat i o vadný kousek
tribal.czÚčastníkMohl by jsi mi sem dát nějaký příklad z tou tvojí funkcí?
tribal.czÚčastníkŠlo pouze o teorii jinak je mi jasný že výsledek bude vypadat jinak teorie byla toto => jedno centrální zařízení (mega) a tři klientské (uno) každé přijímá z centrály data ty pak vypisuje na svůj displej + centrála vše ukládá na sd a zobrazuje na svém displeji jako celkový přehled toť vše
tribal.czÚčastníkok takže cele to bude vypadat nějak takto
mega
#include <Wire.h> #include <dht.h> dht sensor String vystup; int dht[] = {7, 8}; int temp1; int temp2; int hum1; int hum2; void setup() { Serial.begin(9600); Wire.begin(); } void loop() { sensor.read(dht[0]); temp1 = sensor.temperature; hum1 = sensor.humidity; sensor.read(dht[1]); temp2 = sensor.temperature; hum2 = sensor.humidity; Wire.beginTransmission(1) // prvni uno Wire.write(temp1#hum1); Wire.endTransmission(); Wire.beginTransmission(2) // Druhe uno Wire.write(temp2#hum2); Wire.endTransmission(); }
uno
#include <Wire.h> string value; int tempghum[]; void setup(){ Wire.begin(1); } void loop(){ while(!Wire.available()) { } value = Wire.read(); // do proměnné value se uloží příchozí hodnoty tedy teplota a vlhkost z jednoho ze senzorů getValue(var, '#', tempghum ) TFTscreen.println (tempghum[0]); //a zobrazíme pouze teplotu pro obě hodnoty... TFTscreen.print (tempghum[0]); TFTscreen.println (tempghum[1]); } String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = { 0, -1 }; int maxIndex = data.length()-1; for(int i=0; i<=maxIndex && found<=index; i++){ if(data.charAt(i)==separator || i==maxIndex){ found++; strIndex[0] = strIndex[1]+1; strIndex[1] = (i == maxIndex) ? i+1 : i; } } return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; }
příklad píšu jen pro to zda jsem správně pochopil tvojí funkci, takže jako parametry tovjí funkce je řetězec přijatý z megy, následně znak kterým původní proměnné odděluji a poslední parametr je výstupní proměnná do které se vše uloží resp do pole. Výsledné hodnoty potom poté mohu zobrazit například na displeji. je mi jasné že program na unu nejspíš ani nebude fungovat napsal sem to jen jako ukázku. Býval bych to hned vyzkoušel ale bohužel momentálně nejsem doma takže nemám přístup k arduinu. Pokud se pletu prosím oprav mne
tribal.czÚčastníktak řekněme dvě dht22 jedna mega a dvě una spodní uno zobrazuje pouze teplotu z pravého sensoru a horní uno zobrazuje teplotu i vlhkost z levého sensoru.
ve výsledku půjde úplně o jiné zařízení ale pro příklad je následující situace více než dostačujícíhttps://drive.google.com/file/d/0B_QUj2kCn2H3U0lfZFFjNzlUWE0/view?usp=sharing
tribal.czÚčastníkS i2c nemám moc zkušenosti ale jak koukám na článek který si dal do odpovědi bude to lepší. Jen je zde co se I2C týče pro mne pár nejasností. Takže předpokládám že I2c sběrnice zvládne třeba 10 zařízení najednou z toho dvě desky + mega a další třeba displej, hodinový modul atd. le problém vydím v připojení více zařízení na pin scl a sda samozřejmě se dá vše řešit pomocí nepájivého pole kde scl asd napojím na řady 1 a 2 a ty náledně rozvedu do několika dalších chápu to takhle správně pro zjednodušení přiložím obrázek.
https://drive.google.com/file/d/0B_QUj2kCn2H3NGpEeE5Jajd4M1E/view?usp=sharing
budu vycházet nyní z tohoto prikladu
ve zdrojaku budu mit
/* nejedna se o proměnné ale pouze poznámku czech = 1 london = 2 */ komunikaci nastaruji, odešlu proměnnou a ukončím takto Wire.beginTransmission(1); Wire.write(czech); Wire.endTransmission(); Wire.beginTransmission(2); Wire.write(london); Wire.endTransmission(); a na jedné z desek přijmu while(!Wire.available()){ a = Wire.read(); }
Následně proměnnou a vypíši. Ale nebudu se potýkat s obdobným problémem v případě že po itc mezi dvěma arduiny pošlu hodnotu třeba z pěti senzorů stále nebudu vědět co je co takže opět budu muset přidat nějaký nečíselný znak nebo se pletu?
-
AutorPříspěvky