több void loop!

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
dpsslaser
Bitmanipulátor
Hozzászólások: 145
Csatlakozott: 2012. július 21. szombat, 6:00

több void loop!

Hozzászólás Szerző: dpsslaser »

vanak fö programok hogyan lehet külön szakaszba irni void loop alá?

fö programokat nem akarom össze keverni hanem külön meghivási szakaszba beirni void loop alá.....

void loop(1)
program 1

void loop(2)
program2

vagy hogyis????
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: több void loop!

Hozzászólás Szerző: Robert »

60 napos tanfolyam - még mindig: http://www.tavir.hu/60nap


Vázlat:

Kód: Egész kijelölése

setup(){
}

loop () {
call()
}

void call(){
}
Avatar
dpsslaser
Bitmanipulátor
Hozzászólások: 145
Csatlakozott: 2012. július 21. szombat, 6:00

Re: több void loop!

Hozzászólás Szerző: dpsslaser »

Robert írta:60 napos tanfolyam - még mindig: http://www.tavir.hu/60nap


Vázlat:

Kód: Egész kijelölése

setup(){
}

loop () {
call()
}

void call(){
}
köszi !

Robert te sem leszer adó szakértő........

Én sem leszek profi programozó............

Lehet tavir sem kell már hogy létezen ha megfelelö a tanfolyamod! :) :) :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: több void loop!

Hozzászólás Szerző: Robert »

Ha a TavIR megy a levesbe, akkor megy a 60 napos tanfolyam is :)
Adószakértő nem fér bele az időmbe... A napi 24 óra + éjszaka mellett arra már nincs időm....
Avatar
dpsslaser
Bitmanipulátor
Hozzászólások: 145
Csatlakozott: 2012. július 21. szombat, 6:00

Re: több void loop!

Hozzászólás Szerző: dpsslaser »

Robert írta:Ha a TavIR megy a levesbe, akkor megy a 60 napos tanfolyam is :)
Adószakértő nem fér bele az időmbe... A napi 24 óra + éjszaka mellett arra már nincs időm....
na látod.... :)
igy Adószakértőként nehezeben látom át a c# nyelvet is nem megy ripsz ropsz ez sem .....
Mindnekinek van helye a társadalomba és szerepe ezt szerintem tartsuk is tiszteletbe....
Érted a célzást :?:
Avatar
dpsslaser
Bitmanipulátor
Hozzászólások: 145
Csatlakozott: 2012. július 21. szombat, 6:00

Re: több void loop!

Hozzászólás Szerző: dpsslaser »

Robert Tanárur!

hogy lehet egy ilyet IDE alat definiálni ccp le?

PadPass_Init();

nem boldogul a forditó!

-----------------------------------------------------------------------

DoorLOCK4_keypad.ino: In function 'void setup()':
DoorLOCK4_keypad:203: error: 'PadPass_Init' was not declared in this scope
DoorLOCK4_keypad.ino: In function 'void loop()':
DoorLOCK4_keypad:209: error: 'PadPass_Init' was not declared in this scope
DoorLOCK4_keypad.ino: At global scope:
DoorLOCK4_keypad:779: error: expected unqualified-id before '{' token
---------------------------------------------------------------------
setup(){
}
PadPass_Init();


loop () {
PadPass_Init();

}

void PadPass_Init();
(){
}
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: több void loop!

Hozzászólás Szerző: s.dvid »

Hahó! Az lenne a kérdésem, hogy ezt a két programot nem lehetne-e egybe nyomni, hogy ne kelljen 2 külön boardot készíteni/dupla annyi pénzt költeni :D

Kód: Egész kijelölése

int piros = 8;
int kek = 7;
int piros2 = 6;
int zold2 = 5;


void setup(){
  pinMode(piros, OUTPUT);
  pinMode(kek, OUTPUT);
  pinMode(piros2, OUTPUT);
  pinMode(zold2, OUTPUT);
}

void loop(){
  pislogas();
}

void pislogas(){
  int ranpiros = random(50, 5000);
  int rankek = random(300, 5000);
  digitalWrite(kek, LOW);
  digitalWrite(piros, HIGH);
  digitalWrite(zold2, HIGH);
  digitalWrite(piros2, LOW);
  delay(ranpiros);
  digitalWrite(kek, HIGH);
  digitalWrite(piros, LOW);
  analogWrite(zold2, 50);
  digitalWrite(piros2, HIGH);
  delay(rankek);
}
és

Kód: Egész kijelölése

#include "LedControl.h"

LedControl lc=LedControl(12,11,10,1);    //D12, D11, D10 adatvonalak, 1 MAX IC

void setup() {
  //   The MAX72XX felebresztese power-saving modbol
  lc.shutdown(0,false);
  //   Kijelzo intenzitas ~kozepes
  lc.setIntensity(0,8);
  // clear displ.
  lc.clearDisplay(0);
  //ekzdo kepernyo
  startup();
  delay(500);
}

void loop(){
  //foprogram
  ldp();
}

