Помогите с кодом - ФОРУМ ДВ Робот dvrobot.ru
Пятница, 20.07.2018, 05:02
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: Serg, GRACH  
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Помогите с кодом (выпадает одна и та же ошибка)
    Помогите с кодом
    Artemka1858Дата: Вторник, 29.10.2013, 04:27 | Сообщение # 1
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 16
    Репутация: 0
    Статус: Offline
    Приветствую. При компиляции ардуино IDE023 выдает ошибки
    Цитата
    sketch_oct28a:81: error: no matching function for call to 'HardwareSerial::HardwareSerial()'
    C:\arduino-0023\hardware\arduino\cores\arduino/HardwareSerial.h:50: note: candidates are: HardwareSerial::HardwareSerial(ring_buffer*, volatile uint8_t*, volatile uint8_t*, volatile uint8_t*, volatile uint8_t*, volatile uint8_t*, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
    C:\arduino-0022\hardware\arduino\cores\arduino/HardwareSerial.h:32: note:                 HardwareSerial::HardwareSerial(const HardwareSerial&)

    Скетч должен заставить ардуино управлять внешними устройствами такими как усилитель и тд через UART порт. Но пока почему то не получается его скомпелировать.
    Вот код

    Цитата
    #include <IRremote.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <Wire.h>
    #include <MeetAndroid.h>

    #define HEATER1 19
    #define HEATER2 41                                                                                                                                                                               

    #define AMP_ON 16
    #define AUDIO_MUTE 17
    #define ONE_WIRE_BUS 25
    const int RECV_PIN = 26;
    #define AUDIO_ON 44
    #define CAM 10

    #define TDA7318_I2C_ADDRESS 0x44
    #define TDA_SW1 0x58
    #define TDA_SW2 0x59
    #define TDA_SW3 0x5A
    #define TDA_SW4 0x5B
    // LM pins
    #define LM_CE 14 //LM7001 PIN3
    #define LM_CL 13 //LM7001 PIN4
    #define LM_DA 12 //LM7001 PIN5
    // LM delay in microsec
    #define LM_DELAY 2

    #define RADIO_MIN_FREQUENCY 880 
    #define RADIO_MAX_FREQUENCY 1080

    #define RADIO_SOURCE 2
    #define MUSIC_SOURCE 3

    DeviceAddress intTempSensor = { 0x28, 0x44, 0x0A, 0xD8, 0x02, 0x00, 0x00, 0x58 };
    DeviceAddress extTempSensor = { 0x28, 0xA8, 0xE4, 0x7D, 0x02, 0x00, 0x00, 0x5C };
    DeviceAddress hlTempSensor = { 0x28, 0x7C, 0xDF, 0xD7, 0x02, 0x00, 0x00, 0x02 };
    DeviceAddress hrTempSensor = { 0x28, 0xB6, 0x1A, 0x7E, 0x02, 0x00, 0x00, 0x98 };

    byte volMap[] = {0x3F,0x3D,0x3B,0x39,0x37,0x35,0x33,0x31,   
                      0x2F,0x2D,0x2B,0x29,0x27,0x25,0x23,0x21,   
                      0x1F,0x1D,0x1B,0x19,0x17,0x15,0x13,0x11,   
                      0x0F,0x0D,0x0B,0x09,0x07,0x05,0x03,0x00};
                              
    byte lfAttMap[] = {0x9F,0x9D,0x9B,0x99,0x97,0x95,0x93,0x91,
                       0x8F,0x8D,0x8B,0x89,0x87,0x85,0x83,0x80};                          

    byte rfAttMap[] = {0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,
                       0xAF,0xAD,0xAB,0xA9,0xA7,0xA5,0xA3,0xA0}; 

    byte lrAttMap[] = {0xDF,0xDD,0xDB,0xD9,0xD7,0xD5,0xD3,0xD1,
                       0xCF,0xCD,0xCB,0xC9,0xC7,0xC5,0xC3,0xC0}; 

    byte rrAttMap[] = {0xFF,0xFD,0xFB,0xF9,0xF7,0xF5,0xF3,0xF1,
                       0xEF,0xED,0xEB,0xE9,0xE7,0xE5,0xE3,0xE0}; 
                                
    byte bassMap[] = {0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x6F,
                      0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68}; 

    byte trebleMap[] = {0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x7F,
                        0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78}; 
                                
    byte currentVolume = 16;
    byte currentHeaterOff1 = 0;
    byte currentHeaterOn1 = 0;
    byte currentHeaterOff2 = 0;
    byte currentHeaterOn2 = 0;
    unsigned long heaterTimer1 = 150000;
    unsigned long heaterTimer2 = 0;

    unsigned long camTimer = 0;

    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);

    IRrecv irrecv(RECV_PIN);

    decode_results results;

    MeetAndroid meetAndroid;

    HardwareSerial Uart = HardwareSerial();

    void setup() {
      Uart.begin(38400); 
      Serial.begin(9600); 
      
      setCallbacks();
      initTempSensors();
      initTda();
      initLM();
      initHeaters();
      initIR();

      pinMode(AMP_ON, OUTPUT);
      pinMode(AUDIO_ON, OUTPUT);
      pinMode(AUDIO_MUTE, OUTPUT);

      pinMode(CAM, INPUT);
    }

    void loop() {
      meetAndroid.receive();
      receiveIR();
      receiveCAM();
      checkHeaters();
    }
    void setCallbacks() {
      meetAndroid.registerFunction(getInternalTemperature, 'A'); //Internal temperature: 1
      meetAndroid.registerFunction(setAudioBalance, 'B'); //Audio balance: 0-15
      meetAndroid.registerFunction(setHeaterOnTemperature1, 'G'); //Heater temp 1 ON: 25-ON, 0-OFF
      meetAndroid.registerFunction(setHeaterOnTemperature2, 'H'); //Heater temp 2 ON: 25-ON, 0-OFF
      meetAndroid.registerFunction(getExternalTemperature, 'E'); //External temperature: 1
      meetAndroid.registerFunction(setAudioBass, 'J'); //Audio bass: 0-14
      meetAndroid.registerFunction(setAudioTreble, 'K'); //Audio treble: 0-14
      meetAndroid.registerFunction(setAudioRearLeftVolume, 'L'); //Audio rear left volume: 0-15
      meetAndroid.registerFunction(setAudioMute, 'M'); //Audio mute: 1-ON, 0-OFF
      meetAndroid.registerFunction(setHeaterOffTemperature1, 'N'); //Heater temp 1 OFF: 25-OFF, 0-OFF
      meetAndroid.registerFunction(setHeaterOffTemperature2, 'O'); //Heater temp 2 OFF: 25-OFF, 0-OFF
      meetAndroid.registerFunction(setRadioFrequency, 'R'); //Radio frequency: (880-1080)-ON, 0-OFF
      meetAndroid.registerFunction(setAudioSource, 'S'); //Audio source: 2-radio, 3-music  
      meetAndroid.registerFunction(setAudioVolume, 'V'); //Audio volume: 0-31
      meetAndroid.registerFunction(setAudioRearRightVolume, 'X'); //Audio rear right volume: 0-15
      meetAndroid.registerFunction(getHeaterTemperature1, 'Y'); //Heater 1
      meetAndroid.registerFunction(getHeaterTemperature2, 'Z'); //Heater 2  


    void initTempSensors() {
      sensors.begin();
      // set the resolution to 9 bit
      sensors.setResolution(intTempSensor, 9);
      sensors.setResolution(extTempSensor, 9);
      sensors.setResolution(hlTempSensor, 9);    
      sensors.setResolution(hrTempSensor, 9);
    }

    void initTda() {
      sendAudioMute(1);
      sendAudioOn(1);
      delay(3000);
      sendAmpOn(1);
      Wire.begin(); // join i2c bus (address optional for master)
      sendAudioVolume(16);
      sendAudioLFAttenuator(15);
      sendAudioRFAttenuator(15);
      sendAudioLRAttenuator(15);
      sendAudioRRAttenuator(15);
      sendAudioSwitch(3);  
      sendAudioBass(7);
      sendAudioTreble(7);
      sendAudioMute(0);
    }

    void initLM() {
      pinMode(LM_CE, OUTPUT);
      pinMode(LM_CL, OUTPUT);
      pinMode(LM_DA, OUTPUT);  
    }

    void initHeaters() {
      pinMode(HEATER1, OUTPUT);
      pinMode(HEATER2, OUTPUT);
    }

    void initIR() {
      irrecv.enableIRIn();
      irrecv.blink13(true);  
    }

    void receiveIR() {
      if (irrecv.decode(&results)) {
        char buf[50];
        sprintf(buf, "IR:%u", results.value);
        meetAndroid.send(buf);
        irrecv.resume(); 
      }  
    }  
      
    void receiveCAM() {
      int value = digitalRead(CAM);
      if (value == 1 && camTimer == 0) {
        camTimer = 3000;
        meetAndroid.send("CAM:1");
      }
      if (camTimer > 0) {
        camTimer--;  
      }
    }  
      
    void checkHeaters() {
      if (currentHeaterOff1 == 0 && currentHeaterOn1 == 0) {
        //Serial.println("HEATER1: OFF");
        digitalWrite(HEATER1, LOW);    
      }
      else {  
        if (heaterTimer1 == 300000) {
          heaterTimer1 = 0;
          
          sensors.requestTemperaturesByAddress(hlTempSensor);
          int tempL = sensors.getTempC(hlTempSensor);
          if (tempL != -127) {
            if (tempL >= currentHeaterOff1) {
              Serial.println("HEATER1: OFF");
              digitalWrite(HEATER1, LOW); 
            } 
            if (tempL <= currentHeaterOn1) {
              Serial.println("HEATER1: ON");
              digitalWrite(HEATER1, HIGH); 
            } 
          }  
        }
        heaterTimer1++;
      }  
      if (currentHeaterOff2 == 0 && currentHeaterOn2 == 0) {
        //Serial.println("HEATER2: OFF");
        digitalWrite(HEATER2, LOW);    
      }
      else {  
        if (heaterTimer2 == 300000) {
          heaterTimer2 = 0;
          sensors.requestTemperaturesByAddress(hrTempSensor);
          int tempR = sensors.getTempC(hrTempSensor);
          if (tempR != -127) {
            if (tempR >= currentHeaterOff2) {
              Serial.println("HEATER2: OFF");
              digitalWrite(HEATER2, LOW); 
            } 
            if (tempR <= currentHeaterOn2) {
              Serial.println("HEATER2: ON");
              digitalWrite(HEATER2, HIGH); 
            }  
          }  
        } 
        heaterTimer2++;
      }    
    }  
      
    void writeI2c(byte address, byte value) {
      Wire.beginTransmission(address); 
      Wire.send(value);
      Wire.endTransmission();  
    }

    void sendAudioMute(byte value) {
      digitalWrite(AUDIO_MUTE, value == 1 ? HIGH : LOW);
    }

    void sendAmpOn(byte value) {
      digitalWrite(AMP_ON, value == 1 ? HIGH : LOW);
    }

    void sendAudioOn(byte value) {
      digitalWrite(AUDIO_ON, value == 1 ? HIGH : LOW);
    }

    void sendAudioVolume(byte value) {
      if (value > 31) return;
      currentVolume = value;
      writeI2c(TDA7318_I2C_ADDRESS, volMap[value]);   


    void sendAudioLFAttenuator(byte value) {   
      if (value > 15) return;
      writeI2c(TDA7318_I2C_ADDRESS, lfAttMap[value]);   
    }

    void sendAudioRFAttenuator(byte value) {   
      if (value > 15) return;
      writeI2c(TDA7318_I2C_ADDRESS, rfAttMap[value]);   
    }

    void sendAudioLRAttenuator(byte value) {   
      if (value > 15) return;
      writeI2c(TDA7318_I2C_ADDRESS, lrAttMap[value]);   
    }

    void sendAudioRRAttenuator(byte value) {   
      if (value > 15) return;
      writeI2c(TDA7318_I2C_ADDRESS, rrAttMap[value]);   
    }

    void sendAudioBass(byte value) {   
      if (value > 14) return;   
      writeI2c(TDA7318_I2C_ADDRESS, bassMap[value]);   
    }

    void sendAudioTreble(byte value) {   
      if (value > 14) return;   
      writeI2c(TDA7318_I2C_ADDRESS, trebleMap[value]);   
    }

    void sendAudioSwitch(byte value) {
      switch (value) {
        case 1:
          writeI2c(TDA7318_I2C_ADDRESS, TDA_SW1);   
          break;
        case 2:
          writeI2c(TDA7318_I2C_ADDRESS, TDA_SW2);   
          break;
        case 3:
          writeI2c(TDA7318_I2C_ADDRESS, TDA_SW3);   
          break;
        case 4:
          writeI2c(TDA7318_I2C_ADDRESS, TDA_SW4);   
          break;      
      }  


    void sendRadioFrequency(int frequency, boolean power) {
      frequency += 107;
      digitalWrite(LM_CE, HIGH);
      writeLM(byte(frequency));
      writeLM(byte(frequency >> 8));
      writeLM((power == true) ? 135 : 71);
      digitalWrite(LM_CE, LOW);
    }

    void writeLM(byte bytes) {
      int d; 
      int d1;
      delayMicroseconds(LM_DELAY);
      for (int x=0; x <= 7; x++) {
      // Set DA
        d = bytes >> 1;
        d1 = d << 1;
        digitalWrite(LM_DA, bytes == d1 ? LOW : HIGH);
        // Make CL  
        digitalWrite(LM_CL, HIGH);
        delayMicroseconds(LM_DELAY);
        digitalWrite(LM_CL, LOW);
        delayMicroseconds(LM_DELAY);  
        bytes = bytes >> 1;    
      }
      delayMicroseconds(LM_DELAY);


    void getInternalTemperature(byte flag, byte numOfValues) {
      sensors.requestTemperaturesByAddress(intTempSensor);
      float tempC = sensors.getTempC(intTempSensor);
      if (tempC == -127.00) {
        tempC = 0;
      }  
      char buf[50];
      sprintf(buf, "IT:%u", (int)tempC);
      meetAndroid.send(buf);
    }

    void getExternalTemperature(byte flag, byte numOfValues) {
      sensors.requestTemperaturesByAddress(extTempSensor);
      float tempC = sensors.getTempC(extTempSensor);
      if (tempC == -127.00) {
        tempC = 0;
      }  
      char buf[50];
      sprintf(buf, "ET:%u", (int)tempC);
      meetAndroid.send(buf);
    }

    void setAudioBalance(byte flag, byte numOfValues) {
      int value = meetAndroid.getInt();
      sendAudioLFAttenuator(value);
      sendAudioRFAttenuator(15 - value);
    }

    void setHeaterOnTemperature1(byte flag, byte numOfValues) {
      currentHeaterOn1 = meetAndroid.getInt();    
    }

    void setHeaterOffTemperature1(byte flag, byte numOfValues) {
      currentHeaterOff1 = meetAndroid.getInt();    
    }

    void setHeaterOnTemperature2(byte flag, byte numOfValues) {
      currentHeaterOn2 = meetAndroid.getInt();    
    }

    void setHeaterOffTemperature2(byte flag, byte numOfValues) {
      currentHeaterOff2 = meetAndroid.getInt();    
    }

    void setAudioBass(byte flag, byte numOfValues) {
      sendAudioBass(meetAndroid.getInt());
    }

    void setAudioTreble(byte flag, byte numOfValues) {
      sendAudioTreble(meetAndroid.getInt());
    }

    void setAudioRearLeftVolume(byte flag, byte numOfValues) {
      sendAudioLRAttenuator(meetAndroid.getInt());
    }

    void setAudioMute(byte flag, byte numOfValues) {
      sendAudioMute(meetAndroid.getInt());
    }

    void setRadioFrequency(byte flag, byte numOfValues) {
      int frequency = meetAndroid.getInt();
      if (frequency == 0) {
        sendRadioFrequency(frequency, false);
        sendAudioSwitch(MUSIC_SOURCE);
      }
      else if (frequency >= RADIO_MIN_FREQUENCY && frequency <= RADIO_MAX_FREQUENCY){
        sendRadioFrequency(frequency, true);
        sendAudioSwitch(RADIO_SOURCE);
      }  
    }

    void setAudioSource(byte flag, byte numOfValues) {
      sendAudioSwitch(meetAndroid.getInt());
    }

    void setAudioVolume(byte flag, byte numOfValues) {
      sendAudioVolume(meetAndroid.getInt());
    }

    void setAudioRearRightVolume(byte flag, byte numOfValues) {
      sendAudioRRAttenuator(meetAndroid.getInt());
    }

    void getHeaterTemperature1(byte flag, byte numOfValues) {
      sensors.requestTemperaturesByAddress(hlTempSensor);
      float tempC = sensors.getTempC(hlTempSensor);
      if (tempC == -127.00) {
        tempC = 0;
      }  
      char buf[50];
      sprintf(buf, "LT:%u", (int)tempC);
      meetAndroid.send(buf);
    }

    void getHeaterTemperature2(byte flag, byte numOfValues) {
      sensors.requestTemperaturesByAddress(hrTempSensor);
      float tempC = sensors.getTempC(hrTempSensor);
      if (tempC == -127.00) {
        tempC = 0;
      }  
      char buf[50];
      sprintf(buf, "RT:%u", (int)tempC);
      meetAndroid.send(buf);
    }
     

    Почему вылазит данная ошибка ? Хотя все необходимые библиотеки у меня установленны
     
    SergДата: Вторник, 29.10.2013, 18:34 | Сообщение # 2
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    А поподробнее... Зачем два UART ?
     
    Artemka1858Дата: Вторник, 29.10.2013, 21:59 | Сообщение # 3
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 16
    Репутация: 0
    Статус: Offline
    Цитата Serg ()
    А поподробнее... Зачем два UART ?
    В задачу arduino входит связать программную оболочкукомпьютера с магнитолой,. Для передачи-приема данных был использован второй  UART первый  используетсяя для отладки
     
    SergДата: Среда, 30.10.2013, 19:14 | Сообщение # 4
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Ну так отключите этой второй UART. Как раз из-за него ошибка. 
    А разве компьютер не в состоянии сам управлять магнитолой?
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Помогите с кодом (выпадает одна и та же ошибка)
    • Страница 1 из 1
    • 1
    Поиск:

    ДВ Робот - Чат