Member 14082063 Ответов: 2

'String' не был объявлен в этой области ошибка


Я знаю, что исправление, вероятно, очень простое, но в следующем коде, внизу вы увидите
return string(range);
Для этого я получаю ошибку, которая говорит: error: 'string' не был объявлен в этой области.

Как мне это исправить ????

#include <Wire.h>
#include <Adafruit_VL6180X.h>

Adafruit_VL6180X vl = Adafruit_VL6180X();


//sets if armed
boolean alarmState = false;
//uint8_t change = null;
void setup() {
    for(int i = 0; i < 4; i++){
    pinMode(i, OUTPUT);
    
    }
  Serial.begin(115200);
  
  // wait for serial port to open on native usb devices
  while (!Serial) {
    delay(1);
  }
  
  Serial.println("Adafruit VL6180x test!");
  if (! vl.begin()) {
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop() {
   for(int i = 0; i < 4; i++){
   vl = Adafruit_VL6180X();
    digitalWrite(i, HIGH);  sensor(); delay(100);  digitalWrite(i, LOW);
    }
 
}

String sensor(){
  float lux = vl.readLux(VL6180X_ALS_GAIN_5);

  Serial.print("Lux: "); Serial.println(lux);
  
  uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

  if (status == VL6180X_ERROR_NONE) {
    Serial.print("Range: "); Serial.println(range);
  }

  // Some error occurred, print it out!
  
  if  ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
    Serial.println("System error");
  }
  else if (status == VL6180X_ERROR_ECEFAIL) {
    Serial.println("ECE failure");
  }
  else if (status == VL6180X_ERROR_NOCONVERGE) {
    Serial.println("No convergence");
  }
  else if (status == VL6180X_ERROR_RANGEIGNORE) {
    Serial.println("Ignoring range");
  }
  else if (status == VL6180X_ERROR_SNR) {
    Serial.println("Signal/Noise error");
  }
  else if (status == VL6180X_ERROR_RAWUFLOW) {
    Serial.println("Raw reading underflow");
  }
  else if (status == VL6180X_ERROR_RAWOFLOW) {
    Serial.println("Raw reading overflow");
  }
  else if (status == VL6180X_ERROR_RANGEUFLOW) {
    Serial.println("Range reading underflow");
  }
  else if (status == VL6180X_ERROR_RANGEOFLOW) {
    Serial.println("Range reading overflow");
  }
return string(range);
  }
void setAlarm(boolean state){
  alarmState = state;
}


Что я уже пробовал:

Ссылка Arduino уроки на область видимости переменной плюс Arduino и форумы и StackOverflow.

KarstenK

Компилятор сказал вам правду. Вам нужно изучить синтаксис языка. Это позволит вам сэкономить много времени.

2 Ответов

Рейтинг:
18

MadMyche

Если у вас продолжают возникать проблемы, пожалуйста, ответьте на ответы/комментарии/вопросы в вашем оригинальном посте со вчерашнего дня:
Я многократно повторяю одну и ту же ошибку - "не был объявлен в этой области, что мне делать?[^]


Member 14082063

Спасибо, что нашли время помочь мне, я действительно ценю это, и этот вопрос был решен.

Рейтинг:
0

Member 14899485

Сделайте char строковым значением.
char =*ваша ценность;