Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Index. proměnná v Arduinu
Jdi na stránku 1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 9:05    Předmět: Index. proměnná v Arduinu Citovat

Na přežití korony potřebuji poradit s programováním :
potřebuji použít v programu Cpp arduina více proměnných
typu float a(n) kde n = 1 až 200
indexovanou proměnnou jayzk neumí jak to obejít ???
….
specifikovat proměnné např a , b ,c , x , y , z je nedostačující a zdlouhavé
děkuji za rady

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Ondra2



Založen: Mar 19, 2014
Příspěvky: 537

PříspěvekZaslal: pá březen 27 2020, 9:07    Předmět: Citovat

Odpověď se jmenuje pole.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crifodo



Založen: Oct 11, 2005
Příspěvky: 15005

PříspěvekZaslal: pá březen 27 2020, 9:16    Předmět: Citovat

elnovy napsal(a):

indexovanou proměnnou jayzk neumí


https://www.arduino.cc/reference/tr/language/variables/data-types/array/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 9:26    Předmět: Citovat

napadlo mě použít proměnné např
int x1
int x2
int x3
…….
int x200
ale ten index mi tam stále chybí pro jednoduché zpracování vysledků
odpoveď pole vede na složité zpracování hodnot x(n)

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 9:30    Předmět: Citovat

no asi to pres moje pole krkolomně pujde ,,,dekuji
ale indexovana promenna jako v TB by bylo daleko lepši ....

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: pá březen 27 2020, 10:30    Předmět: Citovat

elnovy napsal(a):
Na přežití korony potřebuji poradit s programováním :
potřebuji použít v programu Cpp arduina více proměnných
typu float a(n) kde n = 1 až 200
indexovanou proměnnou jayzk neumí jak to obejít ???
….
specifikovat proměnné např a , b ,c , x , y , z je nedostačující a zdlouhavé
děkuji za rady


V C++ index pole začíná od nuly.
kód:

float mojePole[199];
mojePole[0] = 3.14;
mojePole[66] = mojePole[0] / 3;


Nevím jaký máš cílový µC (kolik paměti), ale u "malých" AVR takovým polem spotřebuješ téměř celou dostupnou datovou paměť.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 10:43    Předmět: Citovat

jj dik pracuju na Nano 328 to jak pišeš má malou paměť
a pak mám ESP 12 ta je asi 100x větši ....
snad to zvládnu
jedná se mi načist ze senzoru
v čase 1 --- 200 hodnoty int x (1) .....int x (200)

po načtení provést
1. Součet všech hodnot na to bych nepotřeboval indexy
2. ostatní operace různé ..tzn různé operace pro různé indexy
indexy se budou v čase měnit dle programu

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: pá březen 27 2020, 10:52    Předmět: Citovat

float zabírá 4 byte. Pole má pak 800 bytů. No a atmega328 má 2kB, takže to zabere podstatnou část SRAM.
Ten index od jedničky se dá vyřešit prostým přičtením jedničky:
kód:

mojePole[n+1] =
...


ale lepší (kód je pak taky kratší) je prostě si zvyknout že první buňka pole má index nula.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 10:52    Předmět: Citovat

//oprava code např .nacetena hodnota dat

int mojePole x[199];
mojePole x[0] = 3;
mojePole x[1] = 8;;
...
mojePole x[199] = 2888;

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: pá březen 27 2020, 10:57    Předmět: Citovat

Ano, přesně takhle se to používá. Pěkný výklad je třeba zde.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: pá březen 27 2020, 14:03    Předmět: Citovat

Z jakého konkrétního senzoru čteš 200 floatů?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 15:57    Předmět: Citovat

Senzor je určený pro analýzu chemikálie do něho nevidím má výstup U(DC) v rozsahu cca 0-1V
a parametrem je řidící napětí proměnné v čase // něco jako polarograf //
--------------
Senzorem bude externe umisteny attiny 13 smd merici adc 10 bit data bude odesilat
přes UART 9600Bd bezdrátově na zpracování balíčků dat o objemu cca 0-199 hodnot
následně po rychlém zpracování odešle zase po UARTU výsledek .
Řešení přes pole zatím mi nefunguje
zítra pošlu program ...modifikovaný na deset hodnot s ukázkou zpracování dat jak by to mělo vypadat….

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: pá březen 27 2020, 16:15    Předmět: Citovat

Takže máš na vstupu toho Nano nějaký operák na zesílení z 0-1V na rozsah 0-5V?
Nebo budeš snímat jenom ten rozsah 0-1V (což je číselně 0 až cca 200 v 10 bit ADC)?
To není float, to je obyčejný uint, a s tím omezením 0-200 dokonce jenom byte.
Jestli ti můžu doporučit, utíkej od floatů co nejdál můžeš, obzvláště na uC, který nemá MPU jednotku (a to atmega nemá). Jednak to zpracování dlouho trvá, jednak přesnost není nic moc.

Předpokládám, že teda potom to celé pole chceš sečíst, vydělit počtem prvků v poli a ten výsledek někam poslat? Pak ti stačí jenom jedna proměnná float, do které umístíš ten konečný výsledek. Všechno ostatní budou byte nebo int.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy



Založen: Jul 04, 2010
Příspěvky: 789

PříspěvekZaslal: pá březen 27 2020, 17:18    Předmět: Citovat

Asi jsem to napsal malo jasne
to co radis je jen cast toho co chci
strucne
cidlo : adci snimani s citlivosti 1mV
prenos pres vzdálenostni bariéru cca 12m bezdrátově Uartem
do cidla x(n)=data(n) o hodnotě 0-255
z čidla do ESP12E = vykponný 32bit procesor data y(n) o hodnotě 0-1024
…….
Esp 12 zpracuje tento balik dat jako integrál v času n od 0 do 199
Pokud pole nebude potreba budu rád
ale stejně vidím problém v přenosu dat do čidla
pak ten integrální výpočet
a nasledné odeslání zase ven uartem
…….
pokud to ještě není jasné poslu blokove schema
zitra poslu program furt mi to preklqdac nebere = hlasi chybu

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: pá březen 27 2020, 17:44    Předmět: Citovat

Asi jsem natvrdlej Smile, ale zkusím:
Máš nějaké čidlo ( na výstupu čidla měříš napětí v rozsahu cca 0-1V-> připojeno k ADC ATINY).

Atiny bude napájené dejme tomu 5V, takže reference pro to ADC bude 5V, děleno 1024 (10bit AC), bude jeden bit cca 5mV. Nikoliv 1mV. Plus nějaké chyby převodu, takže spíš horší. To jen pro upřesnění. Pokud to nemáš vymyšleno nějak jinak


Ta ATINY pošle (buď jeden nebo více výsledků převodu z ADC)-> převodník UART-> ESP.
, ESP s tím provede nějakou operaci (integraci) a ten výsledný parametr zase pošleš zpět kam ? To čidlo má nějaký další vstup, který je řízen tím výsledkem té operace? A ten žere data, nebo napětí?

Jinak bez toho pole je to sice řešitelné, ale asi to nebude to pravé ořechové. Přesně pro tohle jsou ta pole vymyšlena. Jenom hýbeš pointerem a mrskáš se v poli jako ryba ve vodě Smile Tudíž součet prvků v poli je jednoduchý for loop s indexem prvku atd.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.14 sekund