Работа с СОМпортом

Тема в разделе "Arduino & Shields", создана пользователем Azat49, 21 фев 2017.

  1. Azat49

    Azat49 Нерд

    Добрый вечер.
    я только начал заниматься программированием, поэтому прошу сильно не бить
    хочу с компа управлять несколькими розетками, проведя в инете нашел и понял как сделать, но работает только одно реле, а мне надо несколько реле вкл и выкл, как правильно дополнить ?

    int val = 0;
    int LedPin = 13;
    int LedPin1 = 12;
    void setup() {
    Serial.begin(9600);
    pinMode(LedPin, OUTPUT);
    pinMode(LedPin1, OUTPUT);
    }
    void loop() {
    if (Serial.available() > 0)
    {
    val = Serial.read();
    if (val == 'L') {
    digitalWrite(LedPin, HIGH);
    } else if (val == 'q') {
    digitalWrite(LedPin, LOW);
    }
    }
    }
     
  2. Юрий71

    Юрий71 Нерд

    Я хоть сам особо не силён. Но причём тут
    int LedPin = 13;
    int LedPin1 = 12;
    Вот это и реле? На сколько я понимаю это управление разного рода светодиодами.
     
  3. Azat49

    Azat49 Нерд

    разницы нет, пускай загорается светодиод, но как сделать несколько
     
  4. Юрий71

    Юрий71 Нерд

    От одной кнопки сразу несколько реле? Или каждому реле своя кнопка?
     
  5. Azat49

    Azat49 Нерд

    каждое реле своя кнопка
     
  6. Юрий71

    Юрий71 Нерд

    Для начала надо обозначить ещё какие-то мины как выход
     
  7. Azat49

    Azat49 Нерд

    любой с 1 по 13
     
  8. Юрий71

    Юрий71 Нерд

    Да. Ну только не аналоговые. Обозначил пины и потом в сетапе как выход назови
     
  9. Юрий71

    Юрий71 Нерд

    Я низнаю на сколько правильно. Я сам блин нуб ещё тот:) но дальше дописываеш
    {
    if (val == 'W') {
    digitalWrite(LedPin2, HIGH);
    } else if (val == 'R') {
    digitalWrite(LedPin2, LOW);
    }
    Как то так. И так далее. Я думаю так
     
  10. Юрий71

    Юрий71 Нерд

    if -означает , если не так то пропускает скобки . или else иначе,вот так как в этих скобках.
     
  11. Azat49

    Azat49 Нерд

    а можно от начала до конца код скинуть
     
  12. Юрий71

    Юрий71 Нерд

    Я с планшета пишу,а с него писец как не удобно все это писать,чтоб его дописать мне минут 20надо. К том уже если честно я низнаю правильно ли я тебе подсказывают,я говорю,я тот же нуб)))) просто допиши ниже что я тебе написал и попробуй,должно 2реле работать,если заработает,я тебе дальше распаду как ещё дописать. Про скобки только не забудь.
     
    Azat49 нравится это.
  13. Tomasina

    Tomasina Сушитель лампочек Модератор

    Код (C++):
     int x;  // глобальная переменная

    void setup()
    {
      Serial.setTimeout(1000); // timeout duration in milliseconds (long).  It defaults to 1000 milliseconds.
      Serial.begin(9600);
      pinMode(LED_BUILTIN, OUTPUT);
    }


    void loop()
    {
      serialMainMenu();
    }


    void serialMainMenu() // draw a menu on the serial port
    {
      Serial.println( "\n----------- MENU ------------" );
      Serial.println( "C - Input command only" );
      Serial.println( "V - Input command with value" );
      Serial.println( "R - Restart" );
      Serial.println( "H - Help" );
      Serial.println( "-----------------------------" );
      Serial.println("Please input hotkey:\n");
      while(!Serial.available());
      byte key;
      if(Serial.available())
      {
        key = Serial.read();
        switch(key)
        {
        case 'c':
          serialSubmenuCommand();
          break;
        case 'C':
          serialSubmenuCommand();
          break;  

        case 'v':
          serialSubmenuComValue();
          break;
        case 'V':
          serialSubmenuComValue();
          break;      

        case 'r':
          serialRestart();
          break;
        case 'R':
          serialRestart();
          break;  

        case 'h':
          serialHelp();
          break;
        case 'H':
          serialHelp();
          break;

        default:
          Serial.println("Unknown hoktey! Try again.\n"); // wrong character! display the menu again!
          break;
        }
      }
    }


    void serialSubmenuComValue() // Ввод команды с числовым параметром, через пробел: left 55
    {
      Serial.println("Enter text command and value com separator. Example: led 87");
      while(!Serial.available());
      String command;
      if(Serial.available() > 0)
      {
        command = Serial.readStringUntil(' ');
        x = Serial.parseInt();
        Serial.print(">I received: command = ");
        Serial.print(command);
        Serial.print(", x = ");
        Serial.println(x);
        if(command == "led")
        {
          analogWrite(A0, x);
          Serial.print(">pin A0 is set to ");
          Serial.println(x);
        }
      }
    }


    void serialSubmenuCommand() // Ввод команды без числовых параметров: power on
    {
      Serial.println("Enter text command. Enter \"M\" to return to Main Menu. Example: led on/off");
      while(!Serial.available());
      String command = "";
      char character;
      while(Serial.available())
      {
        command = Serial.readString();
      }
      if(command != "")
      {
        if(command == "led on")
        {
          digitalWrite(LED_BUILTIN, HIGH);
          Serial.println(">LED on pin 13 is ON");
        }
        else if(command == "led off")
        {
          digitalWrite(LED_BUILTIN, LOW);
          Serial.println(">LED on pin 13 is OFF");
        }
        else if(command == "m" || command == "M" || command == "menu")
        {
          serialMainMenu();
        }
      }
      else Serial.println("Unknown command!");
      serialSubmenuCommand();
    }


    void serialRestart()
    {
      Serial.println( "cRestarting... \n" );
      serialMainMenu();
    }


    void serialHelp()
    {
      Serial.println( "----------- HELP ------------" );
      Serial.println( "Bla-bla-bla");
      Serial.println( "-----------------------------" );
      Serial.println( "Press input anything to return to Main Menu");
      while(!Serial.available());
      serialMainMenu();
    }
    Запустить "как есть", понять как оно работает.
    Ненужное выкинуть, остальное доработать.
    Делов на 7 минут ;)
     
    DIYMan и Azat49 нравится это.
  14. Azat49

    Azat49 Нерд

    Спасибо
     
  15. Юрий71

    Юрий71 Нерд

    Вот понять как оно работает это самое сложное!!!! Я так и не могу осилить понимание,вроде просто,а не разберешся:)
     
  16. Azat49

    Azat49 Нерд

    мне понимания немного пришло, просто оказалось,
     
  17. Юрий71

    Юрий71 Нерд

    Тоже по нимногу разбраюсь