Hello, I’ve been programming for a while but this is stumped me. I want to control some relays via bluetooth, this i have working but i want to use a single push button with multiple purposes (this i also have working in a septate sketch) but when i combine the two it always stops the bluetooth from working. any ideas?
Heres the bluetooth code:
char inData[50];
char inChar=-1;
byte index = 0;
int ledpin = 13;
void setup()
{
pinMode(ledpin = 2, OUTPUT); // ACC pin
pinMode(ledpin = 3, OUTPUT); // ON pin
pinMode(ledpin = 4, OUTPUT); // START pin
pinMode(ledpin = 5, OUTPUT); // LOCK
pinMode(ledpin = 5, OUTPUT); // UNLOCK
pinMode(ledpin = 7, OUTPUT); // WINDOW N/S/F UP
pinMode(ledpin = 8, OUTPUT); // WINDOW N/S/F DOWN
pinMode(ledpin = 9, OUTPUT); // WINDOW O/S/F UP
pinMode(ledpin = 10, OUTPUT); // WINDOW O/S/F DOWN
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
digitalWrite(ledpin = 4, HIGH);
digitalWrite(ledpin = 5, HIGH);
digitalWrite(ledpin = 6, HIGH);
digitalWrite(ledpin = 7, HIGH);
digitalWrite(ledpin = 8, HIGH);
digitalWrite(ledpin = 9, HIGH);
digitalWrite(ledpin = 10, HIGH);
Serial.begin(38400);
}
char Comp(char* This) {
while (Serial.available() > 0)
{
if(index < 49)
{
inChar = Serial.read();
inData[index] = inChar;
index++;
inData[index] = '\0';
}
}
if (strcmp(inData,This) == 0) {
for (int i=0;i<49;i++) {
inData[i]=0;
}
index=0;
return(0);
}
else {
return(1);
}
}
void loop()
{
if( Serial.available() )
{
}
if(Comp("start engine")==0) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
delay(1000);
digitalWrite(ledpin = 2, LOW);
digitalWrite(ledpin = 3, LOW);
delay(2000);
digitalWrite(ledpin = 4, LOW);
delay(1000);
digitalWrite(ledpin = 4, HIGH);
}
if(Comp("stop engine")==0) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
}
if(Comp("ignition on")==0) {
digitalWrite(ledpin = 2, LOW);
digitalWrite(ledpin = 3, LOW);
}
if(Comp("ignition off")==0) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
}
if(Comp("lock")==0) { ;
digitalWrite(ledpin = 5, LOW);
delay(500);
digitalWrite(ledpin = 5, HIGH);
}
if(Comp("unlock")==0) {
digitalWrite(ledpin = 5, LOW);
delay(500);
digitalWrite(ledpin = 5, HIGH);
}
if(Comp("reset")==0) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
digitalWrite(ledpin = 4, HIGH);
digitalWrite(ledpin = 5, HIGH);
}
if(Comp("passenger window front up")==0) {
digitalWrite(ledpin = 7, LOW);
delay(15000);
digitalWrite(ledpin = 7, HIGH);
}
if(Comp("passenger window front down")==0) {
digitalWrite(ledpin = 8, LOW);
delay(15000);
digitalWrite(ledpin = 8, HIGH);
}
if(Comp("drivers window front up")==0) {
digitalWrite(ledpin = 9, LOW);
delay(15000);
digitalWrite(ledpin = 9, HIGH);
}
if(Comp("drivers window front down")==0) {
digitalWrite(ledpin = 10, LOW);
delay(15000);
digitalWrite(ledpin = 10, HIGH);
}
if(Comp("warm up")==0) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
delay(1000);
digitalWrite(ledpin = 2, LOW);
digitalWrite(ledpin = 3, LOW);
delay(2000);
digitalWrite(ledpin = 4, LOW);
delay(1000);
digitalWrite(ledpin = 4, HIGH);
delay(900000);
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
}
if(Comp("cool down")==0) {
digitalWrite(ledpin = 8, LOW);
delay(15000);
digitalWrite(ledpin = 8, HIGH);
digitalWrite(ledpin = 10, LOW);
delay(15000);
digitalWrite(ledpin = 10, HIGH);
delay(900000);
digitalWrite(ledpin = 7, LOW);
delay(15000);
digitalWrite(ledpin = 7, HIGH);
digitalWrite(ledpin = 9, LOW);
delay(15000);
digitalWrite(ledpin = 9, HIGH);
}
}
and here is the button code:
const int button = 12;
const int led = 13;
int bounceTime = 50;
int holdTime = 2000;
int doubleTime = 700;
int lastReading = LOW;
int hold = 0;
int single = 0;
int LEDstate = 0;
long onTime = 0;
long lastSwitchTime = 0;
void setup() {
pinMode(button, INPUT);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(38400);
}
void loop() {
int reading = digitalRead(button);
//first pressed
if (reading == HIGH && lastReading == LOW) {
onTime = millis();
}
//held
if (reading == HIGH && lastReading == HIGH) {
if ((millis() - onTime) > holdTime) {
invertLED();
hold = 1;
}
}
//released
if (reading == LOW && lastReading == HIGH) {
if (((millis() - onTime) > bounceTime) && hold != 1) {
onRelease();
}
if (hold == 1) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
delay(1000);
digitalWrite(ledpin = 2, LOW);
digitalWrite(ledpin = 3, LOW);
delay(2000);
digitalWrite(ledpin = 4, LOW);
delay(1000);
digitalWrite(ledpin = 4, HIGH);
hold = 0;
}
}
lastReading = reading;
if (single == 1 && (millis() - lastSwitchTime) > doubleTime) {
digitalWrite(ledpin = 2, HIGH);
digitalWrite(ledpin = 3, HIGH);
single = 0;
}
}
void onRelease() {
if ((millis() - lastSwitchTime) >= doubleTime) {
single = 1;
lastSwitchTime = millis();
return;
}
if ((millis() - lastSwitchTime) < doubleTime) {
toggleLED();
digitalWrite(ledpin = 2, LOW);
digitalWrite(ledpin = 3, LOW);
single = 0;
lastSwitchTime = millis();
}
}
void toggleLED() {
if (LEDstate == 0) {
LEDstate = 1;
} else {
LEDstate = 0;
}
digitalWrite(led, LEDstate);
}
void invertLED() {
if (LEDstate == 0) {
digitalWrite(led, 1);
} else {
digitalWrite(led, 0);
}
}
int reading = digitalRead(button);
lastReading = reading;
again the button always cancel’s out the bluetooth
Thanks for your help