Sehr geehrte Community
leider bin ich erst neu im Arduino-Bereich und kenne mich von Null bis Basisgrundlagen aus . Allerdings habe ich schon so ein oder anderes in Richtung Programmierung gesehen.
Nun aber zu meinem Vorhaben:
Ich möchte gerne (wie so viele vor mir) eine Zeitmessung bauen (und habe schon fast alles in der Richtung aus dem Netz gelesen). Aufgrund der Umstände Außeneinsatz, Witterungsfest, weite Messstrecke usw. habe ich mich für eine Lösung per Funk entschieden (Xbee-Module vor derren Programmierung, es mir jetzt schon graut ^^).
Aufbau ist folgender:
Eine Startschranke (manuell) sendet Signal an Auswertplatine(mit dazugehöriger Zeitanzeige)
Eine Laserlichtschranke fürs Ziel (sendet ebenfalls an Auswertplatine)
Auswertplatine mit Zeitanzeige
Das ganze wird über Batterien/Akku versorgt
Mein Anliegen jetzt ist:
Könnt ihr mir bitte Tipps für mein Programm geben, bzw. was könnte ich anders machen bei meinem angehängten Zeilen?
im übrigen habe ich fast 1zu1 das Programm von jurs genutzt, ich hoffe dass ist nicht so verwerflich
[code]
#define STARTSCHRANKE 2 // Startschranke
#define ZIELSCHRANKE 3 // Zielschranke
#define AUSLÖSEN // Schranke ausgelöst
#define bool INPUT_PULLUP
#define FREIGABE 4 // Freigabetaster für Strecke
void setup()
{
//lcd.begin(16,2);
//lcd.print("Messbereitschaft");
pinMode(5,OUTPUT); //LED Strecke frei
pinMode(STARTSCHRANKE,bool); //Startschranke
pinMode(ZIELSCHRANKE,bool); //Zielschranke
pinMode(FREIGABE,bool); //Streckenfreigabe
delay(10);
}
void showtime(long zeit, boolean endzeit)
{
static int lastSecond=-1;
char buf[17];
int sekunden=zeit/1000;
if (sekunden==lastSecond && !endzeit) return;
lastSecond=sekunden;
int tausendstel=zeit%1000;
int minuten=sekunden/60;
sekunden=sekunden%60;
if (endzeit)
snprintf(buf,sizeof(buf),"%2d:%02d,%03d",minuten,sekunden,tausendstel);
else
snprintf(buf,sizeof(buf),"%2d:%02d",minuten,sekunden);
lcd.setCursor(6,0);
lcd.print(buf);
}
void loop()
{
if (STARTSCHRANKE & ZIELSCHRANKE & FREIGEBEN == true) //Wenn Startschranke+Zielschranke+Freigabe dann starte Zeitmessungsprogramm
{
digitalWrite (5,HIGH); //LED Strecke frei EIN
while (digitalRead(STARTSCHRANKE)!=AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
unsigned long startZeit=millis(); // Jetzt wurde gestartet
delay(10);
lcd.clear();
lcd.print("Zeit:");
while (digitalRead(ZIELSCHRANKE)!=AUSLÖSEN) showtime(millis()-startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
showtime(millis()-startZeit,true); // Endzeit anzeigen
}
else
{
digitalWrite (5, LOW); //LED Strecke frei AUS
}
}
Die Tage sollten alle Shields kommen, dann kann ich genauer berichten wo es scheiert. Vorerst wäre es aber eine große Hilfe wenn mir jemand was zu meinem Code sagt
h4nswurst:
Ist das Mist was ich da zusammengetextet habe und wenn, was wäre die Alternative? ???
Der "Text" sollte zumindest kompilierbar sein. Fehlermeldungen für den UNO:
Arduino: 1.8.13 (Windows 10), TD: 1.53, Board: "Arduino Uno"
C:\...\Test.ino:3:13: warning: ISO C++11 requires whitespace after the macro name
#define AUSLÖSEN // Schranke ausgelöst
^
Test_Forum:3:13: error: stray '\303' in program
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:41:42: note: in expansion of macro 'AUSL'
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^~~~
Test_Forum:3:14: error: stray '\226' in program
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:41:42: note: in expansion of macro 'AUSL'
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^~~~
Test_Forum:41:46: error: stray '\303' in program
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^
Test_Forum:41:47: error: stray '\226' in program
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^
Test_Forum:3:13: error: stray '\303' in program
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:46:41: note: in expansion of macro 'AUSL'
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^~~~
Test_Forum:3:14: error: stray '\226' in program
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:46:41: note: in expansion of macro 'AUSL'
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^~~~
Test_Forum:46:45: error: stray '\303' in program
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^
Test_Forum:46:46: error: stray '\226' in program
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^
C:\...\Test.ino: In function 'void showtime(long int, boolean)':
Test_Forum:32:3: error: 'lcd' was not declared in this scope
lcd.setCursor(6, 0);
^~~
C:\...\Test.ino: In function 'void loop()':
Test_Forum:38:38: error: 'FREIGEBEN' was not declared in this scope
if (STARTSCHRANKE & ZIELSCHRANKE & FREIGEBEN == true) //Wenn Startschranke+Zielschranke+Freigabe dann starte Zeitmessungsprogramm
^~~~~~~~~
C:\...\Test.ino:38:38: note: suggested alternative: 'FREIGABE'
if (STARTSCHRANKE & ZIELSCHRANKE & FREIGEBEN == true) //Wenn Startschranke+Zielschranke+Freigabe dann starte Zeitmessungsprogramm
^~~~~~~~~
FREIGABE
Test_Forum:3:15: error: 'SEN' was not declared in this scope
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:41:42: note: in expansion of macro 'AUSL'
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^~~~
C:\...\Test.ino:3:15: note: suggested alternative: 'SE'
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:41:42: note: in expansion of macro 'AUSL'
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^~~~
Test_Forum:41:48: error: expected ')' before 'SEN'
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^~~
Test_Forum:41:51: error: expected ';' before ')' token
while (digitalRead(STARTSCHRANKE) != AUSLÖSEN) ; // warten auf Unterbrechung der Startschranke
^
Test_Forum:44:5: error: 'lcd' was not declared in this scope
lcd.clear();
^~~
Test_Forum:3:15: error: 'SEN' was not declared in this scope
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:46:41: note: in expansion of macro 'AUSL'
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^~~~
C:\...\Test.ino:3:15: note: suggested alternative: 'SE'
#define AUSLÖSEN // Schranke ausgelöst
^
C:\...\Test.ino:46:41: note: in expansion of macro 'AUSL'
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^~~~
Test_Forum:46:47: error: expected ')' before 'SEN'
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^~~
Test_Forum:46:50: error: expected ';' before ')' token
while (digitalRead(ZIELSCHRANKE) != AUSLÖSEN) showtime(millis() - startZeit, false); // warten auf Unterbrechung der Stopp-Lichtschranke
^
exit status 1
stray '\303' in program
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Also ja, das ist "Mist", sagt der Kompiler. Und wenn Du Dir keine Mühe gibst, dann erlischt mein Verlangen, Dir zu helfen.
Oder Du bist tatsächlich so weit weg von der Lösung, daß Du Dich mit diesem Projekt gewaltig überhebst und zunächst die Grundlagen der Sprache lernen mußt.
@agmue oha ja well danke , das werd ich mir gleich mal vorknöpfen. Da ich das wo wie beschrieben aufgeschnappt habe, habe ich mich damit nicht weiter beschäftig :facepalm:
"...daß Du Dich mit diesem Projekt gewaltig überhebst... " ja den Eindruck habe ich auch langsam. Ziemlich frustrierend, aber kein Grund für mich das über den Haufen zu schmeißen. @agmue
@HotSystems Funk ist noch nichts drinnen, weil ich nicht weiß ob überhaupt die Zeitnahme so passen würde , aber ich habe von vorherigen Posts etwas rausgelesen mit dem ich mich jetzt erst mal beschäftige.
schon mal Danke an euch alle für eure Hilfe/Meinungen egal welcher Art
h4nswurst:
Ziemlich frustrierend, aber kein Grund für mich das über den Haufen zu schmeißen. @agmue
Wenn es Dir gelingt, den Frust in Motivation zu wandeln, kann es was werden. Es wird nur etwas Zeit benötigen. Oder wie es ein kleines grünes Männchen formulieren würde: "Viel lernen Du mußt, noch ein langer Weg vor Dir liegt!"