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í 

Konverze do jazyka Arduina
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
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á srpen 30 2019, 0:58    Předmět: Konverze do jazyka Arduina Citovat

Ahoj všem .Stále bojuji se psaním programů pro Studio Arduino 1.8.9
Velmi málo se mi daři zprovoznit .Nechci to vzdát .
Problém :
Fungující program napsaný v turbo basicu = viz obrázek
Chci napsat = modifikovat pro Arduino = konvertovat do jazyka Arduina
výpis programu :
REM:NAZEV PROGRAMU :TBASIC TRANSFER TO ARDUINO JAZYK

OPEN "COM2:9600,N,8,1,RS,CS,DS,CD,LF,PE" AS #1: REM OTEVRENI COM PORTU

FOR X=1 TO 3000 STEP 86 :REM PRACOVNÍ SMYCKA
Y=X/2.5 :REM VYPOCET
PRINT "Y=";Y :REM TISK NA OBRAZOVKU
REM POZADUJI VYSTUP Y NA SERIOVY MONITOR
REM POZADUJI VYSTUP Y NA SERIOVY PLOTER
IF Y > 400 THEN STOP
NEXT X

....
Děkuji za rady respektive napsání jednoduchého prográmku
aby fungoval v Arduinu.
....
poznámky :
Doba překladu = kompilace je dosti dlouhá
Komplikovanost jazyka C je mi záhadou



PROGRAM PRACUJE.png
 Komentář:
 Velikost:  28.86 kB
 Zobrazeno:  166 krát

PROGRAM PRACUJE.png



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



Založen: Jun 12, 2019
Příspěvky: 13

PříspěvekZaslal: pá srpen 30 2019, 7:57    Předmět: Citovat

Možná tak?
kód:
float x, y;

void setup() {
  Serial.begin(9600);
}

void loop() {
  for (x=1; x<=3000; x=x+86) {
    y = x/2.5;
    Serial.println(y);
    if (y>400) break;   
  }
  delay(1000);
}
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á srpen 30 2019, 9:12    Předmět: Citovat

Dík - funguje to s úpravou a s nežadoucím cyklováním :
float x, y;

void setup() {
Serial.begin(9600);
delay(10000); // v teto dobe spustim seriovy monitor
}

void loop() {
for (x = 1; x <= 3000; x = x + 86) {
y = x / 2.5;
Serial.println(y);
if (y > 400) break;
}
delay(1000);
}

namerene hodnoty :
10:02:15.098 -> 0.40
10:02:15.098 -> 34.80
10:02:15.098 -> 69.20
10:02:15.098 -> 103.60
10:02:15.098 -> 138.00
10:02:15.132 -> 172.40
10:02:15.132 -> 206.80
10:02:15.132 -> 241.20
10:02:15.132 -> 275.60
10:02:15.166 -> 310.00
10:02:15.166 -> 344.40
10:02:15.166 -> 378.80
10:02:15.166 -> 413.20
10:02:16.082 -> 0.40
10:02:16.082 -> 34.80
10:02:16.082 -> 69.20
10:02:16.082 -> 103.60
10:02:16.082 -> 138.00
10:02:16.116 -> 172.40
10:02:16.116 -> 206.80
10:02:16.116 -> 241.20
10:02:16.116 -> 275.60
10:02:16.150 -> 310.00
10:02:16.150 -> 344.40
10:02:16.150 -> 378.80
10:02:16.150 -> 413.20
10:02:17.101 -> 0.40
10:02:17.101 -> 34.80
10:02:17.101 -> 69.20
10:02:17.101 -> 103.60
10:02:17.101 -> 138.00
10:02:17.135 -> 172.40
10:02:17.135 -> 206.80
10:02:17.135 -> 241.20
10:02:17.135 -> 275.60
10:02:17.169 -> 310.00
10:02:17.169 -> 344.40
10:02:17.169 -> 378.80
10:02:17.169 -> 413.20

problem je ale v tom že NEREAGUJE NA
delay(1000);// NA KONCI PROGRAMU
STALE STEJNÉ CYKLOVANI PRO delay(100); AZ delay(10000);

DALSI PROBLEM ZE SE PROGRAM NEZASTAVI
PO DOSAZENI HODNOTY Y =400
JAK SEM POZADOVAL ALE FURT PRACUJE DOKOLA = cykluje

