INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Bluetooth shield HC06
04.02.2020, 16:47
Beitrag #9
RE: Bluetooth shield HC06
(04.02.2020 16:23)Tommy56 schrieb:  Ok, man soll doch testen:
Mit delay:
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}
char a;
void loop()
{
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  if ( zaehler < anz ) {
    zaehler++;
    digitalWrite (13, HIGH);
    delay (1000);
    digitalWrite( 13, LOW);
    delay (1000);
  }
}


Mit millis (hier muss anz doppelt so groß sein sein):
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}

void loop() {
char a;
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }  
    if (a == '?') {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }    
  Blink();
}

void Blink() {
unsigned long currentMillis1 = millis();
  if (zaehler< anz && currentMillis1 - previousMillis1 >= interval) {
      previousMillis1 = currentMillis1;
      zaehler++;
      if (ledState == LOW) {
        ledState = HIGH;
      } else {
        ledState = LOW ;
      }
      digitalWrite(ledPin, ledState);
  }
}

Gruß Tommy

Tommy, vielen Dank,
Beide programme laufen prima.
Ich möchte ja auch noch was lernen.
Warum mußte die Blink() Anweisung aus der Abfrage von if (a ==3) herausgenommen werden?

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 16:52
Beitrag #10
RE: Bluetooth shield HC06
Weil sie dort nur einmalig aufgerufen wird, wenn eine 3 kommt.
Wir steuern sie ja über den Zähler, so dass sie nur läuft, wenn dieser von der 3 auf 0 gesetzt wurde, bis sie fertig ist.

Da habe ich bei der ersten Änderung auch einen Denkfehler drin gehabt.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 17:16
Beitrag #11
RE: Bluetooth shield HC06
(04.02.2020 16:23)Tommy56 schrieb:  Ok, man soll doch testen:
Mit delay:
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}
char a;
void loop()
{
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  if ( zaehler < anz ) {
    zaehler++;
    digitalWrite (13, HIGH);
    delay (1000);
    digitalWrite( 13, LOW);
    delay (1000);
  }
}


Mit millis (hier muss anz doppelt so groß sein sein):
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}

void loop() {
char a;
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }  
    if (a == '?') {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }    
  Blink();
}

void Blink() {
unsigned long currentMillis1 = millis();
  if (zaehler< anz && currentMillis1 - previousMillis1 >= interval) {
      previousMillis1 = currentMillis1;
      zaehler++;
      if (ledState == LOW) {
        ledState = HIGH;
      } else {
        ledState = LOW ;
      }
      digitalWrite(ledPin, ledState);
  }
}

Gruß Tommy
Der Vollständigkeit halber und für alle anderen Interssenten.

mit millis
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
unsigned long previousMillis1 = 0;
int ledState = LOW;
int anz = 10;
byte zaehler = 0;
int interval = 1000;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}

void loop() {
  char a;
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?') {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  unsigned long currentMillis1 = millis();
  if (zaehler < anz && currentMillis1 - previousMillis1 >= interval) {
    previousMillis1 = currentMillis1;
    zaehler++;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW ;
    }
    digitalWrite(13, ledState);
  }
}

Mit delay und variable angepasst
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}
char a;
void loop()
{
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  if ( zaehler < anz ) {
    zaehler++;
    digitalWrite (13, HIGH);
    delay (1000);
    digitalWrite( 13, LOW);
    delay (1000);
  }
}

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 18:35
Beitrag #12
RE: Bluetooth shield HC06
(04.02.2020 17:16)RCudino schrieb:  
(04.02.2020 16:23)Tommy56 schrieb:  Ok, man soll doch testen:
Mit delay:
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}
char a;
void loop()
{
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  if ( zaehler < anz ) {
    zaehler++;
    digitalWrite (13, HIGH);
    delay (1000);
    digitalWrite( 13, LOW);
    delay (1000);
  }
}


Mit millis (hier muss anz doppelt so groß sein sein):
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}

void loop() {
char a;
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }  
    if (a == '?') {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }    
  Blink();
}

