Go Down

Topic: Anfänger, neu im Forum  (Read 5023 times) previous topic - next topic

Johannes81

Ist schon realisierbar. Läuft grade hier im Forum. Schau mal nach Motorradtacho. Aber du hast schon recht. Einfach wird es nicht werden. Versuche erst mal mit den einfachen Basics klar zu kommen und dann arbeite dich Stück für Stück vor. Nicht nur hier im Forum wird es so gemacht, dass das Projekt in viele kleine Einzelprojekte zerlegt wird und wenn jedes dieser Einzelprojekte läuft werden dies dann nach und nach zu einem großen und ganzen zusammengebaut


HotSystems

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Alfaone79

Das Instrumenten Projekt ist genau  das gleiche wie ich es vor habe. Nur mit einem anderen Logo
Und in einem Rundinstrument mit einem OLED Display

Alfaone79

#19
Aug 03, 2018, 05:53 pm Last Edit: Aug 03, 2018, 06:03 pm by Alfaone79
Um noch einmal auf meine Frage zu den Übungen zurück zu kommen....
warum kann mein Sketch nicht fuktionieren?
Nur zum Verständniss

Code: [Select]
const unsigned int LED_PIN = 13;
const unsigned int BAUD_RATE = 9600;
const unsigned int PAUSE = 500;
                                                                                                                                                                                                     
void setup() {
  pinMode (LED_PIN, OUTPUT);
  Serial.begin (BAUD_RATE);

}

void loop() {
  if (Serial.available() > 0) {
    int command = Serial.read();
    if (command == '1') {
      digitalWrite (LED_PIN, HIGH);
      Serial.println("LED on");
   
    } else if (command == '2') {
      digitalWrite (LED_PIN, LOW);
      Serial.println("LED off");

    } else if (command == '3') {
      digitalWrite(LED_PIN, HIGH);
      delay(PAUSE);
      digitalWrite(LED_PIN, LOW);
      delay(PAUSE);
      Serial.println("LED blinkt");
         
    } else {
      Serial.print("Unknown command: ");
      Serial.print(command);
      }
    }
  }

HotSystems

#20
Aug 03, 2018, 06:06 pm Last Edit: Aug 03, 2018, 06:14 pm by HotSystems
Um noch einmal auf meine Frage zu den Übungen zurück zu kommen....
warum kann mein Sketch nicht fuktionieren?
Nur zum Verständniss
Das hatte ich dir in Post #8 schon geschrieben.
Der kann nur so lange blinken (1 mal) wie er die 3 auswertet.

Das kannst du mittels Statusvariable ändern.
Diese mit der 3 auf HIGH setzen und solange blinken lassen, wie die Variable HIGH ist.

Und combie hat dir die entsprechenden Beispiele geliefert.
Was brauchst du denn noch ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

postmaster-ino

#21
Aug 03, 2018, 06:46 pm Last Edit: Aug 03, 2018, 06:49 pm by postmaster-ino
Hi

Sein Problem wird sein, daß nach Seiner '3' noch ein CR/LF kommt und DAS ist 'Unknown command'.

Hätte der TO aber auch sagen können, daß Er immer wieder 'unbekanntes Kommando' ohne die Anzeige des unbekannten Kommando (da Steuerzeichen) bekommt ...
Würde auch direkt erklären, warum nach der 3 auch nur 1x geblinkt wird ...
Ganz nebenbei hast Du nach '1' oder '2' ebenfalls unbekannte Kommandos - wieder CR/LF

*Glaskugelmodus OFF*

MfG

PS: Klar, da nur bei anstehenden Daten auf der Seriellen überhaupt was gemacht wird, müsstest Du schon '333' schreiben, daß die Geschichte 3x blinkt.
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

Alfaone79

#22
Aug 03, 2018, 07:58 pm Last Edit: Aug 03, 2018, 07:59 pm by Alfaone79
Ok, kann man in dem komando „3" nicht eine Wiederholung einbauen, das es so lange blinkt bis ein neues Kommando kommt?
Wie gesagt, ich bin blutiger Anfänger..... ich versuche nur alles zu verstehen.
Nicht das das blinken der led wichtig ist, ich möchte es nur Schrott für Schritt lernen