....

TO JSOU TAKOVE MALICKOSTI KTERE ODRADÍ ZACATECNIKA
PROSTE AT DAM POVEL STOP NEBO END KAMKOLIV
KOMPILATOR MI TO NEVEME

MOC DEKUJI ZA RADU

_________________
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á srpen 30 2019, 9:33    Předmět: Citovat

elnovy napsal(a):


PO DOSAZENI HODNOTY Y =400
JAK SEM POZADOVAL ALE FURT PRACUJE DOKOLA = cykluje


Je to tím, že funkce loop se volá neustále dokola. Tj. voláním break se přeruší vykonávání cyklu for a poté se opět volá funkce loop. Jestli chceš aby se při (y > 400) přestal program vykonávat, tak místo break napiš např. while(1)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
wirerobot



Založen: Jun 12, 2019
Příspěvky: 13

PříspěvekZaslal: pá srpen 30 2019, 10:02    Předmět: Citovat

Delay na konec jsem dal jen pro příklad (nevíme, kdy chceš měřit) a nevím proč by nefungovalo, přesun na začátek smyčky musí fungovat. A loop běží do nekonečna, pro měření si musíš dodat podmínku a třeba interuptem si ji tlačítkem nastavit na true.

https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/

kód:

bool meritTed = false;

.
.
.
.
.

void loop() {
  if (meritTed) {
    meritTed = false;
    for (x=1; x<=3000; x=x+86) {
      y = x/2.5;
      Serial.println(y);
      if (y>400) break;   
    }
  }
}

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á srpen 30 2019, 10:05    Předmět: Citovat

Děkuji za radu ale i s upravou to cykluje
float x, y;

void setup() {
Serial.begin(9600);
delay(10000); // v teto dobe spustim seriovy monitor or ploter
}

void loop() {
for (x = 1; x <= 3000; x = x + 86) {
y = x / 2.5;
Serial.println(y);
if (y > 400) while(1);
}
delay(1000);
}

Pripravim program konkrétní / toto byl jen tréning /
a snad touto cestou to dám dohromady
....................
V assenbleru nebo TURBO basicu pišu skoro všechno
ale tento C jazyk mi nějak nesedí
Rolling Eyes

Děkuji za radu !!!

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



Založen: Jun 26, 2009
Příspěvky: 1282
Bydliště: Hlohovec (Sk)

PříspěvekZaslal: pá srpen 30 2019, 11:01    Předmět: Citovat

mozno by bolo dobre napisat co od toho ocakavas
poznas zakladnu vlastnost MCU a to ze bezia furt? Toto je naj problem pre ludi ktory zacinaju programovat mcu, ked programujes nieco do PC, tak to skratka zbehne a stoji , mcu tocii furt. u nas maju aj servisaci proben pochopit ze nejake PLC bezi stale, tam uz ani ziaden Delay neexistuje....
tebe sa proste program ani mcu nezastavi ked Y >400 ale sa vrati na zaciatok loopu a bezi znova
ak ho chces zastavit (vykonat iba raz) daj ho do setupu
napis pls co to ma robit


Naposledy upravil misocko dne pá srpen 30 2019, 11:06, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mhepp



Založen: Aug 16, 2017
Příspěvky: 66

PříspěvekZaslal: pá srpen 30 2019, 11:02    Předmět: Citovat

Pokud opravdu chceš, aby se cyklus pustil pouze jednou, tak kód uprav takhle:

kód:


float x, y;

void setup() {
  Serial.begin(9600);
  delay(10000); //Zde si nastav co potrebujes...

  for (x=1; y<=400; x=x+86) { //v podmince FOR cyklu muzu kontrolovat co potrebuji, nemusi to byt ridici promenna (x), kontrolou y usetrim IF
    y = x/2.5;
    Serial.println(y);     
  }

}

void loop() {
}



Pro další běh budeš muset MCU resetovat.[/code]
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á srpen 30 2019, 11:30    Předmět: Citovat

Děkuji za radu
+++
každou radu vítám
===
snad se to naučim
+++
občas budu potrebovat poradit
----
preji hezký vikend

_________________
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á srpen 30 2019, 11:36    Předmět: Citovat

