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
Lightbulb HC05 Bluetooth auf Verbindung / Empfang überprüfen Beatzler 4 195 11.02.2020 19:25
Letzter Beitrag: Tommy56
  1.8 Zoll adafruit tft lcd mit bluetooth die Anzeige ändern JaimyS 8 308 24.01.2020 10:41
Letzter Beitrag: hotsystems
  SD shield / Kein Zugriff auf Karte Ernie70 33 1.168 10.01.2020 18:06
Letzter Beitrag: Tommy56
  Arduino Mega mit Lan Shield und Googlemail Franzel007 8 576 20.12.2019 17:20
Letzter Beitrag: Franzel007
  Arduino als Sender (Bluetooth) schaarva 1 370 14.12.2019 14:46
Letzter Beitrag: ardu_arne
  Bluetooth HC05 AT befehle huber5093 8 674 20.11.2019 08:57
Letzter Beitrag: hotsystems
  CAN BUS Shield / Lesen von Nachrichten Gary 0 375 13.10.2019 20:07
Letzter Beitrag: Gary
  Arduino Mega mit CAN-Shield Gary 5 576 09.10.2019 23:38
Letzter Beitrag: Bitklopfer
  LoRa Shield Temperaturmesser Murdock 6 659 03.10.2019 10:35
Letzter Beitrag: hotsystems
  CAN SPI Shield Arduino Uno GranP 8 1.036 26.07.2019 14:52
Letzter Beitrag: Bitklopfer

Gehe zu:


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