Page 1 of 2

Не компилится код Zuno

Posted: 16 Aug 2017 16:34
by picachu
Доброго дня.

Вероятнее это надо писать в теме по зуне, но мой уровень английского сего не позволяет, поэтому спрошу тут.

При компиляции кода для модуля RC522 возникает ошибка. Компилятор ругается на модуль CPI.
Под ардуиной все работает нормально.

Код:

Code: Select all

#include "SPI.h" 
#include "ZUNO_MFRC522.h" // library "RFID". 

// Pin (SS и RST) allow arbitrary connection and configured in the code. 
// !(SS- he - SDA). 
#define RST_PIN 9 
#define SS_PIN 10 
#define LED_PIN 13

SPISettings spi_params;
MFRC522 mfrc522(&spi_params,SS_PIN, RST_PIN);  //  reate MFRC522 instance. 
unsigned long uidDec, uidDecTemp;  // display card number in decimal format

// Last saved LED value
byte currentLEDValue;

// set up channel
ZUNO_SETUP_CHANNELS(
   ZUNO_SENSOR_BINARY_DOOR_WINDOW(getter, setter));

void setup() { 
  SPI.begin();  //  initialize SPI / Init SPI bus. 
  mfrc522.PCD_Init();     // initialize MFRC522 / Init MFRC522 card. 
  pinMode(RELE_PIN, OUTPUT);  
} 

void loop() { 
  // Look for new cards. 
  if ( ! mfrc522.PICC_IsNewCardPresent()) { 
    return; 
  } 

  // Select one of the cards. 
  if ( ! mfrc522.PICC_ReadCardSerial()) { 
    return; 
  } 

  uidDec = 0; 

  // The results of the serial number of the card "UID". 
  for (byte i = 0; i < mfrc522.uid.size; i++)  
  { 
    uidDecTemp = mfrc522.uid.uidByte[i]; 
    uidDec = uidDec*256+uidDecTemp;   
  }   

void setter(byte value)() {
// compare the number of "UID", cards with the recorded number of "UID" in the sketch.
    if (uidDec == 2949947481)   // replace!!!"UID" № "2949947481", the number "UID" number of your card. 
  {
    digitalWrite(LED_PIN, HIGH); // Turn on the led
    // The rest of the code
  }    
  //pause 2 seconds 
  delay(2000);
  {
    digitalWrite(LED_PIN, LOW); // Turn off the led
  }  
  currentLEDValue = value;
} 

byte getter() {
  return currentLEDValue;
}
}
Ошибка :

Code: Select all

Arduino: 1.6.5 (Windows 7), Плата"Z-Wave>ME Z-Uno, Russian, Disabled, Disabled"
Используем библиотеку SPI в папке: C:\Program Files (x86)\Arduino\libraries\SPI-master 
Используем библиотеку MFRC522 в папке: C:\Program Files (x86)\Arduino\libraries\ZUNO_MFRC522 

WARNING: library MFRC522 claims to run on [avr, STM32F1, teensy] architecture(s) and may be incompatible with your current board which runs on [zw8051] architecture(s).

C:\Users\Iam\AppData\Roaming\Arduino15\packages\Z-Uno\tools\zuno_toolchain\00.08.31/zuno_toolchain/compiler build C:\Users\Iam\AppData\Local\Temp\build6858813404277879763.tmp/tewst.cpp -r C:\Users\Iam\AppData\Roaming\Arduino15\packages\Z-Uno\hardware\zw8051\2.0.9 

	************* Building Arduino Sketch *************
	C:\Users\Iam\AppData\Local\Temp\build6858813404277879763.tmp/tewst.cpp
	***************************************************

C:\Users\Iam\AppData\Local\Temp\build6858813404277879763.tmp/tewst.cpp:59:1:error:uCxx doesn't support "for" statement with empty columns or without body!

Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build6858813404277879763.tmp\SPI.cpp with SDCPP... 
Compiling C:\Users\Iam\AppData\Local\Temp\build6858813404277879763.tmp\SPI_sdcpp_.cpp ...

uCxx returned error code:1

Ошибка компиляции.
Модуль ZUNO_MFRC522 взят из этого топика viewtopic.php?p=65471#p65471

Re: Не компилится код Zuno

Posted: 17 Aug 2017 00:46
by PoltoS
Смущает вот это:
Используем библиотеку SPI в папке: C:\Program Files (x86)\Arduino\libraries\SPI-master

Видимо, стоит кастомная библиотека, которая перекрывает штатную зуновскую. Попробуйте эту папку временно убрать

Re: Не компилится код Zuno

Posted: 17 Aug 2017 21:44
by picachu
Та же ошибка. Я собственно сперва подумал, что нет библиотеки, поэтому добавил.

Поправил код, ошибся в паре скобок.

Code: Select all

 #include "SPI.h"
