Go Down

Topic: Arduino Bluetooth übertragung (LEDs und Taster) (Read 56 times) previous topic - next topic

Arduinoneuling

Guten Tag Zusammen,  :D


ich bin neu hier und versuche mich an einem kleinen Bluetooth Projekt.


Projekt Aufbau: 8)

Für mein Modellbau habe ich 2 Arduino's mit Hilfe von zwei Hc-05 verbunden .
Auf der Master-Seite sind 3 Drucktaster angeschlossen.
Auf der Slave-Seite 3LED's.


Funktionsvorstellung :  ???

Vorgestellt habe ich mir das der 1te Taster LED1 an/aus- schaltet , Taste 2 LED2 an/aus-schaltet.
Bei Taste 3/LED3 hab ich 2Funktionen geplant .
Die LED soll bereits ohne Tasterdruck auf 50% der Helligkeit leuchten , per Tasterdruck dann auf 100%.

Funktion der Taste 1 und Taste 2 ist kein Problem mehr die Lhttps://forum.arduino.cc/index.php?action=post;board=31.0#ED's lassen sich an und aus schalten.
Ausserdem leuchtet LED3 bereits auf 50% der Helligkeit wie gewollt.


Nun habe ich noch folgendes Problem : :smiley-confuse:

Sobald ich Taste 3 drücke und gerdrückt halte und dazu Taste 1 oder Taste 2 drücke um eine der LED parallel dazu leuchten zu lassen und wieder los lassen bleibt die LED an die sonst normaler Weise direkt nach loslassen des Tasters ausgeht .
Es kommt dann kein ''LOW-Signal '' mehr auf LED1 oder LED2.



Master Sketch:


Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10,11);

int T1 =2;
int T2 =4;
int T3 =7;


void setup() {
mySerial.begin(38400);
Serial.begin(38400);

while(!Serial){
 }

pinMode(T1, INPUT);
pinMode(T2, INPUT);
pinMode(T3, INPUT);
}
void loop() {

 if(digitalRead(T1)== HIGH){
   Serial.write('A');
   mySerial.write('A');
   }

   else if(digitalRead(T2)== HIGH){
   Serial.write('B');
   mySerial.write('B');
   }

   else if(digitalRead(T3)== HIGH){
   Serial.write('C');
   mySerial.write('C');
   }

   else if(digitalRead(T2)== HIGH && digitalRead(T3)== HIGH){
   Serial.write('D');
   mySerial.write('D');
   }

     else {
   Serial.write('E');
   mySerial.write('E');
   }

}






Slave Sketch:


Code: [Select]
#include<SoftwareSerial.h>

SoftwareSerial mySerial(10,11);

int LED1 = 2;
int LED2 = 4;
int LED3 = 6;

void setup() {
mySerial.begin(38400);
Serial.begin(38400);
while(!Serial){
 }
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
}

void loop() {
 if(mySerial.available()){
   char SerBuff = mySerial.read();
   switch (SerBuff){
    case'A':
     digitalWrite(LED1,HIGH);
     Serial.write('A');
     break;

     case'B':
      digitalWrite(LED2,HIGH);
      Serial.write ('B');
     break;

     case'C':
     analogWrite(LED3,255);
     Serial.write ('C');
     break;

     case'D':
     digitalWrite(LED1,HIGH);
      digitalWrite(LED2,HIGH);
      Serial.write('D');
      break;

      default:
      digitalWrite(LED1,LOW);
      digitalWrite(LED2,LOW);
      analogWrite(LED3,50);
      break;
 }
 }
}

Rentner

Hallo,

damit willst Du zwei oder mehr Funktionen gleichzeitig übertragen. wie soll das gehen wenn Du nur ein Byte überträgst. Du must beim senden den Zustand für die drei Funktionen übertragen.

z.B

1;0;0 bedeutet LED1 an LED2 aus LED 3 auf 50%
1;0;1 bedeutet led 1 an led 2 aus led3 auf 100%

beim sende must du das dann zu einer Zeile zusammenbauen,  auf der empfängerseite wieder trennen. Trennzeichen ist z.B das ";" Dann benötigst du noch ein Endzeichen am ende der Zeile ist ein "\n" damit Du weisst wann ende ist und.

Du kannst auch eine Zahlen übertragen und das binär codiert betrachten, ist aber eventuell schwieriger, kannst aber ja zum üben mal beides probieren.

0 = led1 aus led2 aus led3 50%
1 =led1 an led2 aus led3 50%
2 =led 2 an led1 aus led3 50%
3 =led 1+2 an led 3 50%
4 =led 1 aus led2 aus led 3 100%
5 =led 1 an led2 aus led 3 auf 100%
6= led 1 an  led2 an led 3 auf 100%

Heinz


Go Up