springen naar andere regel

Arduino specifieke Software
Berichten: 8
Geregistreerd: 29 Dec 2014, 16:49

springen naar andere regel

Berichtdoor rikblok » 31 Dec 2014, 00:36

Als beginneling krijg ik het springen naar "routine" of naar "void loop" niet voor elkaar.
De foutboodschap is label routine/loop used but not defined
Hieronder een deel van mijn programma met de if else.

void loop()
{
digitalRead(In_Pin);
if(In_Pin = HIGH) goto Routine;
delay; 3000
else goto loop;
}
Routine
{
digitalWrite; (1,HIGH);//high rodefoon
delay 3000;

etc.etc.

Kan iemand me helpen?

Advertisement

Berichten: 35
Geregistreerd: 19 Dec 2014, 00:06
Woonplaats: Heemskerk

Re: springen naar andere regel

Berichtdoor McNes » 31 Dec 2014, 02:31

Ik ben ook nog niet zo bedreven, maar functies zullen zover ik weet eerst gedeclareerd moeten worden en daarna gedefinieerd. Ik heb veel gehaald uit onderstaande link. Daar staat ook beschreven hoe je functies maakt.

http://www.tutorialspoint.com/cprogramming/index.htm

Succes.

Gr., Hans

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: springen naar andere regel

Berichtdoor nicoverduin » 31 Dec 2014, 09:00

rikblok schreef:Als beginneling krijg ik het springen naar "routine" of naar "void loop" niet voor elkaar.
De foutboodschap is label routine/loop used but not defined
Hieronder een deel van mijn programma met de if else.

void loop()
{
digitalRead(In_Pin);
if(In_Pin = HIGH) goto Routine;
delay; 3000
else goto loop;
}
Routine
{
digitalWrite; (1,HIGH);//high rodefoon
delay 3000;

etc.etc.

Kan iemand me helpen?

Ik zou eerst De C taal een beetje leren (tutorials zat)
Het is geen basic...
Verder zou ik eens goed kijken naar de tutorials die bijgeleverd zijn. Het is zinloos om hier commentaar op te leveren. Zo ongeveer elk statement is fout....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: springen naar andere regel

Berichtdoor nicoverduin » 31 Dec 2014, 09:02

McNes schreef:Ik ben ook nog niet zo bedreven, maar functies zullen zover ik weet eerst gedeclareerd moeten worden en daarna gedefinieerd. Ik heb veel gehaald uit onderstaande link. Daar staat ook beschreven hoe je functies maakt.

http://www.tutorialspoint.com/cprogramming/index.htm

Succes.

Gr., Hans

Hoewel het een goede gewoonte is heb je bij de Arduino IDE hier geen last van. Zodra je met de betere IDE's en compilers gaat werken, vliegen inderdaad de fouten om je oren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 29 Dec 2014, 16:49

Re: springen naar andere regel

Berichtdoor rikblok » 31 Dec 2014, 10:31

nicoverduin schreef:
rikblok schreef:Als beginneling krijg ik het springen naar "routine" of naar "void loop" niet voor elkaar.
De foutboodschap is label routine/loop used but not defined
Hieronder een deel van mijn programma met de if else.

void loop()
{
digitalRead(In_Pin);
if(In_Pin = HIGH) goto Routine;
delay; 3000
else goto loop;
}
Routine
{
digitalWrite; (1,HIGH);//high rodefoon
delay 3000;

etc.etc.

Kan iemand me helpen?

Ik zou eerst De C taal een beetje leren (tutorials zat)
Het is geen basic...
Verder zou ik eens goed kijken naar de tutorials die bijgeleverd zijn. Het is zinloos om hier commentaar op te leveren. Zo ongeveer elk statement is fout....


Dat is juist het probleem, ik ken een beetje basic.
U kunt aardig overdrijven en een beginner mag kennelijk geen vragen stellen.
Ik heb al een paar tutorials doorgenomen, maar vindt geen uitleg over het definieren van zelf gemaakte functies

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: springen naar andere regel

Berichtdoor shooter » 31 Dec 2014, 11:20

ach ja zo is nico,

ja is duidelijk dat je basic hebt gezien.

doe onder help maar eens op reference klikken, dan gaat er een wereld open.
ook een aanrader is een cheatsheet. (gebruik ik ook nog steeds hoor.
als je iets opstuurt zet het dan tussen code want dat maakt het voor on goed leesbaar.
als je begint dan kom je eerst een setup() tegen
en dan een loop()
in de setup zet je de uitgangen in de goede modus, dat er inderdaad wat uit komt, een serial poort met Serial.begin(9600) is er zo een.
dan komt het programma in de loop() terecht waar het blijft lopen tot de voeding eraf gehaald wordt.
in de loop kun je andere functions aanroepen door functienaam(variabelen)
goto is net als in basic een noodding en moet echt vermeden worden. kijk naar break
een aanroep is een gosub zoals je ook wel geleerd hebt.

een functie moet natuurlijk ook beschreven staan en dus
void functienaam(int variabele){
dan alle berekeningen en afsluiten met een }

en ach nico heeft wel gelijk hoor, met kijk eerst eens in de boeken, maar tegenwoordig is een antwoord krijgen via internet veel sneller, en handiger.

delay is trouwens ook een functie (maar die zit gewoon in de firmware) dus aanroep met delay(3000);
de volgende keer je programma maken zonder delay maar met een timer (millis()) is de volgende leeropdracht.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: springen naar andere regel

Berichtdoor nicoverduin » 31 Dec 2014, 11:44

shooter schreef:de volgende keer je programma maken zonder delay maar met een timer (millis()) is de volgende leeropdracht.
Ik denk dat je beter eerst kan leren staan voordat je probeert te lopen :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 29 Dec 2014, 16:49

Re: springen naar andere regel

Berichtdoor rikblok » 31 Dec 2014, 12:58

shooter schreef:ach ja zo is nico,

ja is duidelijk dat je basic hebt gezien.

doe onder help maar eens op reference klikken, dan gaat er een wereld open.
ook een aanrader is een cheatsheet. (gebruik ik ook nog steeds hoor.
als je iets opstuurt zet het dan tussen code want dat maakt het voor on goed leesbaar.
als je begint dan kom je eerst een setup() tegen
en dan een loop()
in de setup zet je de uitgangen in de goede modus, dat er inderdaad wat uit komt, een serial poort met Serial.begin(9600) is er zo een.
dan komt het programma in de loop() terecht waar het blijft lopen tot de voeding eraf gehaald wordt.
in de loop kun je andere functions aanroepen door functienaam(variabelen)
goto is net als in basic een noodding en moet echt vermeden worden. kijk naar break
een aanroep is een gosub zoals je ook wel geleerd hebt.

een functie moet natuurlijk ook beschreven staan en dus
void functienaam(int variabele){
dan alle berekeningen en afsluiten met een }

en ach nico heeft wel gelijk hoor, met kijk eerst eens in de boeken, maar tegenwoordig is een antwoord krijgen via internet veel sneller, en handiger.

delay is trouwens ook een functie (maar die zit gewoon in de firmware) dus aanroep met delay(3000);
de volgende keer je programma maken zonder delay maar met een timer (millis()) is de volgende leeropdracht.


Bedankt dit was erg hulpzaam, ik ga aan de slag.

Berichten: 8
Geregistreerd: 29 Dec 2014, 16:49

Re: springen naar andere regel

Berichtdoor rikblok » 31 Dec 2014, 15:53

rikblok schreef:
shooter schreef:ach ja zo is nico,

ja is duidelijk dat je basic hebt gezien.

doe onder help maar eens op reference klikken, dan gaat er een wereld open.
ook een aanrader is een cheatsheet. (gebruik ik ook nog steeds hoor.
als je iets opstuurt zet het dan tussen code want dat maakt het voor on goed leesbaar.
als je begint dan kom je eerst een setup() tegen
en dan een loop()
in de setup zet je de uitgangen in de goede modus, dat er inderdaad wat uit komt, een serial poort met Serial.begin(9600) is er zo een.
dan komt het programma in de loop() terecht waar het blijft lopen tot de voeding eraf gehaald wordt.
in de loop kun je andere functions aanroepen door functienaam(variabelen)
goto is net als in basic een noodding en moet echt vermeden worden. kijk naar break
een aanroep is een gosub zoals je ook wel geleerd hebt.

een functie moet natuurlijk ook beschreven staan en dus
void functienaam(int variabele){
dan alle berekeningen en afsluiten met een }

en ach nico heeft wel gelijk hoor, met kijk eerst eens in de boeken, maar tegenwoordig is een antwoord krijgen via internet veel sneller, en handiger.

delay is trouwens ook een functie (maar die zit gewoon in de firmware) dus aanroep met delay(3000);
de volgende keer je programma maken zonder delay maar met een timer (millis()) is de volgende leeropdracht.


Bedankt dit was erg hulpzaam, ik ga aan de slag.


Het is gelukt! de file is gecompileerd.
Er zit geen goto meer in, maar mijn vraag is nu, wat doet het programma na de laatste regel. Hij zou moeten terug gaan naar het begin of naar void loop.

code:#include <EEPROM.h>
int Rode_Pin = 1;
int Nul_Pin = 2;
int Groen_Pin= 3;
int OK_Pin = 4;
int In_Pin = 6;
void setup()
{
pinMode(Rode_Pin,OUTPUT); // rode telefoon
pinMode(Nul_Pin,OUTPUT);//nul
pinMode(Groen_Pin,OUTPUT);//groen
pinMode(OK_Pin,OUTPUT);//ok
pinMode(In_Pin,INPUT);//input
}
void loop()
{
#define Routine
digitalRead(In_Pin);
if(In_Pin = HIGH)
digitalWrite; (1,HIGH);//high rodefoon
delay (3000);
digitalWrite; (1,LOW);//low rodefoon
delay (1000);
digitalWrite; (2,HIGH);// nul high
delay (1000);
digitalWrite; (2,LOW);//nul low
delay (1000);
digitalWrite; (2,HIGH);//nul high
delay (10000);
digitalWrite; (2,LOW);//nul low
delay (1000);
digitalWrite; (2,HIGH);//nul high
delay (1000);
digitalWrite; (2,LOW);//nul low
delay (1000);
digitalWrite; (2,HIGH);//nul high
delay (1000);
digitalWrite; (2,LOW);//nul low
delay (1000);
digitalWrite; (3,HIGH);//groenefoon high
delay (1000);
digitalWrite; (3,LOW);// groene telefoon low
delay (3000);
digitalWrite; (1,HIGH);//ophangen
delay (1000);
digitalWrite; (1,LOW);
}

Berichten: 35
Geregistreerd: 19 Dec 2014, 00:06
Woonplaats: Heemskerk

Re: springen naar andere regel

Berichtdoor McNes » 31 Dec 2014, 15:58

Geen foutmelding, maar werken gaat het vast niet. Normaal geef je na de if via {} aan welke set instructies uitgevoerd moeten worden indien de if-voorwaarde juist is. Deze is overigens bij jou altijd juist, want je definieert de waarde op HIGH. Als vergelijking moet je == gebruiken.

Na het afronden van alles tussen de {} van de loop start de loop opnieuw. Nog wat werk te gaan dus.

Succes.

Gr., Hans

p.s.,

#define Routine // Is volgens mij overbodig
digitalRead(In_Pin); // Dit gaat nu slechts één keer goed. Door het statement hieronder wordt In_Pin gelijk aan 1.
if(In_Pin = HIGH) // In_Pin was 6, zie je declaraties en wordt hier nu 1, zie if statement. Gaat niet goed dus ( = vs. ==)

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: odiyojaqul, oramegitatu en 16 gasten