void Blink() {
unsigned long currentMillis1 = millis();
  if (zaehler< anz && currentMillis1 - previousMillis1 >= interval) {
      previousMillis1 = currentMillis1;
      zaehler++;
      if (ledState == LOW) {
        ledState = HIGH;
      } else {
        ledState = LOW ;
      }
      digitalWrite(ledPin, ledState);
  }
}

Gruß Tommy
Der Vollständigkeit halber und für alle anderen Interssenten.

mit millis
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
unsigned long previousMillis1 = 0;
int ledState = LOW;
int anz = 10;
byte zaehler = 0;
int interval = 1000;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}

void loop() {
  char a;
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?') {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  unsigned long currentMillis1 = millis();
  if (zaehler < anz && currentMillis1 - previousMillis1 >= interval) {
    previousMillis1 = currentMillis1;
    zaehler++;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW ;
    }
    digitalWrite(13, ledState);
  }
}

Mit delay und variable angepasst
Code:
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
int ledState = LOW;
int anz = 5;
byte zaehler = 0;
void setup()
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  BT.println("Hello from Arduino");
}
char a;
void loop()
{
  if (BT.available()) {
    a = (BT.read());
    if (a == '1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a == '2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
    }
    if (a == '?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
      BT.println("Send '3' to turn LED blink");
    }
  }
  Blink();
}

void Blink() {
  if ( zaehler < anz ) {
    zaehler++;
    digitalWrite (13, HIGH);
    delay (1000);
    digitalWrite( 13, LOW);
    delay (1000);
  }
}

Einen kleinen Schönheitsfehler hab ich noch gefunden.
Wenn das Board resettet wird oder der code neu geladen, wird das Blink programm 1mal durchgeführt

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 18:44
Beitrag #13
RE: Bluetooth shield HC06
Du musst nicht immer alle Beiträge mit zittieren. Da findet man ja nichts mehr.

Ja. da hast Du Recht. Das solltest Du aber selbst rausfinden können. Versuche es zumindest mal.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 21:28
Beitrag #14
RE: Bluetooth shield HC06
Beim Programm mit delay habe ich bei void blink() wie folgt geändert
if ( zaehler < anz &&( a=='3')) {
damit funktioniert es.

Beim millis Programm war ähnliches ohne Erfolg

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 21:42 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2020 21:43 von Tommy56.)
Beitrag #15
RE: Bluetooth shield HC06
Das brauchst Du nicht.
Bei millis ist a lokal zu loop, bei delay global, was nicht sein muss.
Es geht aber in beiden Fällen mit der gleichen Änderung Wink

Tipp: if ( zaehler < anz) - mal darüber nachdenken, wie man das zum Programmstart nutzen kann.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 22:05
Beitrag #16
RE: Bluetooth shield HC06
Mit zaehler = anz im set up hat es bei beiden Programmen geklappt !!

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zwei Arduinos via Bluetooth koppeln schaarva 19 2.160 25.06.2020 14:34
Letzter Beitrag: schaarva
  Arduno + Ethernet-Shield: HTML-Seite mit Taster für einmalige Auslösung RivaDynamite 1 318 22.06.2020 20:50
Letzter Beitrag: Tommy56
  Auto mit Kamera über Bluetooth gnagfloW 4 611 19.06.2020 08:23
Letzter Beitrag: gnagfloW
  Steuerung über Infrarot und Bluetooth SimonTau 4 683 20.05.2020 07:37
Letzter Beitrag: Corvus
  Arduino als Sender (Bluetooth) schaarva 2 961 05.04.2020 15:15
Letzter Beitrag: schaarva
  E293D Motor Shield mit Taster bedienen Milano 17 1.451 16.03.2020 20:34
Letzter Beitrag: Milano
  Dateiübertragung sobald Bluetooth in Reichweite DO3GE 9 995 28.02.2020 21:28
Letzter Beitrag: nbk83
Lightbulb HC05 Bluetooth auf Verbindung / Empfang überprüfen Beatzler 7 881 27.02.2020 16:49
Letzter Beitrag: Beatzler
  1.8 Zoll adafruit tft lcd mit bluetooth die Anzeige ändern JaimyS 8 912 24.01.2020 10:41
Letzter Beitrag: hotsystems
  SD shield / Kein Zugriff auf Karte Ernie70 33 2.686 10.01.2020 18:06
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste