HOla que tal , estoy trabajando con un arduino mega y una pantalla lcd tft de 2,4.
Cuando la conecto al arduino uno .trabajo con imagenes de manera excelente ,
Ahora para trabajar con el mega ,baje otras librerias y anda todo bien.menos la carga de imagenes,
Siempre me salta este error, hasta con el programa de ejemplo que viene con las librerias
no matching function for call to 'SDLib::SDClass::begin(int, int, int, int)'
que podra ser ?
Porque bajaste otras librerías?
Desde el momento que bajaste otra librería ya no es el mismo caso que funcionaba con el UNO.
Supongo que tiene algun dispositivo SPI asi que solo cambia los pines que corresponden al SPI en el UNO o en el MEGA y nada mas.
MOSI, MISO, SLK y CS que puede ser cualquier pin.
son exactamente los mismo pines donde encaja en el mega como en el uno. . y funcionan perfecto. solo tienen el incoveniente de cuando quiero usar la sd
de aca saque las librerias electronicavm
vos que me recomendas ? te adjunto la primera parte de los programas donde define todo
arduino uno
#include <Adafruit_GFX.h> // Libreria de graficos
#include <Adafruit_TFTLCD.h> // Libreria de LCD
#include <SD.h> // Libreria de tarjeta SD
#include <SPI.h> // Libreria bus SPI
#define LCD_CS A3 // Definimos los pines del LCD
#define LCD_CD A2 // para poder visualizar elementos graficos
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
// Los pines del puerto SPI vienen configurados por libreria, por lo que
// solamente debemos colocar el pin correspondiente al Chip Select del
// bus SPI correspondiente a la conexion con la tarjeta SD
#define SD_CS 10
// En la tarjeta SD debemos colocar imagenes en formato BMP de 24 Bits!
// Otro tipo de formato de imagen no se puede visualizar por pantalla.
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia LCD
void setup()
{
Serial.begin(9600); // Iniciamos el puerto serie para comprobar
// la comunicacion con la tarjeta microSD
tft.reset();
tft.begin(0x9341); // Iniciamos el LCD especificando el controlador ILI9341.
Serial.print(F("Inicializando tarjeta SD..."));
if (!SD.begin(SD_CS)) // Si se produce un error al intentar acceder
{ // a la tarjeta SD, lo mostramos por el Serial Monitor
Serial.println(F("Error!"));
return;
}
Serial.println(F("OK!"));
}
void loop()
arduino mega
#define DEBUG
#include <Adafruit_GFX.h> // Libreria de graficos
#include <Adafruit_TFTLCD.h> // Libreria de LCD
#include <SD.h> // Libreria de tarjeta SD
#include <SPI.h> // Libreria bus SPI
#define LCD_CS A3 // Definimos los pines del LCD
#define LCD_CD A2 // para poder visualizar elementos graficos
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
#if defined __AVR_ATmega2560__ // Para Arduino Uno/Duemilanove, conectamos la tarjeta SD en los pines del puerto SPI
#define SD_SCK 13 // que se correspondencon los pines MOSI -> 11, MISO -> 12 y SCK -> 13
#define SD_MISO 12
#define SD_MOSI 11
#endif
// Chip Select del bus SPI correspondiente a la conexion con la tarjeta SD
#define SD_CS 10
// En la tarjeta SD debemos colocar imagenes en formato BMP de 24 Bits!
// Otro tipo de formato de imagen no se puede visualizar por pantalla.
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, A4); // Instancia LCD
void setup()
{
tft.reset();
tft.begin(0x9341); // Iniciamos el LCD especificando el controlador ILI9341.
// (Otros controladores disponibles: HX8357D, HX8347G, ILI9328, ILI9325)
tft.fillScreen(0); // Pintamos la pantalla de negro para el fondo.
#if defined __AVR_ATmega2560__
if (!SD.begin(SD_CS, SD_MOSI, SD_MISO, SD_SCK ))
{
tft.println(F("failed!")); // Definimos los pines de la tarjeta SD para MEGA
return;
}
#else
if (!SD.begin(SD_CS)) {
tft.println(F("failed!"));
return;
}
#endif
}
void loop()
La supuesta librería SD para Arduino Mega es exactamente el mismo que el que viene en la IDE.
La forma en que se inicializa no cambia; los pines MISO, MOSI, SCK no se pueden cambiar a menos que sea SPI por software.
El código para Arduino Uno debería funcionar también para el Mega.
Si no es eso, ¿entonces cuál es el problema?
usando la librearia del uno , con la mega no funciona nada en la pantalla. fue lo primero que probe, y me puse a buscar y habia librerias espercificas para la mega. fijate que arriba puse el link
lauruiz:
usando la librearia del uno , con la mega no funciona nada en la pantalla.
¿No pensaste tal vez en cómo está conectado el bus SPI en ambas placas?
En el Arduino Uno: 11 MOSI, 12 MISO, 13 SCK
En el Arduino Mega: 51 MOSI, 50 MISO, 52 SCK
El puerto ICSP es lo único que tienen en común.
estan bien conectadas . de lo contrario no funcionaria nada....Pero a mi si me funciona. solo falla el programa de la sd . que salta el error cuando lo verificas. hay algo mal ahi. y no se lo que es
lauruiz:
solo falla el programa de la sd . que salta el error cuando lo verificas.
#if defined __AVR_ATmega2560__
if (!SD.begin(SD_CS, SD_MOSI, SD_MISO, SD_SCK ))
{
tft.println(F("failed!")); // Definimos los pines de la tarjeta SD para MEGA
return;
}
#else
if (!SD.begin(SD_CS)) {
tft.println(F("failed!"));
return;
}
#endif
Si la librería no cambia en absoluto, la condicional de compilador (#if defined AVR_ATmega2560) no tiene ningún sentido.
El error de compilación se debe a que la clase SDClass (tipo de dato de la variable SD) no tiene definida ninguna función con la "firma" begin(int, int, int, int). Solo tiene una con la firma begin(uint8_t) (¡es la de siempre!).
Lo correcto sería simplemente:
if (!SD.begin(SD_CS)) {
tft.println(F("failed!"));
return;
}
no me sirvio esa solucion. el programa copila. pero en la pantalla me figura que no se encontro la imagen
¿La tarjeta se inicializa? ¿Verificaste que la ruta/nombre de archivo coincidan? ¿El archivo supera los 8 caracteres en el nombre (sin contar el punto y la extensión de tres caracteres)?
es la misma imagen ,con el mismo nobre que usaba cuando trabajaba con el arduino uno. solo que aca no funciona con la solucion que me diste., si borro esas lineas que decis vos ..directamente ni copila
lauruiz:
solo que aca no funciona con la solucion que me diste., si borro esas lineas que decis vos ..directamente ni copila
¿Borrar qué líneas? Yo lo que sugería, es que la tarjeta SD se inicializa de igual manera tanto en Arduino Uno como en Mega
bueno . habia que borrar unas lineas no mas.. pero igual no funciona.