behem dne tedy napisu co to ma robit OK
to bude bomba spoluprace na EB
vsak se bude hodit i jinejm kutilům SW podpora z EB

_________________
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á srpen 30 2019, 12:14    Předmět: Citovat

Co to má dělat = popis funkce:

1. program musí běžet rychle furt dokola
2. na pinu A0 procesoru ESP12 = viz obr. se nepřetržitě měři napětín DC s rozlišením 10bitu
tzn 0-1024 bude naměřená hodnota = X
3. transformace naměřené hodnoty dle tabulky takto :
Y= fce(x) dle tabulky : //nechci vyjádřeni nějakou funkci ale jen obecně tabulkou napŕiklad

X = 0-100 trvale Y= 0
X = 101-200 trvale Y= 3
X = 201-300 trvale Y= 6
X = 301-600 trvale Y= 9
X = 601-800 trvale Y= 15
X = 801-900 trvale Y= 18
X = 901-1300 trvale Y= 20
s možnosti rozšiření tabulky na vice hodnot !!!

hodnota Y se bude trvale odesilat na seriovy port rachlosti 9600
jedině tehdy pokud bude splněna podmínka Y je větši než 10 !!!

konec zadání verze 1

Děkuji za pomoc ...pracuji na tom ale jak se znám zase mi
Kompilace nepude = se zastaví



ZAPOJENI ESP 12 and ADC.png
 Komentář:
 Velikost:  270.06 kB
 Zobrazeno:  143 krát

ZAPOJENI ESP 12 and ADC.png



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



Založen: Mar 21, 2006
Příspěvky: 33756
Bydliště: Bratislava

PříspěvekZaslal: pá srpen 30 2019, 12:18    Předmět: Citovat

Kolko si za to potom vypytas od nejakeho chudaka zakaznika, co naletel na tvoju uzasnu ponuku?
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á srpen 30 2019, 12:51    Předmět: Citovat

popis co od toho ocekavam jsem poslal P. Misockovi SK
-------
Rozhodné nechci aby se to zde zase stalo vlaknem pro viti vlků
a kecani o ničem nebo o napadání prvotni myšlenky = viz nadpis
----
Konverze do jazyka Arduina
----
abych alespoň trochu uspokojij ŠTOURAVCE
pokud někdo chce mi poslat fungující program ať mi napíše na SZ kolik za to či ono chce a třeba se dohodneme
-----
Jak jsem psal se to C for arduano učim
a není to jen zde možno studovat
...
existuej i hafo tutoriálu
https://randomnerdtutorials.com/projects/
...
Skoda že se tu již nezobrazují hvězdičky hned by bylo vidět kdo klade FAKE

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



Založen: Aug 16, 2017
Příspěvky: 66

PříspěvekZaslal: pá srpen 30 2019, 13:20    Předmět: Citovat

Upřímně řečeno, tvé dotazy jsou velmi... začátečnické. Zvládáš něajký programovací jazyk? Zdá se mi, že nějaký dialekt Basic-u ano. Potom bych ti doporucil zadat si do oblíbeného vyhledávače něco jako „základy jazyka C“ a v prvních pěti odkazech určitě najdeš to, co potřebuješ. V jiném případě vyměň svůj oblíbený vyhledávač za schopnější.

Jakmile zvládneš základy jazyka C, můžeš se proklikat tutoriály, které jsou součástí Arduina a najdeš například tento, který dělá půlu toho, co potřebuješ. Tu druhou půlku ti obslouží sada if-ů: https://www.arduino.cc/en/Tutorial/ifStatementConditional (aha, on je základ prgramování v C součást webových stránek Arduina! No to jsou mi ale věci!).

Pokud Ti toto nestačí jako správné posunutí vhodným směrem, tak se na to, prosím, vykašli. Bude to trápení pro Tebe i ty, kteří se Ti budou snažít pomoci. Tím, že Ti tu někdo postne hotový kód se mnoho nenaučíš, zvláště v situaci, kdy máš problém najít na 10 řádcích kódu chybějící středník.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: pá srpen 30 2019, 13:30    Předmět: Citovat

Já si to neodpustím - situace je patrně taková, že za měsíc se v jeho nabídce služeb objeví i programování v C++, aby byla lákavější. Jen se potřebuje naučit pár příkazů...
_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
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