Verstehe Fehlermeldung Nicht : val_g1 does not name a type

Um die Geber für eine Moba-Schrankenanlage zu testen - es sind erstmal einfache Taster - habe ich folgenden Sketch geschrieben, der sich einwandfrei kompilieren
und ausführen läßt :face_with_hand_over_mouth:
`int led_red = 2;
int led_yellow = 3;
int led_green = 4;

int geber1 = 5; //-Taster
int geber2 = 6; //-Taster
int counter = 0;

int val_g1 = 0;
int val_g2 = 0;
// the setup function runs once when you press reset or power the board
void setup()
{
Serial.begin(9600);
// initialize digital pin LED_BUILTIN as an output.
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);

pinMode(geber1,INPUT_PULLUP);
pinMode(geber2,INPUT_PULLUP);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(led_yellow, HIGH);
digitalWrite(led_red, HIGH);

val_g1 = digitalRead(geber1);
Serial.println("G1"+val_g1);
val_g2 = digitalRead(geber2);
Serial.println("G2"+val_g2);

if(val_g1 == 0)
{
digitalWrite(led_green, HIGH);
digitalWrite(led_yellow, LOW);
}
else
digitalWrite(led_green, HIGH);

if(val_g2 == 1)
digitalWrite(led_red, HIGH);

if(counter == 0)
{
digitalWrite(led_green, HIGH);
digitalWrite(led_red, LOW);
delay(100);
}
if(counter == 1)
{
digitalWrite(led_red, HIGH);
digitalWrite(led_green, LOW);
delay(100);
}
delay(50);

}`

läßt sich ohne Fehler kompilieren und ausführen

dieser Test mit Servo und Gebern scheitert schon beim Kompilieren:
`#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int led_red = 6;
int led_yellow = 7;
int led_green = 8;
int geber1 = 5; //-Taster
int geber2 = 6; //-Taster
int val_g1 = 0; //-Wert in geber1
int val_g2 = 0; //-Wert in geber2

void setup() {
Serial.begin(9600);
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(geber1,INPUT_PULLUP);
pinMode(geber2,INPUT_PULLUP);

myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
}
val_g1 = digitalRead(geber1);
val_g2 = digitalRead(geber2);
if(val_g1 == 0)
schranke_schliessen();
if(val_g2 == 0)
schranke_oeffnen();
}

void schranke_schliessen()
{
digitalWrite(led_red, HIGH);
for (int pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
digitalWrite(led_red, LOW);
}
void schranke_oeffnen()
{
digitalWrite(led_green, HIGH);
for (int pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
digitalWrite(led_green, LOW);
}

}
`
ohne "Geber"-Teile war alles ok, Servo tut was er soll..

Fehlermeldung lautet :
val_g1 does not name a type..val_g2 does not name a type..

was ist jetzt das Problem mit den Variablen val_g1 und val_g2 ?

Hallo,
am Besten du formatierst den Sketch mit CTRL T um die Anordundung der Akkoladen zu prüfen.

there's a closing brace, "}", just before making the assignment outside a function.

jou..hab mittlerweile auch rausbekommen,
daß die Klammerei das Problem ist..

werde aber für größere Sketche auch nen anderen Texteditor nehmen
mit etwas mehr Komfort (Notepad++ o.ä.) und dann in die arduino-ide,
z.B. einblendbare Zeilennummern, Klammer-Pendants suchen etc,
wie ich das von NetBeans kenne, und dann in die arduino-IDE einkopieren.

einstweilen vielen Dank !

Hallo
Der/die/das IDE bietet viele Voreinstellungen:

moin,
dieses Fenster gibt es bei der von mir (Greehorn) gefundenen arduino-ide Nicht,
auch nicht die Menuoption "Einstellungen" bzw "Settings" :unamused:

Moin,
schaue hier einmal nach.

grafik

moin,
vielen Dank,
habs gefunden, wo ich es allerdings nicht erwartet hatte..

  • habs eher unter Werkzeuge vermutet :thinking:

ok, Ctrl-T bzw Strg-T ist schonmal gut, und eine versehentlich aus anderem Code
miteinkopierte Klammer kann man so eher finden :grinning:

wünsche noch schönes sonniges WE

Dann mal noch als Hilfe:
http://astyle.sourceforge.net/astyle.html

Die Einstellungen kannst Du auch - bis auf einige wenige, Arduino benutzt eine sehr alte Version - übernehmen.
Dazu musst Du die Formatter.conf bearbeiten.
Bei den linuxen ist diese unter ~/arduino[version]/lib/ zu finden

Die IDE ist nach der Änderung neu zu starten - die Einstellungen werden nur beim Start einmal eingelesen.
Dann immer schön STRG-T drücken....

Auf der Maschine hier nutze ich diese:

# eigene Einstellungen
--style=allman
--indent-modifiers
--indent-switches
--indent-preproc-block
--indent-col1-comments
--min-conditional-indent=3
--pad-oper
--pad-header
--delete-empty-lines
--align-pointer=name
--align-reference=name
--keep-one-line-statements
--convert-tabs
--remove-comment-prefix
# Erst in spaeterer astyle-Version verfügbar
#--pad-return-type
#--pad-comma
#--break-one-line-headers
#--add-braces
1 Like