Помогите с кодом на Arduino mega 2560.

palagnyukvovan
Offline
Зарегистрирован: 12.11.2013

Помогите с кодом на Arduino mega 2560

Хотельсь бы реализовать управление роботом по Wi FI.

Управление едет через роутер WR702N, теперь надо разобратся с дуиной.

Прошу вашей помощи......

Есьть код под Arduino Mini Pro :

int led = 13;
boolean laight = 0;
int incomingByte = 0;
int action = 0;

void setup() {
  Serial.begin(115200);
 
  pinMode(13, OUTPUT);
  pinMode(4, OUTPUT); //light
  pinMode(5, OUTPUT); // шим 1
  pinMode(6, OUTPUT); // шим 2
  pinMode(7, OUTPUT); // 11
  pinMode(8, OUTPUT); // 12
  pinMode(11, OUTPUT); // 21
  pinMode(12, OUTPUT); // 22
}

void loop() {
 
  //Serial.print("1");
 
  if (Serial.available() > 0) {  //если есть доступные данные// считываем байт
        incomingByte = Serial.read();
        // отсылаем то, что получили
        digitalWrite(13, HIGH);
        
        if(incomingByte == 97) // A
          action = 7;
        if(incomingByte == 100) // D
          action = 8;
        if(incomingByte == 115) // S
          action = 11;
        if(incomingByte == 119) // W
          action = 12;
        if(incomingByte == 108) // L
          laight=!laight;  
                                  
        digitalWrite(4, laight);
                   
        //analogWrite(8, 255);
        //analogWrite(9, 255);
               
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
               
        digitalWrite(action, HIGH);
        delay(250);
        digitalWrite(action, LOW);
        
        action = 0;
        
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        
        digitalWrite(13, LOW);
                          
        Serial.print("250: ");
        Serial.println(incomingByte, DEC);
    }
               
}
Подключаю дуину к L298N.
Зашивал етот код в Arduino mega 2560, - шим 5. 6. работает а 7. 8. 11. 12. нет. помогите.

и еще хотелось бы добавить управление серво - камерой и прочие.

Прошу вашей помощи...

palagnyukvovan
Offline
Зарегистрирован: 12.11.2013

Я особо в програмировании не разбираюсь.

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

Управление камарой надо както сгладить.Что поворот бил плавний ане сразу с 90 га 180градусав.

Скетч:

  #include <Servo.h>
   Servo servo1;
   Servo servo2;
   const int SERVO1_PIN = 8;
   const int SERVO2_PIN = 9;
   const int MAX_POS = 1023;
   const int MAX_ANGLE = 180;
 
   int incomingByte;
    void setup()
 {
  servo1.attach(SERVO1_PIN);
  servo2.attach(SERVO2_PIN);
 
                    
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    Serial.begin(115200);
    }

    void loop()                     
    {
    if (Serial.available() > 0) {
        incomingByte = Serial.read();
      // Установка серво 1 в среднее положение
      if (incomingByte == '5') {
      servo1.write(90);
     }
     // Установка серво 2 в среднее положение
      if (incomingByte == '5') {
      servo2.write(90);
     }  
      // При нажатой 8 повернуть серво 1 на 180 и при отсуствии возвратить в середину  
      if (incomingByte == '8') {
      servo1.write(180);
      delay(150);
      servo1.write(90);
     }  
      // При нажатой 2 повернуть серво 1 на 10 и при отсуствии возвратить в середину
      if (incomingByte == '2') {
      servo1.write(10);
      delay(150);
      servo1.write(90);
     }
      // При нажатой 4 повернуть серво 2 на 180 и при отсуствии возвратить в середину     
     if (incomingByte == '4') {
      servo2.write(180);
      delay(150);
      servo2.write(90);
     }  
      // При нажатой 6 повернуть серво 2 на 10 и при отсуствии возвратить в середину
      if (incomingByte == '6') {
      servo2.write(10);
      delay(150);
      servo2.write(90);
     }
    // При нажатой 7 повернуть серво 1 на 180 и при отсуствии возвратить в середину
    // При нажатой 7 повернуть серво 2 на 180 и при отсуствии возвратить в середину  
      if (incomingByte == '7') {
      servo1.write(180);
      servo2.write(180);
      delay(150);
      servo1.write(90);
      servo2.write(90);
      }
     // При нажатой 9 повернуть серво 1 на 180 и при отсуствии возвратить в середину
    // При нажатой 9 повернуть серво 2 на 10 и при отсуствии возвратить в середину  
      if (incomingByte == '9') {
      servo1.write(180);
      servo2.write(10);
      delay(150);
      servo1.write(90);
      servo2.write(90);
      }
      // При нажатой 1 повернуть серво 1 на 10 и при отсуствии возвратить в середину
    // При нажатой 1 повернуть серво 2 на 180 и при отсуствии возвратить в середину
     if (incomingByte == '1') {
      servo1.write(10);
      servo2.write(180);
      delay(150);
      servo1.write(90);
      servo2.write(90);
      }
     // При нажатой 3 повернуть серво 1 на 10 и при отсуствии возвратить в середину
    // При нажатой 3 повернуть серво 2 на 10 и при отсуствии возвратить в середину
      if (incomingByte == '3') {
      servo1.write(10);
      servo2.write(10);
      delay(150);
      servo1.write(90);
      servo2.write(90);
      }
      // При нажатой Q двигатся влево передним ходом
   if (incomingByte == 'Q') {
      digitalWrite(2, HIGH);
      digitalWrite(5, HIGH);
      delay(120);
      digitalWrite(2, LOW);
      digitalWrite(5, LOW);
     }
    // При нажатой W двигатся вперед
   if (incomingByte == 'W') {
      digitalWrite(2, HIGH);
      digitalWrite(3, HIGH);
      delay(120);
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);   
    }
    // При нажатой E двигатся вправопередним ходом
    if (incomingByte == 'E') {
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      delay(120);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
    }
    // При нажатой A двигатся влево задним ходом
    if (incomingByte == 'A') {
      digitalWrite(4, HIGH);
      digitalWrite(3, HIGH);
      delay(120);
      digitalWrite(4, LOW);
      digitalWrite(3, LOW);
    }
    // При нажатой S двигатся назад
    if (incomingByte == 'S') {
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      delay(120);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
    }
    // При нажатой D двигатся вправо задним ходом
    if (incomingByte == 'D') {
      digitalWrite(5, HIGH);
      digitalWrite(2, HIGH);
      delay(120);
      digitalWrite(5, LOW);
      digitalWrite(2, LOW);
    }
    // При нажатой R посигналить
    if (incomingByte == 'R') {
      digitalWrite(6, HIGH);
      delay(120);
      digitalWrite(6, LOW);
    }
    // При нажатой F включить фари
    if (incomingByte == 'F') {
      digitalWrite(7, HIGH);
    }
    // При нажатой G виключить фари
    if (incomingByte == 'G') {
      digitalWrite(7, LOW);
    }
    }
    }
    

Жду вашых советов.

Спасибо!