вчера получилось выполнить то что я захотел заработало добавил я пару строк в начале лупа
PHP код:
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
только вот не задача хотелось немного по другому объясню на диаграммах
на первых показано как работает у меня получилось педаль тормоза как кнопка приходится ее отпускать и снова нажимать
а мне надо как на двух других диаграммах что бы я нажал и он сразу начал заводится а ногу я даже не убирал как это реализовать???
вот весь скетч
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}