Прошу помочь новичку.

Тема в разделе "Arduino & Shields", создана пользователем svem61, 8 июн 2018.

  1. svem61

    svem61 Нерд

    Добрый день всем. Ардуиной занялся недавно, поэтому прошу не бейте больно. Задача: нужно организовать постоянный опрос PIR датчика движения ( из стандартного набора ардуины). По последним 20-ти результатам вычислить среднее и сравнить его с порогом ( это типа чтобы уйти от ложных срабатываний). Написал код. Вопрос:что не так ? Почему опроса нет Serial.print дает "0"-ли. Спасибо!

    const uint8_t pinMovement = 8;
    const uint8_t pinLedRed = 13;
    uint8_t StateMovSen = LOW;
    uint8_t ValMovSen = 0;
    uint16_t arrMovement[20];
    uint8_t valMovement;

    uint8_t limMovement = 0.25;


    void setup()
    {

    pinMode( pinMovement,INPUT);
    pinMode(pinLedRed, OUTPUT);

    Serial.begin(9600);
    }

    void loop()
    {
    valMovement = 0;
    for(int i=0; i<19; i++)
    {
    arrMovement=arrMovement[i+1];
    delay(1000);
    Serial.print("Значение показаний : ");
    Serial.print("\t");
    Serial.println(arrMovement);
    }
    arrMovement[19]=digitalRead(pinMovement);
    for(int i=0; i<20; i++)
    {
    valMovement+=arrMovement;
    if (valMovement == HIGH)
    {
    digitalWrite(pinLedRed, HIGH);
    delay (100);
    if (StateMovSen == LOW)
    {
    StateMovSen = HIGH;
    }
    }
    else
    {
    digitalWrite(pinLedRed, LOW);
    delay(100);

    if (StateMovSen == HIGH)
    {
    StateMovSen = LOW;
    }
    }
    }
    valMovement/=20;

    Serial.print(digitalRead(pinMovement),DEC);
    Serial.print(" СРЕДНЕЕ :");
    Serial.print("\t\t\t\t\t");

    Serial.print( valMovement,DEC);
    Serial.println("");
    }
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Вставляйте код в эти теги: [code][/code]
     
    Airbus нравится это.
  3. svem61

    svem61 Нерд

    Спасибо, учту.
     
  4. DetSimen

    DetSimen Guest

    это вот чо?
     
    Airbus и parovoZZ нравится это.
  5. DetSimen

    DetSimen Guest

    Почитай-ка, братец, для начала про типы данных.
     
  6. svem61

    svem61 Нерд

    Код (Text):

    const uint8_t pinMovement = 8;
    const uint8_t pinLedRed = 13;
    uint8_t StateMovSen = LOW;
    uint8_t ValMovSen = 0;
    uint16_t arrMovement[20];
    uint8_t valMovement;

    uint8_t limMovement = 0.25;


    void setup()
    {

    pinMode( pinMovement,INPUT);
    pinMode(pinLedRed, OUTPUT);

    Serial.begin(9600);
    }

    void loop()
    {
    valMovement = 0;
    for(int i=0; i<19; i++)
    {
    arrMovement=arrMovement[i+1];
    delay(1000);
    Serial.print("Значение показаний : ");
    Serial.print("\t");
    Serial.println(arrMovement);
    }
    arrMovement[19]=digitalRead(pinMovement);
    for(int i=0; i<20; i++)
    {
    valMovement+=arrMovement;
    if (valMovement == HIGH)
    {
    digitalWrite(pinLedRed, HIGH);
    delay (100);
    if (StateMovSen == LOW)
    {
    StateMovSen = HIGH;
    }
    }
    else
    {
    digitalWrite(pinLedRed, LOW);
    delay(100);

    if (StateMovSen == HIGH)
    {
    StateMovSen = LOW;
    }
    }
    }
    valMovement/=20;

    Serial.print(digitalRead(pinMovement),DEC);
    Serial.print(" СРЕДНЕЕ :");
    Serial.print("\t\t\t\t\t");

    Serial.print( valMovement,DEC);
    Serial.println("");
    }
     
     
  7. parovoZZ

    parovoZZ Гуру

    Что за бред?
     
    NikitOS нравится это.
  8. DetSimen

    DetSimen Guest

    да тут вапще всё - бред.
     
    Airbus и parovoZZ нравится это.
  9. svem61

    svem61 Нерд

    Про это я понял , uint8_t limMovement = 0.25; спасибо. Говорю же , что только пытаюсь и прошу помощи, так что извиняйте. Наверное мне не повезло что с С++ в башке я не родился, я только учусь.
     
  10. Airbus

    Airbus Радиохулиган Модератор

    А кто Вам сказал что датчик PIR вычисляет какие то значения?Только 0 и 1.Как подключить PIR датчик к Ардуино и что делать дальше?
     
  11. parovoZZ

    parovoZZ Гуру

    С++ здесь даже и не пахнет...
     
  12. parovoZZ

    parovoZZ Гуру

    А компилятор это к чему приведет? К единице, мне так думается?
     
  13. parovoZZ

    parovoZZ Гуру

    Какое только говно не суют компилятору. Как он такое терпит? Я бы в дурку попал бы ужо....
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Шоу маст гоу он?
     
  15. Daniil

    Daniil Гуру

    Расскажите, пожалуйста, о назначении каждой из переменных и объясните почему им выбран тот или иной тип?
     
    arkadyf нравится это.
  16. Daniil

    Daniil Гуру

    опять?:(
     
  17. Airbus

    Airbus Радиохулиган Модератор

    Не пугайте новичка.
    Погода такая видимо
     
    NikitOS нравится это.
  18. parovoZZ

    parovoZZ Гуру

    А зачем? На таких примерах не надо учиться.
    Слушайте, я программированием AVR занимаюсь два года с большими перерывами. . Мне нравятся эти 8-ми битные МК из-за их очевидной простоты. При этом я не гнушаюсь прочтением даташитов и апноутов и прочих полезных статей, авторы которых кандидаты от наук. Задачу с подсчетом количества ногодрыга я бы решал так. Настроил таймер 0 на прерывание (любое), стартовал таймер по внешнему импульсу. В обработке прерывания крутил бы счетчик. Приходит импульс - стартует таймер, по окончании счета таймер вызывает прерывание, в прерывании инкрементируем счетчик импульсов. Таймер для защиты дребезга. Всё время МК находится в IDLE. Т.е. счетчик тикает, МК ничего не делает. Как-то так.
     
    Airbus нравится это.
  19. parovoZZ

    parovoZZ Гуру

    Хм, а можно и вообще счетчик на первом таймере организовать. И диапазон шире и МК не привлекается вообще.
     
  20. Airbus

    Airbus Радиохулиган Модератор