Помогите решить проблему со скетчем!

Тема в разделе "Arduino & Shields", создана пользователем Evgen-82, 11 мар 2015.

  1. Evgen-82

    Evgen-82 Нерд

    Есть проблема со скетчем, а задача следующая, нужно либо через терминал или блютуз модуль hc-06 отсылать комманду и путем отсылки одной и той же команды либо включить нагрузку, либо выключить, короче говоря требуется подобие триггера работающего по определенной команде посылаемого с UART либо через терминал либо блютуз модуль hc-06. Есть скетч, но с ним проблемы, работает как-то странно, не стабильно, подскажите в чем моя ошибка???

    Код скетча такой:
    int ledPin_1 = 9;
    int ledPin_2 = 10;
    int ledPin_3 = 11;
    int ledPin_4 = 12;
    int ledPin_5 = 13;

    void setup() {
    Serial.begin(9600);
    pinMode(ledPin_1, OUTPUT);
    pinMode(ledPin_2, OUTPUT);
    pinMode(ledPin_3, OUTPUT);
    pinMode(ledPin_4, OUTPUT);
    pinMode(ledPin_5, OUTPUT);
    }

    void loop() {

    if (Serial.available() > 0) {
    int i = Serial.read()-48;
    if (i == 1)digitalWrite(ledPin_1, !digitalRead(ledPin_1));
    if (i == 2)digitalWrite(ledPin_2, !digitalRead(ledPin_2));
    if (i == 3)digitalWrite(ledPin_3, !digitalRead(ledPin_3));
    if (i == 4)digitalWrite(ledPin_4, !digitalRead(ledPin_4));
    if (i == 5)digitalWrite(ledPin_5, !digitalRead(ledPin_5));
    }
    }
     
  2. Tomasina

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

    Так работает?
    Код (Text):
    void setup(){
      Serial.begin(9600);

      //Set all the pins we need to output pins
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
      pinMode(4, OUTPUT);
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(11, OUTPUT);
    }

    void loop (){
      if (Serial.available()) {

        //read serial as a character
        char ser = Serial.read();

        //NOTE because the serial is read as "char" and not "int", the read value must be compared to character numbers
        //hence the quotes around the numbers in the case statement
        switch (ser) {
          case '0':
            triggerPin(2);
            break;

          case '1':
            triggerPin(3);
            break;

          case '2':
            triggerPin(4);
            break;

          case '3':
            triggerPin(5);
            break;
          case '4':
            triggerPin(6);
            break;

          case '5':
            triggerPin(7);
            break;

          case '6':
            triggerPin(8);
            break;
          case '7':
            triggerPin(9);
            break;
          case '8':
            triggerPin(10);
            break;

          case '9':
            triggerPin(11);
            break;
        }
      }
    }


    void triggerPin(byte pin)
    {
      digitalWrite(pin, !digitalRead(pin));
    }
     
    Evgen-82 нравится это.
  3. Evgen-82

    Evgen-82 Нерд


    СПАСИБО БОЛЬШОЕ, ВСЕ ОТЛИЧНО И ЧЕТКО РАБОТАЕТ
     
  4. Tomasina

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

    ну тогда найдите отличия и подкорректируйте под свои условия. ;)
     
  5. Evgen-82

    Evgen-82 Нерд

    Да, благодарю, уже сделал