Stránka 1 z 1
					
				Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 07:15
				od Ivan
				Dobrý deň,prosím o radu s doleuvedeným programom.Je to program na dlhodobé sledovanie či je na PIN7 HIGH alebo LOW.Teraz je tam pri odlaďovaní programu 1 sek.Problém je v tom,že po ukončení programu keď pripojím k UNO počítač a kliknem na sérivý monitor,tak sa program spustí od začiatku a všetky namerané hodnoty sú preč.Teraz pri skúšaní programu keď je Uno trvale pripojené k počítaču a ešte pred spustením programu kliknem na sérivý monitor,tak to vypíše opakovane namerané hodnoty.Ak na monitor kliknem po ukončení programu,tak sa program spustí od začiatku.
Ďakujem predom za radu Ivan
    int dlv=0;
       int dlz=0;
       int inPin=7;
       int ledZ=5;
       int val;
       int ledR=6;
       int zap[4];
       int vyp[4];
       
       void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(ledR,OUTPUT);
  pinMode(ledZ,OUTPUT);
  pinMode(inPin,INPUT);
  }
void loop() {
  // put your main code here, to run repeatedly:
  for(int i=0;i<4;i++){
  
  val=digitalRead(inPin);
  while(val==LOW){
    digitalWrite(ledZ,HIGH);
    delay(1000);
    dlv=dlv+1;
    val=digitalRead(inPin);
    digitalWrite(ledZ,LOW);
    delay(1000);
  }
  vyp=dlv;
  dlv=0;
  val=digitalRead(inPin);
  while(val==HIGH){
    digitalWrite(ledR,HIGH);
    delay(1000);
    dlz=dlz+1;
    val=digitalRead(inPin);
    digitalWrite(ledR,LOW);
    delay(1000);
  }
  zap=dlz;
  dlz=0;
}
   delay(5000);
   A:
   digitalWrite(ledR,HIGH);
   delay(3000);
   digitalWrite(ledR,LOW);
   for(int i=0;i<4;i++){
    Serial.print("vyp ");
    Serial.print(i);
    Serial.print(" ");
    Serial.print(vyp);
    Serial.println(" min");
    Serial.print("zap ");
    Serial.print(i);
    Serial.print(" ");
    Serial.print(zap);
    Serial.println(" min");
       }
   delay(10000);
   goto A;
   
}
			 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 07:35
				od AstroMiK
				
			 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 08:45
				od pavel1tu
				1) vše v LOOP probíhá cyklicky, tedy polud to doběhne na poslední řádek LOOP, skočí to na první
2) já žiji v domění i to takto vyučuji, že příkaz GOTO je příkaz jazyku BASIC (a jiných) a v C/C+ není podporován, tudíž ani u Arduina
Pokud PODROBNĚ popíšeš co od toho potřebuješ trochu "programátorsky", mohu zaměstnat drobotinu na kroužku, ty mladší  (kolem 8 let) se tam nudí, jsem už měsíc po služebkách a nikdo se jim nevěnuje. Každý má doma UNO kufřík a toto nasimulují a naprogramují společně raz dva (snad).
PS: AHA já to blbě pochopil, program funguje, jen nechceš aby se Arduini resetovalo při připojení USB - to je popsáno v odkazu výše od AstroMika 
 
PS2: pokud to má měřit čas jak dlouho bylo co zapnuté na základě 1s Delay v cyklu - asi to bude pěkně kecat.
 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 11:27
				od ondraN
				Doporučuji vyhnout se v programu tomu goto a namísto toho použít třeba
nebo
Pro měření času je vhodnější použít třeba millis(), ale je to s chybou i 10ms za 1s, záleží kus od kusu. Pro přesné měření je nutné použít externí  RTC.
 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 15:20
				od gilhad
				pavel1tu píše: ↑22 zář 2020, 08:45
2) já žiji v domění i to takto vyučuji, že příkaz GOTO je příkaz jazyku BASIC (a jiných) a v C/C+ není podporován, tudíž ani u Arduina
 
Domnění je jedna věc, realita je jiná 
 C
C
Pokud vím, tak příkaz 
goto je v C od samého počátku
 ( 
The C Programming Language First Edition by 
Dennis Ritchie, Brian Kernighan Publication date 
1978  (
K&R) ho například zmiňuje jako dávno existující součást C ) 
a dodnes je součástí ISO standardu 
http://www.open-std.org/JTC1/SC22/WG14/www/standards http://www.open-std.org/JTC1/SC22/WG14/ ... /n1570.pdf (stránka 151, 
6.8.6 Jump statements )
C++
Stejně tak ho obsahuje C++
 
http://www.open-std.org/jtc1/sc22/wg21/ ... ards#14882 http://www.open-std.org/jtc1/sc22/wg21/ ... /n4659.pdf stránka 150 
9.6 Jump statements
C#
Stejně tak ho obsahuje C#
 ( od začátku
 
http://www.ecma-international.org/publi ... 202002.pdf stránka 192 
15.9.3 The goto statement
až dodnes - komentáře k C# 8.0 
 
https://docs.microsoft.com/en-us/dotnet ... ranch=live stránka asi 135 
"pattern-based using" and "using declarations" 9/22/2020 zmiňuje že nejsou omezení ohledně 
goto a uvádí příklad jeho použití 
)
Linux kernel
Naposledy jsem (náhodně) na goto narazil včera, když jsem hledal nějaké detaily ohledně načítání firmware v kernelu, takže se zjevně používá i v praxi
Kód: Vybrat vše
$ grep next_record /home/src/linux-4.4.21-gentoo/firmware/ihex2fw.c
next_record:
		goto next_record;
		goto next_record;
		goto next_record;
Co se konkrétně Arduina týče, tak je obsaženo v přímo v jazykové referenci 
https://www.arduino.cc/reference/en/lan ... ture/goto/
podpora vs. doporučení
Takže zjevně je a vždy bylo 
podporováno ve všech zmíněných jazycích.
Co se týče jeho 
doporučování, osobní preference se liší, ale jsou místa, kde se vyloženě hodí, viz třeba ten příklad u Arduina (který mimochodem uvádí i Donald Knuth například zde 
https://www.cs.sjsu.edu/~mak/CS185C/Knu ... ngGoTo.pdf )
---
Pascal
BTW: D.W.Dijkstra nebyl velkým přítelem goto, ale do jazyka PASCAL (explicitně určeného pro výuku programování) ho také zahrnul a je v něm dodnes
 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 16:08
				od kiRRow
				Některé desky mají přeškrtávací pole, na vyřazení automatického resetu ( při nahrávání kódu je pak nutno čip resetovat ručně, nebo to zase spojit ). Já bych asi přímo připojil převodník USB <-> TTL RS232 na patřičné piny arduina.
			 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 22 zář 2020, 16:22
				od Ivan
				Ďakujem pekne za rady.Premohol som svoju lenivosť a pripojil som k Uno LCD displej a je po probléme.
Ivan
			 
			
					
				Re: Nežiadúci návrat na začiatok programu
				Napsal: 23 zář 2020, 22:30
				od pavel1tu
				Paráda,
já už přišel na to "GOTO", omlouvám se za mystifikaci, když jsem používal sem tam GOTO, nefungoval mi debug mod, tedy ne u Arduin tam ho nepoužívám - tak jsem ho prostě zavrhnul. Asi nějaká chyba.
tak sorry