Pulec
Vytvořené odpovědi
-
AutorPříspěvky
-
Zbyšek Voda
ÚčastníkDobrý 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á.Alis Vitae
ÚčastníkOspravedlňujem sa ale tento text je preložený na Google Translator, pretože slovenský mi práve veľmi dobre nejde. Rozdiel je v tom, že #define nevyužíva pamäť Arduino dosky.
______________________________________________________________________________
Pre možný rozdiel vo význame v preklade, uvádzam tento text i v origináli (Czech).Omlouvám se ale tento text je přeložen na Google Translate, protože slovenština mi zrovna moc dobře nejde. Rozdíl je v tom, že #define nevyužívá paměť arduino desky.
Alis Vitae
Zbyšek Voda
ÚčastníkDobrý den,
zatím je vložení na externí server a následné nalinkování obrázku standardní postup.vnouzirozbijsklo
Účastníkzměna void loop. ted to vypada slibně…opět
{
pinMode(svetlo1,OUTPUT);
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every secondbyte s, m, h, dvt, dvm, mesic, r;
readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r);if (h >= 9 && h < 21) den = 1; // nastaveni intervalu sviceni
else den = 0;
for (byte brightness = 0; den == 1 && sviti == 0 && brightness < 255; brightness ++) {
analogWrite(svetlo1, brightness);
if(brightness == 255) sviti = 1;
delay(3500);
}for (byte brightness = 255; den == 0 && sviti == 1 && brightness > 0; brightness –) {
analogWrite(svetlo1, brightness);
if(brightness == 0) sviti = 0;
delay(3500);}}
Alis Vitae
ÚčastníkZapojili jsme RGB Led k Arduino Nano základové desce.
Program zněl náledovně:int redPin = 11; int greenPin = 10; int bluePin = 9; char val; void setup() { Serial.begin(9600); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { if( Serial.available() ) { val = Serial.read(); } if (val == 'r') { showRed(); } if(val == 'g') { showGreen(); } if(val == 'b') { showBlue(); } if(val == 'v') { showViolet(); } if(val == 'c') { showCyan(); } if(val == 'w') { showWhite(); } else { } if(val == 'n') { NOV(); } if(val == '.') { showRed(); showGreen(); showBlue(); showViolet(); showCyan(); showWhite(); NOV(); } } void showRed() { //red digitalWrite(redPin, HIGH); digitalWrite(greenPin, LOW); digitalWrite(bluePin, LOW); delay(1000); //green } void showGreen() { digitalWrite(redPin, LOW); digitalWrite(greenPin, HIGH); digitalWrite(bluePin, LOW); delay(1000); } void showBlue() { //blue digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); digitalWrite(bluePin, HIGH); delay(1000); } void showViolet() { digitalWrite(redPin, HIGH); digitalWrite(greenPin, LOW); digitalWrite(bluePin, HIGH); delay(1000); } void showCyan() { digitalWrite(redPin, LOW); digitalWrite(greenPin, HIGH); digitalWrite(bluePin, HIGH); delay(1000); } void showWhite() { digitalWrite(redPin, HIGH); digitalWrite(greenPin, HIGH); digitalWrite(bluePin, HIGH); delay(1000); } void NOV() { digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); digitalWrite(bluePin, LOW); }
Doporučujeme tento projekt jako první projekt pro všechny začátečníky. Není to jen nudná leddioda, která blikne a není moc součástek co potřebujete. Jediné co potřebujete je: Arduino Deska (U nás Nano), RGB Led, nějaké vodiče a nějaké rezistory
Alis Vitae
ÚčastníkNevím, podle mě můžeš použít desky jako Nano, Uno, Mega…
Aleš
ÚčastníkAha. Tak to asi bude nějaký problém nové verze.
Mě zase se..u ty Warningy. Proč musím pokaždé vědět, že je některá knihovna „špatná“. Nemůžu přijít na to, jak to vypnout, a ty knihovny vymazat nechci, protože je používám, a fungujou. Jenom IDE se nějak nelíbí.Vojtěch Vosáhlo
ÚčastníkJá bych to určitě dělal přes 1 string pole.
Vojtěch Vosáhlo
ÚčastníkMělo by bohatě stačit napájení z USB. 😀
horisus
ÚčastníkJak jsem psal,jsem úplný amatér a nikdy jsem nic nezapojoval a nemám to jak změřit.Stavím si doma letecké pedály a potenciometr by měl sloužit pro ovládání zatáčení v simulátoru.Ještě se zeptám musí být arduino připojeno další napájení nebo stačí napájení z USB?
Zbyšek Voda
ÚčastníkDobrý den,
to zapojení bude stejné, jako když zapojujete normální potenciometr.Zkuste poslat fotku vašeho posuvného potenciometru.
Vojtěch Vosáhlo
ÚčastníkAhoj, mělo by to (podle čísel) být zapojeno:
1: Jde na pozitivní napětí (3.3v/5v)
jedna ze 2: Jde na analogový vstup arduina. Mělo by být jedno jakou 2 zapojíš, měly by být spojené.
3: Jde na zem – GNDPOZOR: To co tady píšu je jenom teoreticky, tak jak je to u většiny potenciometrů. Pokud si to chceš ověřit podívej se do datasheetu k potenciometru a nebo si to jednoduše přeměř.
Vojtěch Vosáhlo
ÚčastníkAhoj,
Jak jsem se dočetl tak sis pořídil SIM800L který se umí k internetu připojit přes GPRS.
1. Problém který by si mohl mít je aktivace dat na sim kartě. Pokud karta nemá zaplacená mobilní data tak není možné aby to fungovalo.
Viz. dokumentace:GPRS založená na technologii přepojování paketů využívá volné časové sloty, které může sdílet více uživatelů, a je účtována za přenesená data nebo paušálem za určité časové období
Další věc která mě zaujala je že píšeš TX pin 6, RX pin 7
Arduino (pokud nepoužíváš system serial) má pro seriovou komunikaci pin 0 a 1
Vysvětlení téhle věty:Change SIM_SERIAL definition to the serial UART which SIM800 is attached to
je úplně jednoduché. To co po tobě chtějí je definovat jaký UART používáš.
Mělo by stačit do tvého kódu vložit #define SIM_SERIAL Serial
pokud budeš používat nativní seriový port arduina. Pokud budeš používat Software serial tak tam místo Serial dáš jméno toho tvého virtuálního sériového portu.
Hodně štěstí a kdyžtak se ještě ozvi.poprad
ÚčastníkUž jsem to vyřešil:
SerialStepper.h
#ifndef SerialStepper_h #define SerialStepper_h #include <Arduino.h> class SerialStepper { public: SerialStepper (byte pin_STCP, byte pin_SHCP, byte pin_DS, byte pocetM, int motory[]); void Init(); private: byte _pin_STCP; byte _pin_SHCP; byte _pin_DS; byte _pocetM; int * _motory = NULL; // Inicializacia pointera }; #endif
SerialStepper.cpp
#include <Arduino.h> #include "SerialStepper.h" SerialStepper::SerialStepper( byte pin_STCP, byte pin_SHCP, byte pin_DS, byte pocetM, int motory[]) { this->_pin_STCP = pin_STCP; // priradenie k lokalnym this->_pin_SHCP = pin_SHCP; // premennym this->_pin_DS = pin_DS; this->_pocetM = pocetM; this->_motory = & motory[0]; // Priradenie adresy }
A práce s lokálními proměnnými v SerialStepper.cpp už je klasika:
....... digitalWrite (_pin_STCP,HIGH); ....... digitalWrite (_pin_SHCP,LOW ); ....... digitalWrite (_pin_DS,LOW ); ....... for (byte i = _pocetM; i>0 ;i--) { Motory = _motory[i-1]; .......
jankop
ÚčastníkKdyž chci přeložit, co mi předtím šlo, tak to holt nejde.
Varování: platform.txt z jádra 'ESP8266 Modules' obsahuje zastaralé recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automaticky skonvertované do recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Zvažte upgrade tohoto jádra. WARNING: Category '' in library EEPROM is not valid. Setting to 'Uncategorized' WARNING: Category '' in library ESP8266httpUpdate is not valid. Setting to 'Uncategorized' WARNING: Category '' in library Hash is not valid. Setting to 'Uncategorized' WARNING: Category '' in library SPI is not valid. Setting to 'Uncategorized' WARNING: Category '' in library Ticker is not valid. Setting to 'Uncategorized' WARNING: Category '' in library Wire is not valid. Setting to 'Uncategorized' C:\Users\Pavel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\ESP8266WebServer\examples\AdvancedWebServer\AdvancedWebServer.ino: In function 'void setup()': AdvancedWebServer:117: error: 'drawGraph' was not declared in this scope server.on ( "/test.svg", drawGraph ); ^ exit status 1 'drawGraph' was not declared in this scope Nalezena neplatná knihovna v C:\Users\Pavel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\esp8266: C:\Users\Pavel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\esp8266 Nalezena neplatná knihovna v C:\Users\Pavel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\esp8266: C:\Users\Pavel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\esp8266
Aleš
ÚčastníkCo znamená, že s 1.6.6 nepracuje správně? Já jsem teda verzi 1.6.5 nezkoušel, ale s 1.6.6 nemám problémy. Normálně dám export binaru, a ono mi ho to vyexportuje. Do ESp jsem ho nahrávat nezkoušel. Nic o tom, že není podporována to nepíše. Zkus z //USER/… smazat adresář arduino15, a nainstalovat podporu ESP znovu.
jankop
ÚčastníkNo tak se zdá, že ten export bináru půjde také. Sice to píše, že funkce není podporována, ale druhým dechem to napíše, kam to BIN uložilo. A podařilo se mi praktickým programem ESP8266Flasher.exe binár nahrát do modulu a spustit.
jankop
ÚčastníkTož závěr mého experimentu zní:“Pokud se nechcete dostat s ESP8266/Arduino do problémů, tak zůstaňte u Arduino IDE 1.6.5. Verze 1.6.6. správně se stávajícím doplňkem pro ESP8266 nepracuje!“
jankop
ÚčastníkZrovna verzi 1.6.6. instaluji, asi máš pravdu, při svém prvním pokusu jsem možná udělal nějakou chybu.
Ale narazil jsem na problém v tom, že nedovedu nastavit piny pro I2C. Potřeboval bych připojit čidla, ale nedokážu definovat SCL a SDA.Aleš
ÚčastníkMáš pravdu, má jenom 512KB.
Teď si tady s tím znovu hraju, a 1.6.6 opravdu s ESP8266 funguje. Zrovna mi běží demo HelloServer.jankop
ÚčastníkVerze 1.6.6. podle mě nefunguje s ESP8266. Alespoň můj první pokus neprošel.
jankop
ÚčastníkMimochodem Aleši, na svém webu píšeš, že modul ESP826-01 má 1MB FLASH. Není to pravda, ten běžný, který máš na fotce má pouze 512KB. Jako novinka se teď presentuje provedení ESP8266-01E s 1MB, ale ten vypadá jinak.
Aleš
ÚčastníkNepájivé pole používám jenom v krajní nouzi. To raději sletuju několik drátů do Y 🙂 Ale možná by stačilo přidat k napájení ESP8266 nějaký velký kondenzátor. Na vykrytí špiček při vysílání. Jenom na vyzkoušení.
Aleš
ÚčastníkTak si nainstaluj verzi 1.6.6. V čem je problém?
poprad
ÚčastníkJaké čtverečky? Myslíš hranaté závorky, které označujú proměnné typu pole?
Ty lomené závorky u Arduino.h opravím, ale určitě to nesouvisí s mojím problémem. Chybu to hlásí na označené řádky, když chci namapovat lokální proměnné pole na dovážené pole.byte _motory[] = motory[] byte _smerM[] = smerM[]
taunt
ÚčastníkTak problém z velké části vyřešen. Gigabyte deska nestíhá napájet více USB portů, než asi dva flash disky. Flash firmvare po odpojení všech ostatních kabelů proběhl OK. Běžné AT příkazy, při kterých modul nenutím jít na wifi projdou v pořádku. Jakmile si sáhne na vysílač, tak se terminál kousne a USB porty přestanou komunikovat. Takže jdu řešit PC a neskutěčně nekvalitní nepájivé zkušební pole, které má takové přechodové odpory, že mu třívoltová logika dělá docela problémy.
To Aleš: dík za odkaz na Vaše stránky, dobrá inspirace.jankop
ÚčastníkNo já věřím, že export BIN v 1.6.6. funguje. Ale já mluvím o verzi 1.6.5. ve spojení s modulem ESP8266.
pesi
ÚčastníkCo ty čtverečky v názvech, Nějaký skrytý nedovolený znak?
Asi to s tím nesouvisí, ale proč máš u include „arduino.h“ uvozovky? Není standardní knihovna a neměla by být ve špičatých závorkách: #include <Arduino.h>?
Aleš
ÚčastníkNojo. Ono to fakt funguje 🙂 Já jsem si myslel, že se to musí programovat přes esptool. Každopádně k tvému dotazu. Mám IDE verzi 1.6.6, a tam normálně export do binárky jde. Dík 🙂
jankop
ÚčastníkProveď reset modulu s GPIO připojeným na GND. Pak z IDE normálně nahraj program.
-
AutorPříspěvky