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, 14:38
Beitrag #1
Bluetooth shield HC06
Hallo zusammen,
ein Eingabe mit den Ziffern 1 + 2 hat b[/code]ei dem aufgeführten Programm sehr gut funktioniert. Bei der Erweiterung um die Eingabe mit der Ziffer 3 komme ich leider nicht mehr weiter. Die eine Programmversion ist im Unterprogramm mit delay , die andere mit millis.
Beim Programm mit millis funktioniert nur die Eingabe mit 1 und 2 (LED on und off)
Beim Programm mit delay nur das Blinken. auch wenn ich Eingabe mit 1 oder 2 mache
Hat jemand eine Erklärung?

Code:
// mit millis
#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;
const  int ledPin = 13;
int anz = 5;
const long interval = 1000;
void setup()
{
  pinMode(ledPin, 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");
    }
    Blink();
  }
  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");
  }
}

void Blink() {

for ( int i = 0; i < anz; i++) {
unsigned long currentMillis1 = millis();

    if (currentMillis1 - previousMillis1 >= interval) {

      previousMillis1 = currentMillis1;
      if (ledState == LOW) {
        ledState = HIGH;
      } else {
        ledState = LOW ;
      }
      digitalWrite(ledPin, ledState);
    }
  }
}

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;
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");
}
Blink();
}

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");
}
}
void Blink() {

for ( int i = 0; i < anz; i++) {
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, 14:52
Beitrag #2
RE: Bluetooth shield HC06
Warum setzt Du den 2. Sketch nicht ebenfalls in Codetags?

Du musst blink() natürlich innerhalb der Klammer von '3' auch aufrufen.
Die for-Schleife muss aus blink raus.

Ungetestet:
Code:
byte zaehler = 0;
....
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
      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

"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, 15:17
Beitrag #3
RE: Bluetooth shield HC06
(04.02.2020 14:52)Tommy56 schrieb:  Warum setzt Du den 2. Sketch nicht ebenfalls in Codetags?

Du musst blink() natürlich innerhalb der Klammer von '3' auch aufrufen.
Die for-Schleife muss aus blink raus.

Ungetestet:
Code:
byte zaehler = 0;
....
    if (a == '3') {
      BT.println("LED blinkt");
      zaehler = 0;
      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 für die schnelle Antwort
Programm korrigiert nach deinem Vorschlag
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;
const  int ledPin = 13;
int anz = 5;
const long interval = 1000;
byte zaehler = 0;
void setup()
{

  pinMode(ledPin, 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;
      Blink();
    }  


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

  }
}

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

Wenn ich am Ende von void Blink() drei Klammern setze und dementsprechend eine bei if (a =3) hinter blink() weglasse, sagt es mir
'Blink ' was not declared in this scope und das Programm läd nicht hoch

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 15:27
Beitrag #4
RE: Bluetooth shield HC06
Ich hatte ja geschrieben: ungetestet.
Mit besserer Einrückung und weniger unnötigen Leerzeilen hättest Du das auch finden können.
Wenn er blink() immer noch nicht kennt, setze sie vor den loop.

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;
const  int ledPin = 13;
int anz = 5;
const long interval = 1000;
byte zaehler = 0;

void setup()
{
  pinMode(ledPin, 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;
      Blink();
    }  
    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");
    }
    }    
}

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

"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, 15:53
Beitrag #5
RE: Bluetooth shield HC06
(04.02.2020 15:27)Tommy56 schrieb:  Ich hatte ja geschrieben: ungetestet.
Mit besserer Einrückung und weniger unnötigen Leerzeilen hättest Du das auch finden können.
Wenn er blink() immer noch nicht kennt, setze sie vor den loop.

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;
const  int ledPin = 13;
int anz = 5;
const long interval = 1000;
byte zaehler = 0;

void setup()
{
  pinMode(ledPin, 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;
      Blink();
    }  
    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");
    }
    }    
}

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

Ja, sorry
Nach der Anpassung funktionieren beide programmversion für die Eingabe 1+2 , aber leider keine Reaktion auf den Blink Modus
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;
      Blink();
    }
    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");
    }
  }
}

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, 16:01
Beitrag #6
RE: Bluetooth shield HC06
Die delay sind nicht von mir.

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, 16:07
Beitrag #7
RE: Bluetooth shield HC06
(04.02.2020 16:01)Tommy56 schrieb:  Die delay sind nicht von mir.

Gruß Tommy
Das ist die andere Version neben millis mit delay.
Bei beiden Versionen funktioniert die Eingabe mit 1 +2, aber bei beiden( millis und delay) nicht die Eingabe mit 3

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 16:23
Beitrag #8
RE: Bluetooth shield HC06
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

"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
Antwort schreiben 


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

Gehe zu:


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