Zbyšek Voda
Vytvořené odpovědi
-
AutorPříspěvky
-
Zbyšek VodaSprávce
Tyto problémy se vyskytují snad jen ve verzi 1.6.6. Verze 1.6.5 jede OK.
Zbyšek VodaSprávceDobrý den.
Rozdíl je takový, že při použití
#define A
Se všechny výskyty A nahradí JIŽ PŘI PŘEKLADU (respektive těsně před ním) v počítači, takže deska Arduino neví, že existovala nějaká konstanta definovaná pomocí #define A.
Preprocesor překladače dostane text programu a když narazí na výskyt A, nahradí jej, ale ještě jako textovou informaci. Až poté je program přeložen do strojového kódu.Narozdíl
const int B
znamená, že v paměti procesoru Arduina skutečně existuje proměnná B, jenom je označena jako konstantní, tedy neměnitelná.Zbyšek VodaSprávceDobrý den,
zatím je vložení na externí server a následné nalinkování obrázku standardní postup.Zbyšek VodaSprávceDobrý den,
to zapojení bude stejné, jako když zapojujete normální potenciometr.Zkuste poslat fotku vašeho posuvného potenciometru.
Zbyšek VodaSprávceDobrý den, každý jsme měl pravdu v něčem.
Váš převod jednotek je zapsán chybně, můj je dobře, jen jsem si výsledek špatně interpretoval (bral jsem jednotky v posledním vzorci úpravy jako proměnné, což nelze). Vaše převodní funkce je správná, moje byla špatná.Tedy přiznávám svoji chybu. Řešení:
float mWcm2toWm2(float vstup){ float vystup = vstup * 10; return vystup; }
Shodneme se?
Zbyšek VodaSprávceNesouhlasím s vámi. Vaše úvaha je chybná.
Zbyšek VodaSprávceDobrý den,
přijímáte-li data v mW/cm^2 a chcete je převést na na W/m^2, je přepočet následující:
W = 1000 mW m^2 = 10 000 cm^2 W/m^2 = (1000 mW) / (10 000 cm^2) W/m^2 = mW / (10 cm^2)
Dá přepočet se dá tedy vyjádřit funkcí
float mWcm2toWm2(float mWcm2){ //uznávám, že název funkce je opravdu ošklivý :) float Wm2 = mWcm2 / 10; return Wm2; }
Snad jsem se nikde nesekl 🙂
Zbyšek VodaSprávceDobrý den,
nevím, jestli problém správně chápu…
Máte 4 písty a chcete mít možnost je ovládat nezávisle na sobě, že?Navrhuji tedy něco jako:
int pist1 = 2; int pist1Zasunut = 6; int pist1Vysunut = 7; boolean pozadovanyStavPist1 = false; //false - zasunuto, true - vysunuto int stavPist1 = 0; //0 - zasunuto, 1 - někde mezi, 2 - vysunuto void setup() { pinMode(pist1, OUTPUT); pinMode(pist1Zasunut, INPUT); pinMode(pist1Vysunut, INPUT); } void loop() { //prvně nastavíme hodnotu stavPist1 if(digitalRead(pist1Zasunuto) && !digitalRead(pist1Vysunuto){ stavPist1 = 0; } else if(!digitalRead(pist1Zasunuto) && !digitalRead(pist1Vysunuto){ stavPist1 = 1; } else if(!digitalRead(pist1Zasunuto) && digitalRead(pist1Vysunuto){ stavPist1 = 2; } else{ //k situaci, kdy by byly oba spínače sepnuté, nedojde } if(stavPist1 == 0){ if(pozadovanyStavPist1 == false){ //je zasunuto, nic nedělej } else{ digitalWrite(pist1, LOW); //vysunout píst } } else if(stavPist1 == 1){ if(pozadovanyStavPist1 == false){ digitalWrite(pist1, HIGH); //pokračuj v zasouvání pístu } else{ digitalWrite(pist1, LOW); //pokračuj ve vysouvání pístu } } else if(stavPist == 2){ if(pozadovanyStavPist1 == false){ digitalWrite(pist1, HIGH); //zasunout píst } else{ //nic nedělej, je vysunuto a to je dobře } } }
Dá se to zapsat i kratším způsobem, ale takto to snad bude pochopitelné 🙂
Zbyšek VodaSprávceAno, controllino je vlastně Arduino obalené relátky apod.
Zbyšek VodaSprávcePokud jsou to výpadky například jednou do hodiny, tak by alespoň chvilku mělo Arduino vždy zapisovat.
Ještě mě napadlo, jestli nebude problém v připojení. Máte Yun připojeny k síti pomocí Ethernet kabelu?
Zbyšek VodaSprávceDobrý den,
možná by šlo použít Controllino (psali jsme o něm zde), nebo Industruino. Obě jsou to PLC kompatibilní s Arduinem.Zbyšek VodaSprávceDobrý den,
podle toho co popisujete není chyba v Arduinech.
Není třeba možné, že na místě B je nějaká chyba v napájení, nebo tak něco?Zbyšek VodaSprávceNa stripboard se dá rozmístit součástky i ve Fritzingu, ale nevím, jak je na tom s autoroutováním.
Zbyšek VodaSprávceDobrý den.
Můžete si představit, že bluetooth spojení se (většinou) u Arduina chová tak, jako by tam žádný bluetooth modul nebyl a Arduino přijímalo data přes sériovou linku.Každá mobilní aplikace bude mít asi ovládání trochu specifické, veskrze se ale bude jednat o odesílání nějaké sekvence čísel, popřípadě znaků.
Konstra, kterou posíláte vlastně jenom říká, že se do incomingByte uloží byte přijatý přes sériovou linku.
Mějme nějakou modelovou aplikaci – například jednoduchý joystick. Při směru nahoru pošle byte s hodnotou ‚u‘, při směru dolů ‚d‘, při směru doleva ‚l‘ a doprava ‚r‘. Vy pak v Arduinu budete na přijetí těchto znaků čekat. Například:
if(incommingByte == 'u'){ jedNahoru(); }
Takto si například můžete udělat jednoduché autíčko.
Asi nejjednodušší na začátek bude, když si do mobilu stáhnete nějaký Bluetooth Terminál – myslím, že mi dobře fungoval třeba tento: Bluetooth Terminal. Ten jenom odešle znaky, které mu zadáte.
V terminálu se připojíte k vašemu bluetooth modulu a pošlete například znak ‚a‘. V tu chvíli by se měl tento znak uložit do proměnné incommingByte.
Různé aplikace pro bluetooth komunikaci budou fungovat podobným způsobem. Jakou konkrétní sekvenci posílají najdete většinou v jejich dokumentaci.
Podrobněji se bluetooth věnuji ve článku Propojujeme Arduino s jinými zařízeními. Tam také popisuji hodně zajímavou aplikaci SensoDuino, která umí posílat data z mobilních senzorů přes BT do Arduina.
-
AutorPříspěvky