PS/2

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

  1. Astrologius

    Astrologius Нерд

    Программа
    Код (Text):
    #include <PS2Keyboard.h>

    #define DATA_PIN 4
    PS2Keyboard keyboard;

    void setup() {
      keyboard.begin(DATA_PIN);

      Serial.begin(9600);
      Serial.println("hi");
      delay(1000);
    }

    void loop() {
      if(keyboard.available()) {
        byte dat = keyboard.read();
        byte val = dat - '0';

        if(val >= 0 && val <= 9) {
          Serial.print(val, DEC);
        } else if(dat == PS2_KC_ENTER) {
          Serial.println();
        } else if(dat == PS2_KC_ESC) {
          Serial.println("[ESC]");
        }
      }
    }
    Выдает ошибку
    Arduino: 1.6.5 (Windows 7), Плата"Arduino Uno"
    Используем библиотеку PS2Keyboard в папке: C:\Program Files\arduino-1.6.5-r2\libraries\PS2Keyboard (legacy)
    C:\Program Files\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files\arduino-1.6.5-r2\hardware\arduino\avr\cores\arduino -IC:\Program Files\arduino-1.6.5-r2\hardware\arduino\avr\variants\standard -IC:\Program Files\arduino-1.6.5-r2\libraries\PS2Keyboard C:\Users\Admin\AppData\Local\Temp\build170170107984701884.tmp\PS2.cpp -o C:\Users\Admin\AppData\Local\Temp\build170170107984701884.tmp\PS2.cpp.o
    In file included from PS2.ino:4:0:
    C:\Program Files\arduino-1.6.5-r2\hardware\arduino\avr\cores\arduino/Arduino.h:117:14: error: conflicting declaration 'typedef bool boolean'
    typedef bool boolean;
    ^
    In file included from PS2.ino:1:0:
    C:\Program Files\arduino-1.6.5-r2\libraries\PS2Keyboard/PS2Keyboard.h:46:17: error: 'boolean' has a previous declaration as 'typedef uint8_t boolean'
    typedef uint8_t boolean;
    ^
    Ошибка компиляции.
     
  2. Alex19

    Alex19 Гуру

  3. geher

    geher Гуру

    Согласно выдаче на чистом англицком конфликт объявления типов в разных включаемых файлах.
    По всей видимости проблемы обратной совместимости разных версий Arduino IDE.
    Можно попробовать для начала закомментировать строчку:
    Код (Text):
    typedef uint8_t boolean;
    в C:\Program Files\arduino-1.6.5-r2\libraries\PS2Keyboard/PS2Keyboard.h

    Или откатить IDE до какой-нибудь 1.0.x.