Параллельное управление bluetooth и кнопки
- Войдите на сайт для отправки комментариев
Пнд, 02/03/2015 - 11:47
Здравствуйте, вопрос в следующем светики управляются с андроид устройства по блютусу как можно подключить кнопки? Пробовал по всякому, на кнопки реагирует вкл\выкл, а вот при нажатии вкл или выкл на андроиде светики только моргают(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;
}
}
Помогите пожалуйста. Там надо наверно надо сделать или или, но не могу разобраться как.
Проблема решена!
Решение:
#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=""; }