Параллельное управление bluetooth и кнопки

vankenshtein
Offline
Зарегистрирован: 15.04.2014

Здравствуйте, вопрос в следующем светики управляются с андроид устройства по блютусу как можно подключить кнопки? Пробовал по всякому, на кнопки реагирует вкл\выкл, а вот при нажатии вкл или выкл на андроиде светики только моргают(1 раз при нажатии на кнопку на андроиде).

Вот код:

 

#include <CapacitiveSensor.h>

CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapacitiveSensor   cs_4_6 = CapacitiveSensor(4,6);        // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
CapacitiveSensor   cs_4_8 = CapacitiveSensor(4,8);

int LightPin = 12; //подключение реле свет к пину 12
int AmpPin = 11; //подключение реле усилок к пину 11
int SublightPin = 10; //подключение реле ночник к пину 11
int flag1=0;
int flag2=0;
int flag3=0;
String readString;

   void setup() {


 pinMode(LightPin,OUTPUT);
 pinMode(AmpPin,OUTPUT);
pinMode(SublightPin,OUTPUT);

 Serial.begin(115200);

 // При вызове parseInt() задержка ожидания последующего символа по умолчанию 1 секунда.
  // Функцией setTimeout() можно уменьшить эту задержку. Например на 4 миллисекунды, setTimeout(4);.
  // Чем выше скорость Serial.begin, тем меньше потребуется значение setTimeout.
  Serial.setTimeout(4);


 digitalWrite(LightPin, HIGH);
 digitalWrite(AmpPin, HIGH);
 digitalWrite(SublightPin, HIGH);

}

   void loop()
  {
   
    while(Serial.available())
            {
              delay(3);
             char c = Serial.read();
             readString +=c;
            }
            if(readString.length() > 0){
              
            Serial.print(readString);
             
            if ( readString=="500")  //свет
              {
                  digitalWrite(LightPin, LOW);
                 
                 }   
               if ( readString=="501")  //свет
              {
                  digitalWrite(LightPin, HIGH);
                 
                 }     
                 
                 if ( readString=="510") //усилок
              {
                  digitalWrite(AmpPin, LOW);
                
                 }
                  if ( readString=="511") //усилок
              {
                  digitalWrite(AmpPin, HIGH);
                
                 }
                 
                 
                 if ( readString=="520")  //ночник
              {
                  digitalWrite(SublightPin, LOW);
                
                 }
                 if ( readString=="521")  //ночник
              {
                  digitalWrite(SublightPin, HIGH);
                
                 }
                 readString="";
              }
    long total1 =  cs_4_2.capacitiveSensor(30);
    long total2 =  cs_4_6.capacitiveSensor(30);
    long total3 =  cs_4_8.capacitiveSensor(30);
    
    
    if(total1 > 80 && flag1==0)
    {
     flag1=1;
    }
    
    if(digitalRead(12)==LOW&&flag1==1)
     {
         digitalWrite(12,!digitalRead(12));
        flag1=0;
     }
     
     
    if(total2 > 80 && flag2==0)
    {
     flag2=1;
    }
    if(digitalRead(11)==LOW&&flag2==1)
     {
         digitalWrite(11,!digitalRead(11));
        flag2=0;
     }
    
    
     if(total3 > 65 && flag3==0){
      flag3=1;;
    }
    if(digitalRead(10)==LOW&&flag3==1)
     {
         digitalWrite(10,!digitalRead(10));
        flag3=0;
     }
    
  } 

Помогите пожалуйста. Там надо наверно надо сделать или или, но не могу разобраться как.

vankenshtein
Offline
Зарегистрирован: 15.04.2014

Проблема решена!

Решение:

 

#include <CapacitiveSensor.h>

CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapacitiveSensor   cs_4_6 = CapacitiveSensor(4,6);        // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
CapacitiveSensor   cs_4_8 = CapacitiveSensor(4,8);

int LightPin = 12; //подключение реле свет к пину 12
int AmpPin = 11; //подключение реле усилок к пину 11
int SublightPin = 10; //подключение реле ночник к пину 11

String readString;

long time1 = 0;
long time2 = 0;
long time3 = 0;
int state1 = HIGH;
int state2 = HIGH;
int state3 = HIGH;

boolean yes1;
boolean yes2;
boolean yes3;

boolean previous1 = false;
boolean previous2 = false;
boolean previous3 = false;
int debounce1 = 200;
int debounce2 = 200;
int debounce3 = 200;

   void setup() {
 pinMode(LightPin,OUTPUT);
 pinMode(AmpPin,OUTPUT);
pinMode(SublightPin,OUTPUT);

 Serial.begin(115200);

delay(1000);


 digitalWrite(LightPin, HIGH);
 digitalWrite(AmpPin, HIGH);
 digitalWrite(SublightPin, HIGH);

}

   void loop()
  {
    
    long total1 =  cs_4_2.capacitiveSensor(30);
    long total2 =  cs_4_6.capacitiveSensor(30);
    long total3 =  cs_4_8.capacitiveSensor(30);
   
    while(Serial.available())
            {
              delay(3);
             char c = Serial.read();
             readString +=c;
            }
          
             
            if ( readString=="500"|| total1 > 80)//"lighton"
              {yes1 = true;}
    else {yes1 = false;}   
    if(yes1 == true && previous1  == false && millis() - time1>debounce1){
      if(state1 == LOW){
        state1 = HIGH;
      }
      else
        state1 = LOW;
        time1 = millis();   
    }
      digitalWrite(LightPin, state1);
      previous1 = yes1;
                 
                 if ( readString=="510" || total2 > 80){yes2 = true;}
                else {yes2 = false;}   
    if(yes2 == true && previous2  == false && millis() - time2>debounce2){   
      if(state2 == LOW){
        state2 = HIGH;
      }
      else
        state2 = LOW;
        time2 = millis();         
    }
      digitalWrite(AmpPin, state2);
      previous2 = yes2;
                 
                 
                 if ( readString=="520" || total3 > 65){yes3 = true;}
                else {yes3 = false;}     
    if(yes3 == true && previous3  == false && millis() - time3>debounce3){   
      if(state3 == LOW){
        state3 = HIGH;
      }
      else
        state3 = LOW;
        time3 = millis();   
    }
      digitalWrite(SublightPin, state3);
      previous3 = yes3;
      
      
                 readString="";
    
  }