Не работает скетч

Тема в разделе "Arduino & Shields", создана пользователем прогроматор, 29 июн 2017.

  1. Скетч не проходит проверку перед загрузкой на Arduino выдаёт ошибку "last" was not declared in this scope
    во фрагменте
    boolean now = digitalRead(Kn);
    if (last != now)




    #define Sin 9
    #define Zel 10
    #define Kr 11
    #define Kn 2
    int rez;
    int svet;
    boolean last_kn;
    boolean now_kn;
    int mode;
    void setup() {
    pinMode (Sin, OUTPUT);// put your setup code here, to run once:
    pinMode (Zel, OUTPUT);
    pinMode (Kr, OUTPUT);

    boolean debonce(boolean last);
    {
    boolean now = digitalRead(Kn);
    if (last != now)
    {
    delay(5);
    now = digitalRead(Kn);
    return now;
    }
    }
    rez = analogRead(A0)
    svet = rez / 4

    void setMode(byte m)
    {
    //Красный
    if (m == 1)
    {
    analogWrite(Kr, svet);
    analogWrite(Sin, 0);
    analogWrite(Zel, 0);
    }
    //Синий
    if (m == 1)
    {
    analogWrite(Kr, 0);
    analogWrite(Sin, svet);
    analogWrite(Zel, 0);
    }
    //Зелёный
    if (m == 1)
    {
    analogWrite(Kr, 0);
    analogWrite(Sin, 0);
    analogWrite(Zel, svet);
    }
    //Красный + синий
    if (m == 1)
    {
    analogWrite(Kr, svet);
    analogWrite(Sin, svet);
    analogWrite(Zel, 0);
    }
    //Синий + зелёный
    if (m == 1)
    {
    analogWrite(Kr, 0);
    analogWrite(Sin, svet);
    analogWrite(Zel, svet);
    }
    //Красный + зелёный
    if (m == 1)
    {
    analogWrite(Kr, svet);
    analogWrite(Sin, 0);
    analogWrite(Zel, svet);
    }
    //Красный + зелёный + синий
    if (m == 1)
    {
    analogWrite(Kr, svet);
    analogWrite(Sin, svet);
    analogWrite(Zel, svet);
    }
    //Выкл
    if (m == 1)
    {
    analogWrite(Kr, 0);
    analogWrite(Sin, 0);
    analogWrite(Zel, 0);
    }
    }
    }

    void loop() {
    now_kn = debonce(last_kn);
    if (last_kn == 0 && now_kn == 1){
    mode++;
    }
    now_kn = last_kn;
    if (mode == 8)
    mode = 0
    setMode(mode)
    }
     
  2. vvr

    vvr Инженерище

    Tomasina нравится это.
  3. mcureenab

    mcureenab Гуру

    Функция setup. Нет закрывающей фигурной скобки
     
  4. Limoney

    Limoney Гик

    Разные действия на одно условие, будьте внимательнее.
    Условия будут выполнятся друг за другом, а не одно из условий.
    Код (C++):
    //Синий
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, svet);
        analogWrite(Zel, 0);
      }
      //Зелёный
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, 0);
        analogWrite(Zel, svet);
      }
    Немного отредактирован ваш скетч, но не логика работы
    Код (C++):
    #define Sin 9
    #define Zel 10
    #define Kr 11
    #define Kn 2
    int rez;
    int svet;
    boolean last_kn;
    boolean now_kn;
    int mode;

    boolean debonce(boolean last)
    {
      boolean now = digitalRead(Kn);
      if (last != now)
      {
        delay(5);
        now = digitalRead(Kn);
        return now;
      }
    }

    void setMode(byte m)
    {
      //Красный
      if (m == 1)
      {
        analogWrite(Kr, svet);
        analogWrite(Sin, 0);
        analogWrite(Zel, 0);
      }
      //Синий
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, svet);
        analogWrite(Zel, 0);
      }
      //Зелёный
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, 0);
        analogWrite(Zel, svet);
      }
      //Красный + синий
      if (m == 1)
      {
        analogWrite(Kr, svet);
        analogWrite(Sin, svet);
        analogWrite(Zel, 0);
      }
      //Синий + зелёный
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, svet);
        analogWrite(Zel, svet);
      }
      //Красный + зелёный
      if (m == 1)
      {
        analogWrite(Kr, svet);
        analogWrite(Sin, 0);
        analogWrite(Zel, svet);
      }
      //Красный + зелёный + синий
      if (m == 1)
      {
        analogWrite(Kr, svet);
        analogWrite(Sin, svet);
        analogWrite(Zel, svet);
      }
      //Выкл
      if (m == 1)
      {
        analogWrite(Kr, 0);
        analogWrite(Sin, 0);
        analogWrite(Zel, 0);
      }
    }

    void setup() {
      pinMode (Sin, OUTPUT);// put your setup code here, to run once:
      pinMode (Zel, OUTPUT);
      pinMode (Kr, OUTPUT);
    }

    void loop() {
      rez = analogRead(A0);
      svet = rez / 4;

      now_kn = debonce(last_kn);
      if (last_kn == 0 && now_kn == 1) {
        mode++;
      }
      now_kn = last_kn;
      if (mode == 8)
        mode = 0;
      setMode(mode);
    }