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
  Keine Verbindung zum Board wenn CNC Shield aufgesteckt ist flotschibotschi 14 649 03.02.2021 17:35
Letzter Beitrag: flotschibotschi
  Bluetooth Datenübertragung peter_99 4 474 10.11.2020 18:31
Letzter Beitrag: hotsystems
  Zwei Arduinos via Bluetooth koppeln schaarva 19 3.390 25.06.2020 14:34
Letzter Beitrag: schaarva
  Arduno + Ethernet-Shield: HTML-Seite mit Taster für einmalige Auslösung RivaDynamite 1 638 22.06.2020 20:50
Letzter Beitrag: Tommy56
  Auto mit Kamera über Bluetooth gnagfloW 4 1.066 19.06.2020 08:23
Letzter Beitrag: gnagfloW
  Steuerung über Infrarot und Bluetooth SimonTau 4 1.051 20.05.2020 07:37
Letzter Beitrag: Corvus
  Arduino als Sender (Bluetooth) schaarva 2 1.373 05.04.2020 15:15
Letzter Beitrag: schaarva
  E293D Motor Shield mit Taster bedienen Milano 17 2.138 16.03.2020 20:34
Letzter Beitrag: Milano
  Dateiübertragung sobald Bluetooth in Reichweite DO3GE 9 1.437 28.02.2020 21:28
Letzter Beitrag: nbk83
Lightbulb HC05 Bluetooth auf Verbindung / Empfang überprüfen Beatzler 7 1.355 27.02.2020 16:49
Letzter Beitrag: Beatzler

Gehe zu:


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