Помогите, не понимаю что за ошибка и как её исправить

Тема в разделе "Arduino & Shields", создана пользователем Lukan99, 31 янв 2019.

  1. Lukan99

    Lukan99 Нуб

    Код (C++):
    unsigned int del = 0;
    #define ledred 5
    #define ledrgr A2
    #define ledye A3
    //КЛААВИАТУРА
    #include <Password.h>
    #include <Keypad.h>
    #include "GyverButton.h"

    //пароль
    Password password = Password("1234");  // здесь задаём пароль
    int dlugosc = 4;                        // количество цифр в пароле
    int ilosc; // number of clicks

    //клавиши
    const byte ROWS = 4; // строки
    const byte COLS = 4; // столбцы
    char keys[ROWS][COLS] =
    {
      {'1','2','3','A'},
      {'4','5','6','B'},
      {'7','8','9','C'},
      {'*','0','#','D'}
    };
    byte rowPins[ROWS] = {13, 12, 11, 10,};
    byte colPins[COLS] = {9, 8, 7, 6};
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    //КЛАВИАТУРА


    //СЧЕТЧИК ВРЕМЕНИ
    int digit = 0; //номер цифры

    byte digits[10] = // цифры в двоичном бинарном коде
    {
    B01111110,B00110000,B01101101,
    B01111001,B00110011,B01011011,
    B11011111,B01110000,B01111111,B11111011
    };
    //СЧЕТЧИК ВРЕМЕНИ


    //У.З. ДАТЧИК
    long duration, cm;   // переменная длины
    //У.З. ДАТЧИК



    void setup() {
      Serial.begin(9600);
    pinMode(ledred,OUTPUT);

    //У.З. ДАТЧИК
    pinMode(A0,OUTPUT);
    pinMode(A1,INPUT);
    //У.З. ДАТЧИК

    //КЛАВИАТУРА
    keypad.addEventListener(keypadEvent);
    //КЛАВИАТУРА


    //СЧЕТЧИК
    for(int pin = 2; pin <= 4; pin++)
      {
        pinMode(pin,OUTPUT);
        digitalWrite(pin,0);
      }
    //СЧЕТЧИК


    }

    void loop() {
      digitalWrite(A0,0);
      delayMicroseconds(2);
      digitalWrite(A0,1);
        delayMicroseconds(15);

    digitalWrite(A0,0);

    if(millis() - del > 50){
      del = millis();
    duration = pulseIn(A1,1);
    cm = duration/29/2;
    }


    if(cm < 10){
      timer();
      keypadEvent(KeypadEvent );
    }
    else{
      digitalWrite(2,0);
      shiftOut(3,4,LSBFIRST,B00000000);
      digitalWrite(2,1);
    }
    if(digit == 9){
      digitalWrite(ledye,1);
     
    }
    }


    //СЧЕТЧИК
    void timer(){
      if(millis() - del > 500){
      del = millis();
    digitalWrite(2,0);
    ++digit;
    shiftOut(3,4, LSBFIRST, digits[digit]);    
    digitalWrite(2,1);
    }
    }
    //СЧЕТЧИК

    //КЛАВИАТУРА
    void keypadEvent(KeypadEvent eKey)
    {
      switch (keypad.getState())
      {
        case PRESSED:

     
    Serial.print("Pressed: ");
    Serial.println(eKey);
    switch (eKey)
    {

    case '*':
    ilosc = 0;

    default:
    ilosc=ilosc+1;
    password.append(eKey);
    }
    //Serial.println(ilosc);
    if(millis() - del > 250){
      del = millis();
    if(ilosc == 1)
    {
    Serial.print("   < PIN >");
    Serial.print("*_");
    }
    if(ilosc == 2)
    {
    Serial.print("   < PIN >");
    Serial.print("**_");
    }
    if(ilosc == 3)
    {
    Serial.print("   < PIN >");
    Serial.print("***_");
    }
    if(ilosc == 4)
    {
    Serial.print("   < PIN >");
    Serial.print("****_");
    }
    if(ilosc == 5)
    {
    Serial.print("   < PIN >");
    Serial.print("*****_");
    }
    if(ilosc == 6)
    {
    Serial.print("   < PIN >");
    Serial.print("******_");
    }
    if(ilosc == 7)
    {
    Serial.print("   < PIN >");
    Serial.print("*******_");
    }
    if(ilosc == 8)
    {
    Serial.print("   < PIN >");
    Serial.print("********");
    }
    if(ilosc == dlugosc)
    {
    checkPassword();
    ilosc = 0;
    }
    }
    }
    }



    void checkPassword()
    {
      if (password.evaluate())
      {

        ilosc = 0;
        Serial.println("Success");
        Serial.print(" << OPEN >>");

    }
      else
      {
      ilosc = 0;
        password.reset();
        digitalWrite(ledred,1);
        Serial.println("NO");
    if(millis() - del > 2000){
      del = millis();
        Serial.print("  << CLOSE >>");
    }
        Serial.print("  :Welcome:");
        Serial.print("PLEASE ENTER PIN");
      }
    }


     
    Ошибку в коде выдаёт в функции loop
    keypadEvent (KeypadEvent) ;
    Просит написать первичное выражение

    exit status 1
    expected primary-expression before ')' token
     
    Последнее редактирование: 1 фев 2019
  2. b707

    b707 Гуру

    Главная ошибка - не прочитали правила, прежде чем постить.
    Код программы нужно вставлять как код, а не как тест. В таком виде в вашей программе никто копаться и искать ошибки не станет.
     
    DetSimen, NikitOS и Igor68 нравится это.
  3. Igor68

    Igor68 Гуру

    Точно! читать это нельзя... но понимаю, что в первый раз обращение. тут и loop не посмотреть - причина вопроса
     
  4. NikitOS

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

    Первый, или сотый, но правила для всех, они по всем разделам раскиданы :)
     
  5. Lukan99

    Lukan99 Нуб

  6. NikitOS

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

    Это дубль...
    Тут отредактируйте

    клик
     
  7. b707

    b707 Гуру

    Скопируйте сообщение об ошибке точно, не надо выкладывать свою интерпретацию
     
  8. Igor68

    Igor68 Гуру

    А вообще примите за правило функции (по тексту написаны либо до той функции, где вызываются.... либо по объявлению перед ней. А вообще никто не запрещал(доже рекомендовал) заголовочные файлы(как принято, а обычно в начале текста программы типа:
    Код (C++):
    #include "test.h"
    // где test.h Ваш заголовочный файл
    //И соответственно там
    int test_func(void);
    //где test_func Ваша функция, что встречается //везде, где надо в проекте
    //А если у Вас много файлов, что требуют эту
    //функцию то объявите её как extern (ну это я //делаю в Си и C++ не примкеняю)
    //
    //
    //Язык Си может описать всё..., кроме секса и водки
     
    NikitOS нравится это.
  9. NikitOS

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

    @Igor68, ну как...
    Все пишут комментарии так:
    А я так:

    Меня не переучить :)
     
  10. Igor68

    Igor68 Гуру

    Да бросьте Дружище!!! Это пауза... Ну как в нотной грамоте(просто запятой не очень хватает)!
    А вообще рад Вас видеть/слышать!!!
     
  11. NikitOS

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

    Ага, взаимно :)
    Все куда-то пропадают, одному мне делать нечего, сижу, кукую :D
     
    Igor68 нравится это.
  12. Lukan99

    Lukan99 Нуб

    Код (C++):
    unsigned int del = 0;
    #define ledred 5
    #define ledrgr A2
    #define ledye A3
    //КЛААВИАТУРА
    #include <Password.h>
    #include <Keypad.h>
    #include "GyverButton.h"
    #include "test.h"
    //пароль
    Password password = Password("1234");  // здесь задаём пароль
    int dlugosc = 4;                        // количество цифр в пароле
    int ilosc; // number of clicks

    //клавиши
    const byte ROWS = 4; // строки
    const byte COLS = 4; // столбцы
    char keys[ROWS][COLS] =
    {
      {'1','2','3','A'},
      {'4','5','6','B'},
      {'7','8','9','C'},
      {'*','0','#','D'}
    };
    byte rowPins[ROWS] = {13, 12, 11, 10,};
    byte colPins[COLS] = {9, 8, 7, 6};
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    //КЛАВИАТУРА


    //СЧЕТЧИК ВРЕМЕНИ
    int digit = 0; //номер цифры

    byte digits[10] = // чифры в двоичнмом бинарном коде
    {
    B01111110,B00110000,B01101101,
    B01111001,B00110011,B01011011,
    B11011111,B01110000,B01111111,B11111011
    };
    //СЧЕТЧИК ВРЕМЕНИ


    //У.З. ДАТЧИК
    long duration, cm;   // переменная длины
    //У.З. ДАТЧИК



    void setup() {
      Serial.begin(9600);
    pinMode(ledred,OUTPUT);
     
    //У.З. ДАТЧИК
    pinMode(A0,OUTPUT);
    pinMode(A1,INPUT);
    //У.З. ДАТЧИК

    //КЛАВИАТУРА
    keypad.addEventListener(keypadEvent);
    //КЛАВИАТУРА


    //СЧЕТЧИК
    for(int pin = 2; pin <= 4; pin++)
      {
        pinMode(pin,OUTPUT);
        digitalWrite(pin,0);
      }
    //СЧЕТЧИК


    }

    void loop() {
      digitalWrite(A0,0);
      delayMicroseconds(2);
      digitalWrite(A0,1);
        delayMicroseconds(15);

    digitalWrite(A0,0);

    if(millis() - del > 50){
      del = millis();
    duration = pulseIn(A1,1);
    cm = duration/29/2;
    }


    if(cm < 10){
      timer();
      int keypadEvent(KeypadEvent);
    }
    else{
      digitalWrite(2,0);
      shiftOut(3,4,LSBFIRST,B00000000);
      digitalWrite(2,1);
    }
    if(digit == 9){
      digitalWrite(ledye,1);
       
    }
    }


    //СЧЕТЧИК
    void timer(){
      if(millis() - del > 500){
      del = millis();
    digitalWrite(2,0);
    ++digit;
    shiftOut(3,4, LSBFIRST, digits[digit]);      
    digitalWrite(2,1);
    }
    }
    //СЧЕТЧИК

    //КЛАВИАТУРА
    void keypadEvent(KeypadEvent eKey)
    {
      switch (keypad.getState())
      {
        case PRESSED:
     
       
    Serial.print("Pressed: ");
    Serial.println(eKey);
    switch (eKey)
    {

    case '*':
    ilosc = 0;

    default:
    ilosc=ilosc+1;
    password.append(eKey);
    }
    //Serial.println(ilosc);
    if(millis() - del > 250){
      del = millis();
    if(ilosc == 1)
    {
    Serial.print("   < PIN >");
    Serial.print("*_");
    }
    if(ilosc == 2)
    {
    Serial.print("   < PIN >");
    Serial.print("**_");
    }
    if(ilosc == 3)
    {
    Serial.print("   < PIN >");
    Serial.print("***_");
    }
    if(ilosc == 4)
    {
    Serial.print("   < PIN >");
    Serial.print("****_");
    }
    if(ilosc == 5)
    {
    Serial.print("   < PIN >");
    Serial.print("*****_");
    }
    if(ilosc == 6)
    {
    Serial.print("   < PIN >");
    Serial.print("******_");
    }
    if(ilosc == 7)
    {
    Serial.print("   < PIN >");
    Serial.print("*******_");
    }
    if(ilosc == 8)
    {
    Serial.print("   < PIN >");
    Serial.print("********");
    }
    if(ilosc == dlugosc)
    {
    checkPassword();
    ilosc = 0;
    }
    }
    }
    }



    void checkPassword()
    {
      if (password.evaluate())
      {

        ilosc = 0;
        Serial.println("Success");  
        Serial.print(" << OPEN >>");  
     
    }
      else
      {
      ilosc = 0;
        password.reset();
        digitalWrite(ledred,1);
        Serial.println("NO");
    if(millis() - del > 2000){
      del = millis();
        Serial.print("  << CLOSE >>");
    }
        Serial.print("  :Welcome:");
        Serial.print("PLEASE ENTER PIN");  
      }
    }

    пишет
    exit status 1
    test.h: No such file or directory
     
  13. NikitOS

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

    А перевести это пробовали? :)
     
  14. Igor68

    Igor68 Гуру

    Поздно конечно(по часам моего времени)! но... но водки попей. А лучше девочку погладь/поимей/ полюби!!!!
     
    parovoZZ нравится это.
  15. NikitOS

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

    Кроме коньяка в радиусе 5 метров ничего нет, дальше лень идти
    А с девкой мысля интересная, но со своей ложкой дегтя :)

    Или это не мне адресовано?:D

    А почему поздно? Я думал в Туле время московское...
     
    Igor68 нравится это.
  16. Lukan99

    Lukan99 Нуб

    п
    пробовал. потом пробовал без этой строки ошибка исчезла, но скетч не работает
     
  17. NikitOS

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

    Так Вы файлик-то создали?
    Я о test.h
     
  18. Lukan99

    Lukan99 Нуб

    а как если не секрет?
     
  19. Igor68

    Igor68 Гуру

    Не!!! Ну а Вы как хотели! этот файл должен быть ! в той директории где и ваш Си файл, в котором вызов его. Кстати очень удобен и для параметров. например
    Код (C++):
    //test.h - это как пример

    #ifndef _test_h_ //для компилятора, что он первый раз при компиляции
    #define _test_h_ //говорим прерпроцессору, что уже есть!!!

    //тут к примеру определение...
    #define PI 3.14

    //тут определение функций, которые в одноимённом файле Си
    //к примеру

    int testfunc1(void); //эта функция для этого

    extern int testfunc2(void); //а эта функция для всех файлов, где она нужна - глобальная для Си



    #endif
     
  20. Igor68

    Igor68 Гуру

    Смеётесь? Какой секрет!
    В той директории где Ваш проект просто текстовый файл с расширением "h" и потом включаете его в файлы Си Вашего проекта в начале его типа
    Код (C++):
    #include "test.h"
     
    И делов-то!!!