tarjeta subir solucion placa para genuino error compilando compilado compilación arduino

subir - Error Arduino: ¿no nombra un tipo?



exit status 1 error compilando para la tarjeta arduino nano (6)

Los dos que mencionas en tu comentario son esenciales. ''no nombra un tipo'' solo significa que no hay definición para ese identificador visible para el compilador. Si hay errores en la biblioteca LCD que mencionas, entonces hay que abordarlos, ¡omitir el #include definitivamente no lo solucionará!

Dos notas de la experiencia que pueden ser útiles:

  1. Debe agregar todos los #includes al boceto principal, independientemente de si están incluidos en otro #include.

  2. Si agrega archivos a la carpeta de la biblioteca, Arduino IDE se debe reiniciar antes de que esos nuevos archivos sean visibles.

He escrito una biblioteca, pero tengo un problema de error, no nombra un tipo. Probé todo, busqué un par de horas y no tuve suerte. La biblioteca se coloca en la carpeta "libraries" de la carpeta arduino sketch. ¡¡¡Por favor ayuda!!! Estoy usando OSX, pero el mismo problema ocurre en Windows también.

Este es el archivo de encabezado de la biblioteca:

#ifndef OpticalSensor_h #define OpticalSensor_h #include <Arduino.h> #include <SD.h> #include <Wire.h> #include <Adafruit_MCP23017.h> #include <Adafruit_RGBLCDShield.h> #include <String.h> class OpticalSensor { public: OpticalSensor(int analogPort); void LCDInit(int columns, int rows); void SerialInit(int bitRate); void SDInit(); double& ReadFromAnalogPort(); void SDCreateFile(String fileName); void SDDeleteFile(String fileName); void SDWriteToFile(String fileName); void SDStreamToFile(String Text); void SDOpenFileToStream(String fileName); private: int _analogPort; bool _displayFlag; Adafruit_RGBLCDShield _lcd; File _MainRecFile; double _voltage; void _LCDClearAll(); void _LCDWriteInTwoRows(String row1, String row2); void _DelayAndClearLCD(bool returnStatus); }; #endif

Este es el archivo .cpp de la biblioteca:

#include <OpticalSensor.h> Adafruit_RGBLCDShield _lcd; File _MainRecFile; double _voltage; OpticalSensor::OpticalSensor(int analogPort) { _analogPort = analogPort; } void OpticalSensor::LCDInit(int columns, int rows) { _lcd = Adafruit_RGBLCDShield(); _lcd.begin(columns,rows); } void OpticalSensor::SerialInit(int bitRate) { Serial.begin(bitRate); _bitRate = bitRate; while(!Serial) { //wait until serial is not open } } void OpticalSensor::SDInit() { // On the Ethernet Shield, CS is pin 4. It''s set as an output by default. // Note that even if it''s not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(10, OUTPUT); //check if SD can be found and initialized. Print also message to //Serial if initialized and to _lcd if initialized. if(!SD.begin(4)) { if(Serial){ Serial.println("Initialization failed!"); } if(_lcd){ _lcd.print("Init failed!"); } _DelayAndClearLCD(true); } else { if(Serial) { Serial.println("Initialization done!"); } if(_lcd) { lcd.print("Init done!"); } _DelayAndClearLCD(false); } } void OpticalSensor::SDCreateFile(String fileName) { //check if file allready exists, if not it creates one //and writes apropriate response to //lcd and Serial if they are initialized. if(SD.exists(fileName)) { if(Serial) { Serial.println(fileName + " already exists!"); } if(_lcd) { _LCDWriteInTwoLines(fileName,"already exists!"); } _DelayAndClearLCD(false); } else { if(Serial) { Serial.println(fileName + "Creating file " + fileName + "..."); } if(_lcd) { _LCDWriteInTwoLines("Creating file", fileName); } _MainRecFile = SD.open(fileName + ".txt", FILE_WRITE); _MainRecFile.close(); _DelayAndClearLCD(false); //check if file was created successffully and print apropriate response //to lcd and Serial if they are initialized if(SD.exists(fileName + ".txt")) { if(Serial) { Serial.println(fileName + ".txt" + " created successffully!"); } if(_lcd) { _LCDWriteInTwoLines(fileName + ".txt", "created!"); } _DelayAndClearLCD(false); } else { if(Serial) { Serial.println("error: failed to create file!"); } if(_lcd) { _LCDWriteInTwoLines("error: failed to","create file!"); } _DelayAndClearLCD(false); } } } //delete file from SD card void OpticalSensor::SDDeleteFile(String fileName) { } //open file, write data to it, and close file after. void OpticalSensor::SDWriteToFile(String fileName, String Text) { _MainRecFile = SD.open(fileName + ".txt", FILE_WRITE); _MainRecFile.println(Text); _MainRecFile.close(); } //Open file to stream data to it. void OpticalSensor::SDOpenFileToStream(String fileName) { _MainRecFile = SD.open(fileName + ".txt", FILE_WRITE); } //Write data to file while file is open. //Notice that you can stream data only to one file at a time!!! //For instance, if you have two sensors that you want to //write data to two different files, you have to use SDWriteToFile //function!!! void OpticalSensor::SDStreamToFile(String Text) { if(_MainRecFile) { _MainRecFile.println(Text); } } //close file that you streamed data too. void OpticalSensor::SDCloseStreaming(String fileName) { _MainRecFile.close(); } //clear entire LCD void OpticalSensor::_LCDClearAll() { _lcd.clear(); _lcd.setCursor(0,0); } void OpticalSensor::_LCDWriteInTwoRows(String row1, String row2) { //write first String in row1 _lcd.print(row1); //set cursor to the beginning of row 2 _lcd.setCursor(0,1); //write second String to row 2 _lcd.print(row2); } void OpticalSensor::_DelayAndClearLCD(bool returnStatus) { //if Serial or _lcd are initialized, delay for 2 seconds //and clear LCD if(Serial || _lcd) { delay(2000); if(_lcd) _LCDClearAll(); } //terminate if(bool == true) { return; } } double& ReadFromAnalogPort() { _voltage = analogRead(_analogPort); return _voltage; }

