So, da ich den ersten Post per Handy geschrieben habe, hatte ich leider den Quellcode nicht zur Hand, von daher ist er hiermit nachgereicht.
Für das Bluetooth Modul habe ich keine extra Bibliothek benutzt.
Arduino ist dieser hier: Funduino Mega R3
Bluetooth Modul ist dieses: HC 05 Bluetooth Modul
Tutorial für das ansteuern des Moduls stammt von hier: Funduino HC 05 Tutorial
Nun zum Problem:
Mein Arduino bekommt seine Spannung per externem 5V Netzteil. Solange das USB Kabel vom PC zum Arduino angeschlossen ist, funktioniert die Steuerung per Bluetooth perfekt. Sobald ich nun aber das USB Kabel abziehe, da der Barbot ja in Zukunft auch ohne Angeklemmten PC funktionieren soll, reagiert das Bluetooth Modul allerdings garnicht mehr auf Kopplungs- sowie Eingabeversuche.
Ich hoffe das diese Informationen jetzt jemandem weiterhelfen können.
Gruß green_lion
/******************************************************************
* Anschlüsse:
* Arduino Mega -> Bluetooth Module
* Pin 18 (Tx1) -> Rx
* Pin 19 (Rx1) -> Tx
* Gnd -> GND
* 3,3V -> 5V
*
* Pin 13 -> LED+
* Gnd -> LED-
* Serielle Kommunikation mit PC (Tx0 and Rx0)
*****************************************************************/
#include <Wire.h> // Wire Bibliothek einbinden
#include <Stepper.h> //Bibliothek für Schrittmotoren laden
const int stepsPerRevolution = 200;
Stepper Schlitten (stepsPerRevolution, 8, 9, 10, 11);
Stepper Dosierer (stepsPerRevolution, 4, 5, 6, 7);
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden (Von MaxtechTV)
LiquidCrystal_I2C lcd(0x27, 20, 4); //HEX-Adresse und Zeichen sowie Zeilenanzahl des Displays
//Ports deklarieren:
int enas = 12;
int enbs = 13;
int enad = 2;
int enbd = 3;
int LED = 13;
//Schrittwerte für Getränke angeben:
const int Cola = 4025;
const int Sprite = 3270;
const int Fanta = 2515;
const int Korn = 1760;
const int Whisky = 1005;
const int Mariacron = 250;
const int Ausguss = 628;
void befuellen_25()
{
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(1250);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
}
void befuellen_50()
{
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(2500);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
}
void befuellen_75()
{
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(2500);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
delay(500);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(1250);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
}
void befuellen_100()
{
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(2500);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
delay(500);
Dosierer.step(Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
delay(2500);
digitalWrite(enad,HIGH);
digitalWrite(enbd,HIGH);
Dosierer.step(-Ausguss);
digitalWrite(enad,LOW);
digitalWrite(enbd,LOW);
}
void setup() {
//Serial.begin(9600); //Tx0 and Rx0 //Serielle Schnittstelle für PC Starten
Serial1.begin(9600); //Tx1 and Rx1 //Serielle Schnittstelle 1 für Bluetooth starten
//Serial2; //Tx2 und Rx2 (Nicht benötigt)
//Serial3; //Tx3 und Rx3 (Nicht benötigt)
lcd.begin(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus).
//Pinarten festlegen:
pinMode(LED, OUTPUT);
pinMode(enas,OUTPUT);
pinMode(enbs,OUTPUT);
pinMode(enad,OUTPUT);
pinMode(enbd,OUTPUT);
//Geschwindigkeiten der Motoren einstellen:
Schlitten.setSpeed(200);
Dosierer.setSpeed(200);
Serial1.println("Stellen sie ein Glas mit einem Eiswürfel unter die Maschine!"); //Für Bluetooth
Serial1.println("Wählen sie ein Getränk aus!");
}
void loop() {
if(Serial1.available ()>0)
{
int buffer_value = Serial1.read();
if(buffer_value == 'a' || buffer_value == 'A') //Cola Korn 60:40
{
digitalWrite(LED, HIGH); //Schalte LED ein
Serial.println("Cola-Korn wird zubereitet!"); //Arduino Terminal auf PC
Serial1.println("Cola-Korn wird zubereitet!"); //Bluetooth Terminal auf Handy
digitalWrite(enas,HIGH);
digitalWrite(enbs,HIGH);
Schlitten.step(Korn);
digitalWrite(enas,LOW);
digitalWrite(enbs,LOW);
delay(100);
Serial.println("Korn wird eingefüllt!"); //Arduino Terminal auf PC
Serial1.println("Korn wird eingefüllt!"); //Bluetooth Terminal auf Handy
befuellen_75();
digitalWrite(enas,HIGH);
digitalWrite(enbs,HIGH);
Schlitten.step(Cola - Korn);
digitalWrite(enas,LOW);
digitalWrite(enbs,LOW);
delay(100);
Serial.println("Cola wird eingefüllt!"); //Arduino Terminal auf PC
Serial1.println("Cola wird eingefüllt!"); //Bluetooth Terminal auf Handy
befuellen_100();
digitalWrite(enas,HIGH);
digitalWrite(enbs,HIGH);
Schlitten.step(- Cola);
digitalWrite(enas,LOW);
digitalWrite(enbs,LOW);
digitalWrite(LED, LOW); //Schalte LED aus
Serial.println("Ihre Mischung ist Fertig!"); //Arduino Terminal auf PC
Serial1.println("Ihre Mischung ist Fertig!"); //Bluetooth Terminal auf Handy
}
}
}