combie

#23
Aug 03, 2018, 08:23 pm Last Edit: Aug 03, 2018, 08:24 pm by combie
Quote
Ok, kann man in dem komando „3" nicht eine Wiederholung einbauen,
Du hast kein Kommando 3 wo du was einbauen kannst.
Also: Bau dir ein "Kommando3", und dann bau das blinken da ein.

Ansonsten:
Ablaufsteuerung
Meine Standardantwort zu Ablaufsteuerungen:
Quote
Eine Stichworte Sammlung für Google Suchen:
Endlicher Automat,
State Machine,
Multitasking,
Coroutinen,
Ablaufsteuerung,
Schrittkette,
BlinkWithoutDelay, 
--
Blink Without Delay
Der Wachmann
--
Multitasking Macros
Intervall Macro
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

ElEspanol

einfache Lösung, anfängertauglich, aber sonst Mist:
int command global machen
die Auswertung auf die '3' aus der if rausnehmen und so in den loop

postmaster-ino

... man könnte Das dann auch 'command'-Maschine nennen ;) (in Anspielung auf State-Maschine)

(der Status muß schon irgendwie global sein - zumindest static, was die Sache aber auch nicht besser als global macht)
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

agmue

Ok, kann man in dem komando „3" nicht eine Wiederholung einbauen, das es so lange blinkt bis ein neues Kommando kommt?
Man kann, aber das Ergebnis ist nicht so erfreulich:

Code: [Select]
const unsigned int LED_PIN = 13;
const unsigned int BAUD_RATE = 9600;
const unsigned int PAUSE = 500;
int command;

void setup() {
  pinMode (LED_PIN, OUTPUT);
  Serial.begin (BAUD_RATE);
  Serial.println("Anfang");
}

void loop() {
  if (Serial.available() > 0) {
    command = Serial.read();
  }
  if (command == '1') {
    digitalWrite (LED_PIN, HIGH);
    Serial.println("LED on");

  } else if (command == '2') {
    digitalWrite (LED_PIN, LOW);
    Serial.println("LED off");

  } else if (command == '3') {
    digitalWrite(LED_PIN, HIGH);
    delay(PAUSE);
    digitalWrite(LED_PIN, LOW);
    delay(PAUSE);
    Serial.println("LED blinkt");

  } else {
    Serial.print("Unknown command: ");
    Serial.print(command);
  }
}

Die Lösung liegt im Setzen eines Merkers und der Trennung von Befehlserkennung und Blinken.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

ElEspanol

Dein Sketch funktioniert doch schon, wie es sich der TE vorstellt. Jetzt noch INTERVAL.h statt delay und es ist ein Sketch, der tut was er soll und nicht blockiert, also ein per Definition guter Sketch

Alfaone79

Hallo, ich mal wieder.
Habe mich nun schon ein wenig eingearbeitet, habe aber nun schon wieder zwei neue Probleme:
1. Ich möchte mit drei Tastern und einem OLED SSD1327 Display verschiedene Zeichen anzeigen lassen. Z.b. Taster 1 und Taster 2 zugleich gedrückt „N", Taster 3 gedrückt „2", Taster 2 und Taster 3 gedrückt „5" usw.

2. Wie bekomme ich 2 oder mehr Sketche in einen integriert und kann diese mit einem Taster „durchschalten"?

Tommy56

2. Wie bekomme ich 2 oder mehr Sketche in einen integriert und kann diese mit einem Taster „durchschalten"?
Die globalen Variablen und die Inhalte von setup und loop zusammenfassen.
Aufpassen, dass keine Variablen doppelt vorhanden sind. Dann diese umbenennen.

Ansonsten möglicht die einzelnen Loop-Bestandteile in Funktionen fassen und diese in einem endlichen Automaten abhängig vom Zustand (den Du mit dem Taster einstellst) aufrufen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up