
... но, это все теория


![]() |
roboforum.ruТехнический форум по робототехнике. |
|
unsigned long previousMillis = 0;
unsigned long currentMillis = 0;
boolean running1 = false;
boolean running2 = false;
byte interval_1 = 30;
byte interval_2 = 30;
int charg = 4;
boolean lastchart = false;
void setup() {
Serial.begin(128000);
Serial.println("TURRET ON");
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT); // сигнал заряда на входе 4
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{ //контроль вкл зарядки
if (digitalRead(charg) == HIGH && lastchart == false)
{ lastchart = true;
Serial.println("chart on"); }
//контроль выклл зарядки
if (digitalRead(charg) == LOW && lastchart == true)
{ lastchart = false;
Serial.println("chart off"); }
if(Serial.available() > 8)
{
byte a,b,c,d,e,f,g,h,i; // принимаем байты и разбиваем их
a = Serial.read(); // питание турели
b = Serial.read(); // лево-1 \ право-0
c = Serial.read(); // шим л\п
d = Serial.read(); // время л\п
e = Serial.read(); // верх-1 \ низ-0
f = Serial.read(); // шим в\н
g = Serial.read(); // время в\н
h = Serial.read(); //выстрел
i = Serial.read(); //лазер
interval_1 = d; //запоминаем длительность вкл л\п
interval_2 = g; //запоминаем длительность вкл в\н
previousMillis = millis();// запоминаем время
if(interval_1 == 0)
running1 = false;
else
running1 = true; //устанавливаем флаг л\п
if(interval_2 == 0)
running2 = false;
else
running2 = true; //устанавливаем флаг в\н
//вкл выкл
if(a == 1)
{ digitalWrite(2, HIGH); Serial.println("power on"); }
if(a == 0)
{ digitalWrite(2, LOW); Serial.println("power off"); }
//выстрел
if(h == 1)
{ digitalWrite(3, HIGH); Serial.println("shot on"); }
if(h == 0)
{ digitalWrite(3, LOW); Serial.println("shot off"); }
//лазер
if(i == 1)
{ digitalWrite(7, HIGH); Serial.println("laser on"); }
if(i == 0)
{ digitalWrite(7, LOW); Serial.println("laser off"); }
//влево
if(b == 1)
{ analogWrite(6, 0);
analogWrite(5, c); Serial.print("left ");Serial.println(c); }
//вправо
if(b == 0)
{ analogWrite(5, 0);
analogWrite(6, c); Serial.print("right ");Serial.println(c); }
//верх
if(e == 1)
{ analogWrite(11, 0);
analogWrite(10, f); Serial.print("up "); Serial.println(f); }
//вниз
if(e == 0)
{ analogWrite(10, 0);
analogWrite(11, f); Serial.print("down "); Serial.println(f); }
Serial.flush();
}
if (running1 == true)
{
currentMillis = millis();
if(currentMillis - previousMillis > interval_1)
{
analogWrite(6, 0);
analogWrite(5, 0);
running1 = false;
Serial.println("time off 1");
}
}
if (running2 == true)
{
currentMillis = millis();
if(currentMillis - previousMillis > interval_2)
{
analogWrite(10, 0);
analogWrite(11, 0);
running2 = false;
Serial.println("time off 2");
}
}
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5