Y este es el archivo .ino donde se incluye la biblioteca:

#include <OpticalSensor.h> OpticalSensor sensor(0); void setup() { sensor.LCDInit(16,2); sensor.SerialInit(9600); sensor.SDInit(); sensor.SDCreateFile("test1"); sensor.SDOpenFileToStream("test1"); } void loop() { }

este es el error:

En el archivo incluido en Test_OpticalSensorLib.ino: 1: /Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.h:34: error: ''Adafruit_RGBLCDShield'' no nombra un tipo / Users / gaspersladic / Documents / Arduino / libraries / OpticalSensor / OpticalSensor.h: 35: error: ''File'' no nombra un tipo


Obtuve el does not name a type error de does not name a type al instalar la biblioteca de NeoMatrix.

Solución: los archivos .cpp y .h deben estar en la carpeta superior cuando los copie, por ejemplo:

myArduinoFolder/libraries/Adafruit_NeoMatrix/Adafruit_NeoMatrix.cpp

Cuando utilicé el programa de descompresión predeterminado de Windows, anidaba el contenido dentro de otra carpeta:

myArduinoFolder/libraries/Adafruit_NeoMatrix/Adafruit_NeoMatrix/Adafruit_NeoMatrix.cpp

Moví los archivos, así que fue:

myArduinoFolder/libraries/Adafruit_NeoMatrix/Adafruit_NeoMatrix.cpp

Esto solucionó el does not name a type problema de does not name a type .


No sé si este es tu problema, pero fue mío.

La configuración vacía () no nombra un tipo

PERO

la configuración de vacío () está bien.

Descubrí que el boceto que copié para otro proyecto estaba lleno de letras de "caso incorrecto". Onc efixed, funcionó sin problemas. texto enfatizado


Por lo general, la sintaxis del archivo de encabezado comienza con la letra mayúscula. Encontré ese código escrito todo en una letra más pequeña.

#ifndef DIAG_H #define DIAG_H #endif


Lo único que tienes que hacer es agregar esta línea a tu boceto

#include <SPI.h>

antes #include <Adafruit_MAX31855.h> .


Más recientemente, descubrí que otros factores también causarán este error. Tenía un AES.h, AES.cpp que contenía una clase AES y me dio el mismo error inútil. Solo cuando cambié el nombre a Encryption.h, Encryption.cpp y Encryption como nombre de clase, de repente comenzó a funcionar. No hubo otros cambios de código.