Pages: [1]   Go Down
Author Topic: wie kan mij helpen!!!  (Read 1027 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik heb meerdere void`s gemaakt in mijn void loop.
Nu wil ik graag van: void Display_Alarm_uit() naar StartScherm_Alarm_aan() gaan.
Ik wil dus niet dat hij mijn Void loop door loopt.

Zie voor beeld

Code:
void Display_Alarm_uit()
{
  digitalWrite(led1, HIGH);
   // ClearScreen
  lcd.setCursor(0,0);
  lcd.print("                    ");
  lcd.setCursor(0,1);
  lcd.print("                    ");
  lcd.setCursor(0,2);
  lcd.print("                    ");
  lcd.setCursor(0,3);
  lcd.print("                    ");
  lcd.setCursor(0,0);
  
  // Zet logo er in (pincode juist Alarm is uit)
  lcd.setCursor(0,0);
  lcd.print("********************");
  lcd.setCursor(0,1);
  lcd.print("*  PINCODE JUIST   *");
  lcd.setCursor(0,2);
  lcd.print("*   Alarm is uit   *");
  lcd.setCursor(0,3);
  lcd.print("********************");
  
  delay(5000);
  digitalWrite(led1, LOW);
  
  StartScherm_Alarm_aan(); //naar deze void moet hij heen gaan.
UPDATED:moderator added code tags
  
« Last Edit: June 03, 2014, 09:33:29 am by Jantje » Logged

Heemskerk, Netherlands
Offline Offline
Sr. Member
****
Karma: 10
Posts: 401
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Eerst maar ff wat erminolgie duidelijk maken:
void = leeg. waar jij het over hebt (zodat ook anderen je snappen) heet een functie.

dus als je schrijft:
Code:
void functie() {
}
Dan betekent dit dat je een functie hebt die niets teruggeeft.

Als er bijvoorbeeld staat:
Code:
int functie(){
}
Dan betekent dat dat je een functie hebt die een int teruggeeft maar geen parameters heeft

als er staat
Code:
int optellen(int x, int y) {
  return x + y;
}
Dan heb je een functie die x en y optelt en het resultaat teruggeeft als int.

Dan voor jouw programma:
Elke arduino sketch heeft ALTIJD een setup() en een loop() functie nodig. Dat heeft te maken met bepaalde zaken die buiten jou omgaan gebeuren en zijn in in principe niet beïnvloedbaar.
Binnen een sketch heb je dus altijd de loop die oneindig doorloopt. Je moet dus een structuur opzetten van functies die vanuit de loop() worden aangeroepen. Wel kun je rustig vanuit een functie weer een andere functie aanroepen.
Maar als startscherm je hoofdscherm is, dan zou ik daarmee beginnen. Als display_alarm_uit() een eenmailige functie zou zijn, kun je overwegen om deze vanuit de setup() aan te roepen. Echter gezien het soort vraagstuk zou ik het nog niet te ingewikkeld maken voor jezelf. Daarvoor is meer ervaring nodig en op basis van jouw vraag ontbreekt die nogal enigzins.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zoals ik het lees zou een switch case ook een oplossing kunnen zijn, door een variabele aan te passen kun je dan schakkelen tussen verschillende delen van je code.

Groet,

Tom
Logged

Heemskerk, Netherlands
Offline Offline
Sr. Member
****
Karma: 10
Posts: 401
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Klopt, maar ik ben bang dat gezien het soort vragen dat hij stelt dat hij er beter aan doet om eerst de basis te leren.....
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dan zou je inderdaad met een switch case, of eenvoudiger met een if else, kunnen switchen tussen delen van je code, door een variable aan te passen kun je programma dan door verschillende delen van je code leiden.

bijvoorbeeld

Code:
int variable = 1;

void setup() {

}

void loop() {
  if (variable == 1)
  {
    //doe functie 1
    if (voorwaarde == true)
    {
      variable = 2;
    }
  }
  else if (variable == 2)
  {
    // doe functie2
    if (voorwaarde2 == true)
    {
      variable = 1; // 1 als je terug wil naar vorige functie, 3 als je nog iets anders wil doen
    }
  }
}

Groet,

Tom
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@tom
Wat je hier maakt is een state machine. De meeste nieuwkomers beginnen al te beven bij de naam alleen, maar eigenlijk is er niks aan  smiley-cool.
De code wordt wel een pak verstaanbaarder met goede variabele namen. Gelieve die dan in het vervolg ook te gebruiken.  smiley-razz
ik je code aangepast naar een state machine met goede variabelenamen en dat geeft.

Code:
const int startStatus=1;  //mag ook met #define startStatus 1
const int GaDoorStatus=2;  //mag ook met #define GaDoorStatus 2
//Of nog beter met een enum (mar niet voor voorbeeld code)

int HuidigeStatus = startStatus;

void setup() {

}

void loop() {
  if (HuidigeStatus == startStatus)  //dit kan wel beter met een switch maar als voorbeeld denk ik dat een "als dan boom"
                                                                    // beter verstaanbaar is voor beginnelingen
  {
    // begin van doe wat je moet doen in de startStatus

   // einde van doe wat je moet doen in de startStatus
    if (voorwaardeOmNaarGaDoorStatusTeGaan == true)
    {
      HuidigeStatus = GaDoorStatus;  // verander de status naar GaDoorStatus
    }
  }
  else if (HuidigeStatus == GaDoorStatus)
  {
    // begin van doe wat je moet doen in de GaDoorStatus

   // einde van doe wat je moet doen in de GaDoorStatus
    if (voorwaardeOmNaarStartStatusTeGaan == true)
    {
      HuidigeStatus = startStatus; // verander de status naar startStatus
    }
  }
}
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Heren, bedankt voor de tips en voorbeelden.  smiley
ik ga er vanavond mee aan de slag en laat het wel even weten of het gelukt is.

Groet,

Marcel
Logged

Pages: [1]   Go Up
Jump to: