lieg
Vytvořené odpovědi
-
AutorPříspěvky
-
bot
Účastník1. Měl by být asi oficiální (kupoval jsem ho na ebayi, na desce je napsáno pouze UNO)
2. Ano na čipu je napsáno Atmega328P-PU
A nejde bootloader nahrát jiným způsobem – mám sériový port na pc, tak jestli nejde udělat jednoduchý programátor (koukal jsem na nějaký schémata, kde využili pár odporů a jeden tranzistor – to bych doma našel), ale moc tomu nerozumím…
Vojtěch Vosáhlo
ÚčastníkZkusím se do toho podívat hlouběji a něco zkusit. Ještě 2 věci:
1. Je arduino oficiální nebo „klon“
2 Je procesor opravdu Atmega328P-PU a né jen 328?bot
ÚčastníkStejný výsledek.
Vojtěch Vosáhlo
ÚčastníkZkuste to stejné akorát bez krystalu, kondíku a rezistoru…
bot
ÚčastníkKdyž chci jakýkoliv sketch zkompilovat (IDE 1.6.11) nastane chyba:
exec: „C:\\Users\\matej\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\4.9.2-atmel3.5.3-arduino2/bin/avr-g++“: file does not exist
Nastala chyba při kompilaci u desky Arduino/Genuino Uno.Podařilo sem i nainstalovat avrdudess a při detekci se mi vypsalo v konzoli toto:
Unknown signature 000000(retrying)
Vojtěch Vosáhlo
ÚčastníkCo píše arduino IDE při kompilaci?
Myslím arduino ide (1.6.11)
Vojtěch Vosáhlo
ÚčastníkVím že ten příspěvek už je hodně starý ale možná to pomůže 😉
České charaktery si musíte dopsat sám ->
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
6,V tomto poli je 7 bytů a v každém 8 bitů, každý bit reprezentuje jednu led na display a vy si musíte své charaktery „nakreslit“ do těchto bitů. Ty poté zobrazíte na display.
Pro rotování bych zkusil vypustit tuto funkci a odkazy na ní, očividně má co dělat s rotováním charakterů.
// Rotate the buffer void rotateBufferLong(){ for (int a=0;a<7;a++){ // Loop 7 times for a 5×7 font unsigned long x = bufferLong [a*2]; // Get low buffer entry byte b = bitRead(x,31); // Copy high order bit that gets lost in rotation x = x<<1; // Rotate left one bit bufferLong [a*2] = x; // Store new low buffer x = bufferLong [a*2+1]; // Get high buffer entry x = x<<1; // Rotate left one bit bitWrite(x,0,b); // Store saved bit bufferLong [a*2+1] = x; // Store new high buffer }
Doufám že ještě pomůžu…
Vojtěch Vosáhlo
ÚčastníkZkusíme jednu věc, stáhněte si tento program http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/ a nainstalujte. Vše nechte zapojené tak jak je a v arduinu nechte Arduino as ISP program.
Až to bude stažené a nainstalované, vyberte jako programmer Atmel AVR ISP, jako port, port na kterém arduino běží, a do baud rate dejte 19200. Po nastavení toho všeho, pokud jste si jistý že je vše zapojené, klikněte v pravo v záložce MCU na Detect.
Dole v konzoli by vám to mělo něco vypsat, tuto zprávu sem potom vložte.
Držím palceEDIT: Co píše arduino IDE při kompilaci?
bot
ÚčastníkZkusil jsem přidat i kondenzátor, ale bez úspěchu.
Také jsem zkusil stáhnout nový arduino IDE (1.6.11), ale to nefunguje, už při kompilaci – nemůžu mít něco špatně nastavené?
Jinak používám arduino IDE 1.5.8
Udělal jsem foto zapojení s krystalem a kondíkem.
Link na foto: https://postimg.org/image/z3eu1yhnt/
posjirka
ÚčastníkTen konenzátor patří mezi GND a RESET. právě zabraňuje svévolnému resetu arduina při programování ..
Vojtěch Vosáhlo
ÚčastníkAno, závitové tyče 😉
Myslím že když se omyjí tak vodu kazit nebudou a bude to fungovat dobře. Ten odkaz co jsem dával je pro takový účel až moc, aspoň bych řekl.
Držím palce.ansko
Účastníkšroubovice = závitové tyče?
Ano, voda má být „pitná“ … sice se většinou nepije, ale …
Omlouvám se, v prvním příspěvku jsem odkaz přehlédl.
Ansko
Vojtěch Vosáhlo
ÚčastníkAle abych řekl pravdu, nejlepší mi přijde sehnat si dně šroubovice jako elektrody a měřit jejich odpor. Je to extrémě jednoduché a mělo by to splňovat všechny požadavky.
Vojtěch Vosáhlo
ÚčastníkJak jsem napsá v „editu“, tamten návod vypadá dobře. Bude ta voda na pití? Abych řeklpravdu tak nevím jestli je tahle technika ok na pitnou vodu ale asi ano… Zabudoval bych to přímo do hrdla, tam to bude asi nejlepší jen to chce pracovat s materiály které nejsou zdraví škodlivé…
ansko
ÚčastníkKonkrétně mi jde o měření obsahu cca 40l kanistru v karavanu … čistá voda. Asi takto, ale široké hrdlo: https://i.bazak.cz/static/i/o/u/w/173298125523875448.jpg
Tedy výška hladiny odhadem 0-50cm
Ansko
Vojtěch Vosáhlo
ÚčastníkZáleží hodně na tom jak vysoko vám voda stoupá a jaké rozlišení potřebujete. Ale na obě témata (ultrasonický senzor i kapacitní měření) existuje mnoho dobrých návodů a ani u jednoho by neměl být problém na realizaci s arduinem. Na jaký rpzsah výšky hladiny cílíte?
Edit: Příklad hezké konstrukce kapacitníh senzoru s arduinem: http://www.instructables.com/id/Capacitive-Fluid-Level-Sensor/?ALLSTEPS
Vojtěch Vosáhlo
ÚčastníkVzhledem k tomu že 100m není zrovna malá vzdálenost, takbych použil laser. Samozřejmě pokud nebudete měřit vzdálenost živých objektů. Ale takovéto přístroje jsou většinou hodně drahé viz. http://www.robotshop.com/en/sf30-c-laser-rangefinder-100m.html za 700$. Záleží hlavně na tom co chcete měřit… Taková informace by se hodila.
Vojtěch Vosáhlo
ÚčastníkPokud máte připojený externí krystal 16mhz, stačí vybrat desku arduino uno. Kdyby jste měl čip bez externího krystalu, vyberete Arduino on breadboard 8mhz. Mohlo se stát taky to že se vám zavaděč už vypálil, prakticky nevědomky, a nastavilu se nějak fuse a kvůli tomu se k čipu nemůžete dostat, ale to bych prakticky vyloučil. Nebýy čipy od dodavatele nějak nastavené? Předvypálené nebo nastavené na nějakou frekvenci? Když jsem tohle naposledy dělal měl jsem taky hodně problémů a myslím že tenkrát pomohl kondenzátor (4,7uF) ale netuším jestli mezi GND a VCC nebo reset pinem a buď zemí nebo VCC (všechny kombinace na arduinu a na JEHO pinech, né na těch simulovaných pro spi). Budu čekat na tu dokumentaci, určitě to někam posunem…
bot
ÚčastníkAno jako programátor mám nastaveno arduino as ISP.
Zkoušej sem to i bez krystalu.
Postupoval jsem dle několika návodů např: (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard, http://www.itnetwork.cz/hardware-pc/arduino/arduino-samostatny-cip-atmega328p, https://bastlirna.hwkitchen.cz/nas-prvni-klon-arduina/)Zítra bych udělal nějakou dokumentaci a hodím ji sem.
Čipy jsou nové ani jednou použité. Koupil jsem je na ebayi.
Ještě dotaz jakou desku mám mít nastavenou při vypalování?
Jelikož dle návodu na ITnetwork mám mít „Atmega328 on breadbord (8Mhz internal clock)“ a když tak učiním vyhodí to chybu :
Chyba při vypalování zavaděče.
processing.app.debug.RunnerException: Please select a programmer from Tools->Programmer menu
at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:261)
at processing.app.Editor$47.run(Editor.java:2564)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)Vojtěch Vosáhlo
ÚčastníkTahle chyba skáče většinou když je opravdu nějaký problém se zapojením (aspoň z mé zkušenosti). 1 krok určitě znovu zkontrolovat všechna připojení jako popsáno.
Důležité je nezapomenout spojit země procesoru a arduina. Poté by měly být zapojeny VCC a AVCC na napájení a OBĚ GND na zem. Pokud máte multimetr, prospělo by každé spojení přezkoušet. Taky je možné, stává se mi to občas při programování přes usbasp, že je clock moc vysoký, zkuste ho v programu nadefinovat třeba na 500Hz. Předpokládám že máte nastavený v Nástroje -> programátor Arduino as ISP.
A nakonec mohl by to být problém i toho že tam máte krystal, můžete ho zkusit dát pryč a uvidíte. Pokud nic nepomůže tak zkuste poslat třeba pár fotek aby bylo dobře vidět zapojení na obou stranách.Jen tak naokraj, byl čip už používán? A kde jste ho kupoval?
bot
ÚčastníkMám k dispozici funkční arduino UNO (s smd čipem). To používám jako arduino as ISP, tedy jsem do něj nahrál sketch arduinoISP, připojil i externí LEDky na piny 7, 8, 9 pro signalizaci. Při zapojení arduina do PC mi pulzuje led na pinu 9, když dám vypálit bootlaoder, tak mi jednou blikne led na pinu 7 a v IDE vypíše chyba viz. výše. Zapojení s prázdným čipem používám co je na oficiálním webu s 16mhz krystalem.
Ještě takový poznatek, zapojení mám realizované na bezkontaktním poli, pokud vyjmu prázdný čip ze zapojení hlásí to stejnou chybu.
Vojtěch Vosáhlo
ÚčastníkCo používáte za programátor na nahrání bootloaderu?
Pak můžem něco vymyslet 😉ArduXPP
ÚčastníkU arduina to je kolem 5.5V u 6V už je riziko , že zničí pin.
U AC se používají 4 diody proti přepólování .
Zbyšek Voda
ÚčastníkDobrý den,
kód je naprosto v pořádku. Asi bych zkusil buďto přeinstalovat prostředí a když ani to nepomůže, tak vyzkoušet nějakou starší verzi 🙂KuldaCz
ÚčastníkNechápejte to špatně , ale to o čem vy píšete nemá s tím nic společné , to jen kontroluje , jestli přichází nějaká zpráva , nebo jestli je to jen prázdný nonsense.
Zbyšek Voda
ÚčastníkDobrý den, napadá mě, že by problém mohl být v porovnání:
heslo !=""
Jazyk C++ má totiž řetězce implementované jako objekty – vy používáte objekt String. A u nich je potíž, že nejdou jednoduše porovnávat jako primitivní datové typy. Dojde totiž k porovnání jejich refenrencí a ne jejich hodnot (aspoň myslím).Takže u
String s1 = "A"; String s2 = "A";
myslím neplatí rovnost s1 == s2.
Vy tedy porovnáváte objekt heslo, který je typu String s prázdným řetězcem „“. Dojde k porovnání referencí (něco jako adresa v paměti). Ty dva se ve vašem případě nikdy rovnat nebudou, tedy bude podmínka
heslo !=""
vždy true.K porovnávání hodnot řetězců se používá metody equals – viz https://www.arduino.cc/en/Reference/StringEquals
Tento problém s porovnáváním řetězců tam pak máte několikrát.
Snad to pojede 🙂
Sachlj
ÚčastníkArduino UNO je klon co má v sobě rovnou esp WiFi. Je pro mě podstatně aby se to vešlo pokud možno do malého prostoru. Řekneme do obalu od Ramy. Nechci mít desku a na ní to rozhozené do prostoru. Relay bude spínat max 24 voltů takže to chci mít všechno v komínu. Pokud to půjde.
posjirka
Účastníktak si vypši jaké piny využívá který shield.
Stejně se asi neubráníš vylstnímu shieldu třeba pro ty čidla.
Když už tak bych použil Arduino Mega a na ně navázal všechno co se nevešli na UNO (ty UNO by měli jít i na MEGA jen použiješ méně pinů).
Takže bych si být tebou koupil univerzální shield pro MEGU (možná 2 desky) a pak teprve dal ty z UNO. WIFI použiváš jaký?, nemá náhodou na sobě i slot na SD kartu? …KuldaCz
ÚčastníkDobrá , zde je můj kod:
#include <SoftwareSerial.h> #include <Nextion.h> #include <SPI.h> #include <SD.h> SoftwareSerial nextion(8, 7);// Nextion TX to pin 8 and RX to pin 7 of Arduino Nextion myNex(nextion, 9600); File sd, lok, zk; String loged; void setup() { Serial.begin(9600); SD.begin(4); myNex.init(); } void loop() { String heslo = myNex.listen(); sd = SD.open("prih.txt"); loged = sd.read(); sd.close(); if(heslo !=""){ // kontrola jestly nekdo něco zmáčknul Serial.println(heslo); zk = SD.open("zk.txt", FILE_WRITE); zk.println(heslo); zk.close(); if(heslo == "70 233"){ SD.remove("prih.txt"); if(!SD.exists("prih.txt")){ lok = SD.open("log.txt", FILE_WRITE); sd = SD.open("prih.txt", FILE_WRITE); loged = '1'; sd.print("1"); lok.println("233"); myNex.sendCommand("va0.val=11"); sd.close(); lok.close(); } } } //Kontrola přihlášenosti if(loged=="1"){ myNex.sendCommand("pr.val=1"); }else{ myNex.sendCommand("pr.val=0"); } }
posjirka
Účastníkto není drobná úprava, ale napsat nový program.
1, pokud chceš MENU, je třeba si zvolit jaké parametry a v jakých hodnotách to budeš ovládat. Proto pak existují knihovny, které to řeší, Případně si musíš napsat menu sám. Pak se to objevuje otázka zda ukládat hodnoty, kam je ukládat a kdy. Pamatuj, že EEPROm mám max 100 000 zápisu, což vypadá usměvně, ale při ukládání každou 1s je to něco přes 1 den, než zničích EEPROM….2, někdy je lepší použít potenciometr/trimr na analogovém vstupu spíš, než složitě řešit menu. Stejně to budeš nastavovat 5x za život, tak proč ztrácet čas.
Dokonce můžeš nastavit i třeba 2 parametry přes 1 AI. Inspirovat se můžeš když si najdeš one wire keypad a místo tlačítka dáš piny + jumper.3, přidat další senzor, není problém spíš si třeba v excelu zkus navrhnout jak by to mělo vypadat na LCD. Zapomeň, že bys kombinoval 2 znaky na 1 pozici a máš max. 16 vlastních znaků. Mezi nimi bude „stupeň“. Nakresli si nominální stav a pak 2-3 mezní stavy aby se ti to tam vešlo.
4, Tlačítko bych dal pouze 1 na přepnutí zobrazení (stiskneš tlačítko a na LCD se ti objeví hodnoty které nastavuješ. Pustíš tlačítko a budeš mít normální zobrazení LCd. …
-
AutorPříspěvky