//startup minta
void startup(){
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00011000);
lc.setColumn(0,3,B00011000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000000);
lc.setColumn(0,3,B00000000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00011000);
lc.setColumn(0,3,B00011000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000000);
lc.setColumn(0,3,B00000000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00011000);
lc.setColumn(0,3,B00011000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000000);
lc.setColumn(0,3,B00000000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00011000);
lc.setColumn(0,3,B00011000);
lc.setColumn(0,4,B00000000);
delay(500);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B10000000);
lc.setColumn(0,3,B10000000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11000000);
lc.setColumn(0,3,B11000000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11100000);
lc.setColumn(0,3,B11100000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11110000);
lc.setColumn(0,3,B11110000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11111000);
lc.setColumn(0,3,B11111000);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11111100);
lc.setColumn(0,3,B11111100);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11111110);
lc.setColumn(0,3,B11111110);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B11111111);
lc.setColumn(0,3,B11111111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B01111111);
lc.setColumn(0,3,B01111111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00111111);
lc.setColumn(0,3,B00111111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00011111);
lc.setColumn(0,3,B00011111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00001111);
lc.setColumn(0,3,B00001111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000111);
lc.setColumn(0,3,B00000111);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000011);
lc.setColumn(0,3,B00000011);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000001);
lc.setColumn(0,3,B00000001);
lc.setColumn(0,4,B00000000);
delay(50);
lc.setColumn(0,1,B00000000);
lc.setColumn(0,2,B00000000);
lc.setColumn(0,3,B00000000);
lc.setColumn(0,4,B00000000);
delay(50);
}

//fo minta
void ldp(){
lc.setColumn(0,1,B01000110);
lc.setColumn(0,2,B00011010);
lc.setColumn(0,3,B01100101);
lc.setColumn(0,4,B10101110);
delay(250);

lc.setColumn(0,1,B00110010);
lc.setColumn(0,2,B01101111);
lc.setColumn(0,3,B10110010);
lc.setColumn(0,4,B10010100);
delay(250);

lc.setColumn(0,1,B11011001);
lc.setColumn(0,2,B01010100);
lc.setColumn(0,3,B00100001);
lc.setColumn(0,4,B01011101);
delay(250);

lc.setColumn(0,1,B10101100);
lc.setColumn(0,2,B11010011);
lc.setColumn(0,3,B01000101);
lc.setColumn(0,4,B01011010);
delay(250);

lc.setColumn(0,1,B10101010);
lc.setColumn(0,2,B01010110);
lc.setColumn(0,3,B00110010);
lc.setColumn(0,4,B01110101);
delay(250);

lc.setColumn(0,1,B10011010);
lc.setColumn(0,2,B01010100);
lc.setColumn(0,3,B01001010);
lc.setColumn(0,4,B01110001);
delay(250);

lc.setColumn(0,1,B10001110);
lc.setColumn(0,2,B01100101);
lc.setColumn(0,3,B00111011);
lc.setColumn(0,4,B01010001);
delay(250);

}
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: több void loop!

Hozzászólás Szerző: SzLacus »

A nélkül, hogy beleásnám magam abba, hogy melyik részlet mit is tesz, persze hogy lehet. Az egyikből copy, a másikba paste. Ahogyan a snapszerben szinre szint, úgy itt a setupból a setupba, a loopból a loopba. Azonos lábakra ne legyenek definiálva, azonos változó nevek ne legyenek, kb ennyi. A működés pedig először lefut a setup mindkét része, (ami mostmár ugye egy), aztán bekanyarodik a loopba, és először az egyik részt, aztán a másik részt végrehajtja, aztán kezdi elölről.
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: több void loop!

Hozzászólás Szerző: s.dvid »

A két kód a Star Wars filmből jó ismert R2D2 robot egy része lenne: https://www.youtube.com/watch?v=Ps0zzj-X-1M
A hosszabb program hivatott a videó elején látható 2 kis kocka (logika) villogásáért, míg a rövidebb a mellette lévő a kis kerek PSI.
A logikát egy max7219-es vezérli. Itt a setup() részben található startup() függvény nem zavar senkit. A loop() részben lévő ldp() függvény viszont állandó frissítési rátával fut: delay(50).
Itt jön a kavarodás, mert a PSI 50 és 3000 között generál egy véletlen számot ellentétben a másik program ütemével. Ez pusztán csak a kiszámíthatatlanság miatt lett így tervezve. Ezt a két programot szeretném úgy egybe nyomni, hogy a kettő egymástól függetlenül, mégis egyszerre fusson.
Átgondolva 2 megoldás jutott eszembe:
- 2 független ATmega88-as (mert ebből egy rakat van itthon)
- max7219-ből daisy chaint kialakítása
a 2+1 megoldás pedig a több loop()
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: több void loop!

Hozzászólás Szerző: kapu48 »

A két LOOPot egymás alá Copi-Paste!

Kiegészíted mind kettőt egy számlálóval!

Mikor az elérte a neked kívánatos határt átugrasz a másik Loop-ba, és vissza verda.
Így egymás után végrehajtódik mindkettő.

Ha ennél többet akarsz, akkor jobb, ha az egész programot újra írod
8)
Válasz küldése