При попытке загрузить в ардуино уно код, произошла ошибка.

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

  1. rrrrrrrr8

    rrrrrrrr8 Нуб

    Вот код. В чем причина ошибки?
    #include<MeetAndroid.h>

    const int EnablePin1 = 3;
    const int EnablePin2 = 6;
    const int Motor_1_A = 2;
    const int Motor_1_B = 4;
    const int Motor_2_A = 5;
    const int Motor_2_B = 7;
    float data[3] = {0};
    int intdata[3] = {0};
    int i = 1;


    MeetAndroid meetAndroid(error);

    void error(uint8_t flag, uint8_t values)
    {
    Serial.print("ERROR: ");
    Serial.print(flag);
    }


    void setup() {
    Serial.begin(9600);
    Serial.println("\t\t\t.----------------------.");
    Serial.println("\t\t\t| Starting Up.. |");
    Serial.println("\t\t\t'----------------------'");
    pinMode(EnablePin1, OUTPUT);
    pinMode(EnablePin2, OUTPUT);
    pinMode(Motor_1_A, OUTPUT);
    pinMode(Motor_1_B, OUTPUT);
    pinMode(Motor_2_A, OUTPUT);
    pinMode(Motor_2_B, OUTPUT);
    delay(1000);
    meetAndroid.registerFunction(floatValues, 'A');


    }

    void loop()
    {
    meetAndroid.receive();
    }
    void floatValues(byte flag, byte numOfValues)
    {
    meetAndroid.getFloatValues(data);
    for (int i=0; i<3;i++)
    {
    meetAndroid.send(data);
    }
    if (-10<=data[0]<=10) // This is for Forward/Reverse
    {

    intdata[0] = int(data[0]);
    intdata[0] = intdata[0] * 24;
    if (data[0] <= -2)
    {
    intdata[0] = abs(intdata[0]);
    digitalWrite(Motor_1_A, HIGH);
    digitalWrite(Motor_2_A, HIGH);
    digitalWrite(Motor_1_B, LOW);
    digitalWrite(Motor_2_B, LOW);
    analogWrite(EnablePin1, intdata[0]);
    analogWrite(EnablePin2, intdata[0]);
    }
    else if (data[0] >= 2)
    {
    digitalWrite(Motor_1_A, LOW);
    digitalWrite(Motor_2_A, LOW);
    digitalWrite(Motor_1_B, HIGH);
    digitalWrite(Motor_2_B, HIGH);
    analogWrite(EnablePin1, intdata[0]);
    analogWrite(EnablePin2, intdata[0]);
    }
    else if (-1<=data[0]<=1)
    {
    digitalWrite(Motor_1_A, LOW);
    digitalWrite(Motor_2_A, LOW);
    digitalWrite(Motor_1_B, LOW);
    digitalWrite(Motor_2_B, LOW);
    digitalWrite(EnablePin1, LOW);
    digitalWrite(EnablePin2, LOW);
    }
    }


    if (-10<=data[1]<=10) // This is for Turn Left/Turn Right
    {
    if (data[1] <= -2)
    {
    digitalWrite(Motor_1_A, HIGH);
    digitalWrite(Motor_2_B, HIGH);
    digitalWrite(Motor_1_B, LOW);
    digitalWrite(Motor_2_A, LOW);
    analogWrite(EnablePin1, intdata[0]);
    analogWrite(EnablePin2, intdata[0]);
    }
    else if (data[1] >= 2)
    {
    digitalWrite(Motor_1_A, LOW);
    digitalWrite(Motor_2_B, LOW);
    digitalWrite(Motor_1_B, HIGH);
    digitalWrite(Motor_2_A, HIGH);
    analogWrite(EnablePin1, intdata[0]);
    analogWrite(EnablePin2, intdata[0]);
    }
    else if (-1<=data[1]<=1)
    {
    digitalWrite(Motor_1_A, LOW);
    digitalWrite(Motor_2_A, LOW);
    digitalWrite(Motor_1_B, LOW);
    digitalWrite(Motor_2_B, LOW);
    digitalWrite(EnablePin1, LOW);
    digitalWrite(EnablePin2, LOW);
    }
    }
    }

    Сообщение о ошибке:
    Arduino: 1.6.5 (Windows 7), Плата"Arduino Uno"

    Изменена опция сборки, пересобираем все

    In file included from sketch_jun27a.ino.ino.ino:1:0:
    C:\Users\Серафим\Desktop\arduino-1.6.5-r2\libraries\MeetAndroid/MeetAndroid.h:104:7: error: conflicting return type specified for 'virtual void MeetAndroid::write(uint8_t)'
    void write(uint8_t);
    ^
    In file included from C:\Users\Серафим\Desktop\arduino-1.6.5-r2\libraries\MeetAndroid/MeetAndroid.h:43:0,
    from sketch_jun27a.ino.ino.ino:1:
    C:\Users\Серафим\Desktop\arduino-1.6.5-r2\hardware\arduino\avr\cores\arduino/Print.h:48:20: error: overriding 'virtual size_t Print::write(uint8_t)'
    virtual size_t write(uint8_t) = 0;
    ^
    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    "Отображать вывод во время компиляции"
    включено в Файл > Настройки
     
  2. geher

    geher Гуру

    Похоже, проблема в библиотеке. Возможно, вопрос можно решить переходом на более старую версию Arduino IDE.
    Сдается мне, суть проблемы в том, что MeetAndroid наследует от Print, но при переопределении метода изменили возвращаемый тип, что компилятору и не понравилось.