#include "ZUNO_MFRC522.h" // library "RFID". 

/*
 -----------------------------------------------------
 * Signal     Pin              Pin
 *            Zuno        MFRC522 board
 * ------------------------------------------------------------
 * Reset       9               RST
 * SPI SS       8               SDA
 * SPI MOSI   2               MOSI
 * SPI MISO   1               MISO
 * SPI SCK     0               SCK

 */

// Pin RST connection and configured in the code.(SS- he - SDA).
#define RST_PIN 9
#define LED_PIN 13

SPISettings spi_settings = SPISettings(4000000, MSBFIRST, SPI_MODE0);
SPI.beginTransaction(&spi_settings);
ZMFRC522_h MFRC522(&spi_settings, RST_PIN); //  reate MFRC522 instance.
unsigned long uidDec, uidDecTemp;  // display card number in decimal format


// Last saved LED value
byte currentLEDValue;

// set up channel
ZUNO_SETUP_CHANNELS(
  ZUNO_SENSOR_BINARY_DOOR_WINDOW(getter, setter));

void setup() {
  SPI.beginTransaction();  //  initialize SPI / Init SPI bus.
  MFRC522.PCD_Init();     // initialize MFRC522 / Init MFRC522 card.
  pinMode(LED_PIN, OUTPUT);


  void loop() {
    
    // Look for new cards.
    if ( ! MFRC522.PICC_IsNewCardPresent()) {
      return;
    }
  
  
    // Select one of the cards.
    if ( ! MFRC522.PICC_ReadCardSerial()) {
      return;
    }

    uidDec = 0;

    // The results of the serial number of the card "UID".
    for (byte i = 0; i < MFRC522.uid.size; i++)
    {
      uidDecTemp = MFRC522.uid.uidByte[i];
      uidDec = uidDec * 256 + uidDecTemp;
    }

    void setter(byte value)() {
      // compare the number of "UID", cards with the recorded number of "UID" in the sketch.
      if (uidDec == 2949947481)   // replace!!!"UID" № "2949947481", the number "UID" number of your card.
      {
        digitalWrite(LED_PIN, HIGH); // Turn on the led
        // The rest of the code
      }
      //pause 2 seconds
      delay(2000);
      {
        digitalWrite(LED_PIN, LOW); // Turn off the led
      }
      currentLEDValue = value;
    }

    byte getter() {
      return currentLEDValue;
    }
  }
Пошла следующая ошибка

Code: Select all

Arduino: 1.6.5 (Windows 7), Плата"Z-Wave>ME Z-Uno, Russian, Disabled, Enabled"

Используем библиотеку MFRC522 в папке: C:\Program Files (x86)\Arduino\libraries\ZUNO_MFRC522 

WARNING: library MFRC522 claims to run on [avr, STM32F1, teensy] architecture(s) and may be incompatible with your current board which runs on [zw8051] architecture(s).

C:\Users\Iam\AppData\Roaming\Arduino15\packages\Z-Uno\tools\zuno_toolchain\00.08.31/zuno_toolchain/compiler build C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp/tewst.cpp -r C:\Users\Iam\AppData\Roaming\Arduino15\packages\Z-Uno\hardware\zw8051\2.0.9 

	************* Building Arduino Sketch *************
	C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp/tewst.cpp
	***************************************************

Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\Print.cpp with SDCPP... 
Compiling C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\Print_sdcpp_.cpp ...
Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\Stream.cpp with SDCPP... 
Compiling C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\Stream_sdcpp_.cpp ...
Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\HardwareSerial.cpp with SDCPP... 
Compiling C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\HardwareSerial_sdcpp_.cpp ...
Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\HLCore.cpp with SDCPP... 
Compiling C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\HLCore_sdcpp_.cpp ...
Preprocessing file: C:\Users\Iam\AppData\Local\Temp\build2071106001968128110.tmp\_tewst.cpp with SDCPP... 
tewst.ino:2:46: fatal error: ZUNO_MFRC522.h: No such file or directory
compilation terminated.
Preprocessor failed!uCxx returned error code:1

Ошибка компиляции.
В этой теме viewtopic.php?p=65471#p65471 как я понял так и не сумели решить проблему и Вы рекомендовали дождаться версии 2.0.7. Но сейчас версия вроде уже 2.0.9


PS. Нашел несоответствие в коде. В библиотеке ZUNO_MFRC522.h пин SS_PIN жестко объявлен 8, а у меня 10. Исправил, ошибка не ушла.

Re: Не компилится код Zuno

Posted: 18 Aug 2017 02:01
by PoltoS
Правок куча - много ошибок было.

Вот дифф с моими комментариями

Code: Select all

18a19 -- добавил описание SS_PIN (поменяйте, если нужно)
> #define SS_PIN 10
21,23c22,23 -- нельзя писать код и присваивать значения вне ф-ций. заменил на конструкторы. Что за ZMFRC522_h? Переименовал в MFRC522. Имя объекта MFRC522 заменил на mrfc522, т.к. первое уже занято под имя класса.
< SPISettings spi_settings = SPISettings(4000000, MSBFIRST, SPI_MODE0);
< SPI.beginTransaction(&spi_settings);
< ZMFRC522_h MFRC522(&spi_settings, RST_PIN); //  reate MFRC522 instance.
---
> SPISettings spi_settings(4000000, MSBFIRST, SPI_MODE0);
> MFRC522 mrfc522(&spi_settings, RST_PIN, SS_PIN); //  reate MFRC522 instance.
30a31 -- убрал описание канала, т.к. для датчика открытия setter не нужен
> /*
32a34
> */
35,36c37,39 -- вот тут инициализируем.
<   SPI.beginTransaction();  //  initialize SPI / Init SPI bus.
<   MFRC522.PCD_Init();     // initialize MFRC522 / Init MFRC522 card.
---
>   SPI.beginTransaction(&spi_settings);
>   SPI.begin();  //  initialize SPI / Init SPI bus.
>   mrfc522.PCD_Init();     // initialize MFRC522 / Init MFRC522 card.
38a41 -- забыта скобка
> }
43c45 -- имя переменной (а не класса)
<     if ( ! MFRC522.PICC_IsNewCardPresent()) {
---
>     if ( ! mrfc522.PICC_IsNewCardPresent()) {
49c51
<     if ( ! MFRC522.PICC_ReadCardSerial()) {
---
>     if ( ! mrfc522.PICC_ReadCardSerial()) {
56,58c57,59
<     for (byte i = 0; i < MFRC522.uid.size; i++)
<     {
<       uidDecTemp = MFRC522.uid.uidByte[i];
---
>     for (byte i = 0; i < mrfc522.uid.size; i++)
>     {
>       uidDecTemp = mrfc522.uid.uidByte[i];
61,62c61,63 -- что за скобки после списка параметров ф-ции?? закомментировал getter/setter, т.к. не используются
< 
<     void setter(byte value)() {
---
> }
> /*
>     void setter(byte value) {
80c81
<   }
---
> */

Re: Не компилится код Zuno

Posted: 18 Aug 2017 10:34
by picachu
PoltoS wrote:
18 Aug 2017 02:01
Правок куча - много ошибок было.

Вот дифф с моими комментариями
Поправил, выверил скобки.
Ошибка таже
PoltoS wrote:
18 Aug 2017 02:01
-- Имя объекта MFRC522 заменил на mrfc522, т.к. первое уже занято под имя класса.
Это свитчер зачем то поменял на заглавные буквы при вставке из буфера. В коде строчными.

Code: Select all

#include <SPI.h>
#include <ZUNO_MFRC522.h>

// Pin connection and configured
#define RST_PIN 9
#define SS_PIN 8
#define LED_PIN 13

SPISettings spi_settings = SPISettings(4000000, MSBFIRST, SPI_MODE0);
MFRC522 mrfc522(&spi_settings, RST_PIN, SS_PIN); //  reate MFRC522 instance.
unsigned long uidDec, uidDecTemp;  // card number in decimal format

// Last LED value
byte currentLEDValue;

// set up channel
ZUNO_SETUP_CHANNELS(ZUNO_SENSOR_BINARY_DOOR_WINDOW(getter));

void setup() {
  SPI.beginTransaction(&spi_settings);
  SPI.begin();  //  Init SPI
  mrfc522.PCD_Init();     // Init MFRC522
  pinMode(LED_PIN, OUTPUT);
}

void loop() {

  // Look for new cards.
  if ( ! mrfc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards.
  if ( ! mrfc522.PICC_ReadCardSerial()) {
    return;
  }

  uidDec = 0;
  for (byte i = 0; i < mrfc522.uid.size; i++)    // The results of the serial number of the card "UID".
  {
    uidDecTemp = mrfc522.uid.uidByte[i];
    uidDec = uidDec * 256 + uidDecTemp;
  }
  if (uidDec == 2949947481)   // compare the number of "UID", cards with the recorded number of "UID" in the sketch.
  {
    digitalWrite(LED_PIN, HIGH); // Turn on the led
    // The rest of the code
  }
  //pause 3 seconds
  delay(3000);
  {
    digitalWrite(LED_PIN, LOW); // Turn off the led
    currentLEDValue = value;
  }

  byte getter() {
/*    if (currentLEDValue == 0) { 
      return 0xff;             
    } else {                   
      return 0;                 
    }
  }
 */
}
А как файл "ino" прикрепить, что бы код не вставлять?

Re: Не компилится код Zuno

Posted: 18 Aug 2017 13:13
by PoltoS
Эту строчку так и не поменяли
SPISettings spi_settings = SPISettings(4000000

Re: Не компилится код Zuno

Posted: 18 Aug 2017 13:44
by picachu
Упс, упустил. Поправил, всё равно ошибка.

Code: Select all

Arduino: 1.6.5 (Windows 8.1), Плата"Z-Wave>ME Z-Uno, Russian, Disabled, Disabled"
Используем библиотеку MFRC522 в папке: C:\Program Files (x86)\Arduino\libraries\ZUNO_MFRC522 

WARNING: library MFRC522 claims to run on [avr, STM32F1, teensy] architecture(s) and may be incompatible with your current board which runs on [zw8051] architecture(s).

C:\Users\vjik5\AppData\Roaming\Arduino15\packages\Z-Uno\tools\zuno_toolchain\00.08.31/zuno_toolchain/compiler build C:\Users\vjik5\AppData\Local\Temp\build7103122540897188909.tmp/tewst.cpp -r C:\Users\vjik5\AppData\Roaming\Arduino15\packages\Z-Uno\hardware\zw8051\2.0.9 

	************* Building Arduino Sketch *************
	C:\Users\vjik5\AppData\Local\Temp\build7103122540897188909.tmp/tewst.cpp
	***************************************************
C:\Users\vjik5\AppData\Local\Temp\build7103122540897188909.tmp/tewst.cpp:49:1:error:uCxx doesn't support "for" statement with empty columns or without body!

Preprocessing file: C:\Users\vjik5\AppData\Local\Temp\build7103122540897188909.tmp\SPI.cpp with SDCPP... 
Compiling C:\Users\vjik5\AppData\Local\Temp\build7103122540897188909.tmp\SPI_sdcpp_.cpp ...

uCxx returned error code:1
Ошибка компиляции.

Вот все модули собираются, а RFID ну ни как. :(
Ругается и все.

Кстати я сначала написал SPISettings spi_settings(4000000, MSBFIRST, SPI_MODE0);, а потом поправил на основе примера http://z-uno.z-wave.me/Reference/SPI/

Code: Select all

SPISettings spi_settings = SPISettings(8000000, MSBFIRST, SPI_MODE0);
SPI.beginTransaction(&spi_settings);
// ...
SPI.endTransaction();
.

Re: Не компилится код Zuno

Posted: 18 Aug 2017 14:09
by picachu
Удалил все из скетча кроме инициализации модуля, не собирается.

Code: Select all

#include <SPI.h>
#include <ZUNO_MFRC522.h>
#define RST_PIN 9
#define SS_PIN  8

SPISettings spi_settings(4000000, MSBFIRST, SPI_MODE0);
MFRC522 mrfc522(&spi_settings, RST_PIN, SS_PIN); 
void setup() {
  SPI.beginTransaction(&spi_settings);
  SPI.begin();  //  Init SPI
  mrfc522.PCD_Init();     
  }
void loop() {
//
  }
Если закоментить RFID библиотеку, то все нормально.

Code: Select all

#include <SPI.h>
 // #include <ZUNO_MFRC522.h>
#define RST_PIN 9
#define SS_PIN  8

SPISettings spi_settings(4000000, MSBFIRST, SPI_MODE0);
//  MFRC522 mrfc522(&spi_settings, RST_PIN, SS_PIN); 
void setup() {
  SPI.beginTransaction(&spi_settings);
  SPI.begin();  //  Init SPI
 // mrfc522.PCD_Init();    
 void loop() {
//
  }
Значит проблема в библиотеке в ZUNO_MFRC522.h?

Взял библиотеку для ардуино https://github.com/miguelbalboa/rfid то же самое.
Нашел ещё пяток на просторах интернета, ошибка аналогичная.

Проверил все библиотеки на ардуино, заработали все, даже ZUNO_MFRC522.h
Получается проблема не в них, а в совместимости с зуной.
Как выйти из положения? Нужен FRID модуль на 13 мегагерц. 125 как в примерах не пойдет.

Re: Не компилится код Zuno

Posted: 18 Aug 2017 15:32
by PoltoS
Перенесите папку ZUNO_MFRC522 в C:\Users\vjik5\AppData\Roaming\Arduino15\packages\Z-Uno\hardware\zw8051\2.0.9\libraries\

Re: Не компилится код Zuno

Posted: 27 Aug 2017 14:05
by picachu
Перенес, скомпилилось. После заливки и включения в сеть в интерфейсе появляется бинарный датчик, после чего зуна виснет намертво. Путем многократного нажатия на кнопку сброса оживает, но после этого не на что не реагирует. При прошивке других скетчей все нормально.Что то ей не нравится в коде, что не понять не могу.
Заливаю тот же код в ардуину, выкидывая строчки о канале и секцию геттер, всё работает.