Go Down

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

Alfaone79

Hallo zusammen, möchte mich kurz vorstellen.
Ich heiße Christoph bin 38 Jahre alt. Bin Neuling bei dem Thema Arduino und habe keine Vorkenntnissen in Sachen Programmierung.
Nein Ziel ist es irgendwann mal ein zusatzinstrumen für mein Motorrad zu bauen, in dem motortemperatur, Uhrzeit, ganganzeige, ein Logo beim starten und Evtl Reifendruck enthalten sind.
Ich habe mit ein Lehrbuch besorgt, in dem auch kleine Aufgaben gestellt werden z.b. Das ein und ausschalten der led pin13 über die serielle Schnittstelle. Das hat auch funktioniert. Nun soll die led zusätzlich mit Eingabe der „3" zum blinken gebracht werden. Das klappt nicht.
Hat da jemand nen Tipp für den Code für mich?
Bedanke mich schon mal im voraus bei euch für die Hilfe
Gruß Christoph

combie


Wo ist dein Problem?

"klappt nicht" ist keine ausreichende Fehlerbeschreibung.
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

Alfaone79

#2
Aug 02, 2018, 12:57 pm Last Edit: Aug 02, 2018, 01:01 pm by Alfaone79
Okay, das stimmt.
Die led geht einmal an und wieder aus.
Das Programm scheint die an/aus folge nicht zu wiederholen. Sonst funktioniert es.

volvodani

Zeige mal den Sketch dann kann man anhand des Sketches dir besser helfen und/oder Tips geben.
Ist immer einfacher.
Gruß
DerDani
"Komm wir essen Opa!" - Satzzeichen retten Leben!

combie

Das Programm scheint die an/aus folge nicht zu wiederholen. Sonst funktioniert es.
Leider sehe ich weder Programm, noch Schaltung.
Damit ist es mir nicht möglich, dir bei deinem Problem zu helfen.

Bedenke:
Du, dein Aufbau und dein Monitor, stehen auf der anderes Seite des Internets.
Zu weit weg....
Und meine telepathischen Fähigkeiten, sind auch sehr begrenzt.
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

Alfaone79

So,
Habe einen Arduino UNO
Sketch von der ersten Aufgabe:

const unsigned int LED_PIN = 13;
const unsigned int BAUD_RATE = 9600;
                                                                                                                                                                                                     
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 {
      Serial.print("Unknown command: ");
      Serial.print(command);
    }
  }
}

Alfaone79

Sketch von der zweiten Aufgabe, Zeile 22-27 habe
Ich hinzugefügt.

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");

    } 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

#7
Aug 02, 2018, 10:22 pm Last Edit: Aug 02, 2018, 10:24 pm by HotSystems
So wie du das machst, kann es nicht funktionieren.

Du musst das Ergebnis in einer Statusvariable zwischenspeichern und dann immer in der Loop blinken lassen.
Aber nicht mit den delays, sondern mit dem Beispiel in BlinkWithoutDelay aus der IDE.

Und setze deine Sketche in Code-Tags, dann sind die für alle besser lesbar.
So fehlt jegliche Formatierung.
Gruß Dieter

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

Alfaone79

Danke für die Antwort,
Leider habe ich nichts verstanden von dem was du geschrieben hast

combie

Code: [Select]
const byte LED_PIN    = 13;
bool blinkanforderung = false;

void yield()
{
  switch(Serial.read())
  {
    case '1': digitalWrite (LED_PIN, HIGH);
              blinkanforderung = false;
              break;
              
    case '2': digitalWrite (LED_PIN, LOW);
              blinkanforderung = false;
              break;
              
    case '3': blinkanforderung = true;
              break;
  }  
}

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

void loop()
{
  if(blinkanforderung) digitalWrite (LED_PIN,!digitalRead(LED_PIN));
  delay(300);
}



 :smiley-twist:  :smiley-twist:  :smiley-twist:  :smiley-twist:  :smiley-twist:  :smiley-twist:
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

HotSystems

Danke für die Antwort,
Leider habe ich nichts verstanden von dem was du geschrieben hast
Das ist aber sehr bedauerlich.
Habe ich mich zu undeutlich ausgedrückt ?
Gruß Dieter

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

combie

#11
Aug 02, 2018, 10:41 pm Last Edit: Aug 02, 2018, 10:46 pm by combie
Eine Variante, ohne delay.
Code: [Select]
#include <INTERVAL.h>
// https://forum.arduino.cc/index.php?topic=413734.0

const byte LED_PIN    = 13;
bool blinkanforderung = false;

void serialEvent()
{
  switch(Serial.read())
  {
    case '1': digitalWrite (LED_PIN, HIGH);
              blinkanforderung = false;
              break;
             
    case '2': digitalWrite (LED_PIN, LOW);
              blinkanforderung = false;
              break;
             
    case '3': blinkanforderung = true;
              break;
  } 
}

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

void loop()
{
  INTERVAL(300)if(blinkanforderung)digitalWrite(LED_PIN,!digitalRead(LED_PIN));
}

 :o  :o  :o  :o  :o  :o
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

Alfaone79

Ah, okay
Es gibt da also mehrere Wege zum Ziel

Alfaone79

Ohje, das wird ein langer Weg zu meinem geplanten Projekt.
Ist dieses Projekt, welches ich in meinem anfagspost beschrieben habe überhaupt realisierbar?
Wie bekomme ich die Sketche so dargestellt, das man sie im Forum lesen kann?

HotSystems

Ohje, das wird ein langer Weg zu meinem geplanten Projekt.
Ist dieses Projekt, welches ich in meinem anfagspost beschrieben habe überhaupt realisierbar?
Wie bekomme ich die Sketche so dargestellt, das man sie im Forum lesen kann?
Ja, wenn man programmieren will, muss man auch immer etwas lernen.
Damit die Sketche lesbar werden verwendest du Code-Tags, Schaltfläche </> oben links im Forumeditorfenster.

Und ja, dein Projekt ist realisierbar. Beispiele für einen Weg dahin wurden dir auch schon aufgezeigt.
Gruß Dieter

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

Go Up