Buenas tardes,
Soy nuevo en el foro y escribo por una pequeña duda, o eso creo, para la que no encuentro solución. Estoy trabajando en un proyecto consistente en un sistema de adquisición de datos. Para ello uso varios sensores, una tarjeta SD, un reloj RTC, un LED RGB, etc. El modelo de microntroladora es Arduino UNO rev3 y el IDE que estoy usando es la versión 1.0.5.
Me encuentro en un punto en el que tengo que avisar con un LED cuando se da una circunstancia determinada. En principio es algo muy fácil que no debería entrañar mayor problema. Conecté el LED RGB al pin 13 (el que lleva la resistencia interna conectada) e incluí el código del ejemplo "Blink" para hacer una primera prueba. Mi sorpresa fue que no funcionaba. Entonces probé el programa de ejemplo solo y comprobé que si funcionaba perfectamente. La estrategia que seguí fue ir aislando código hasta quedarme con el causante del error. Pues bien, he descubierto que el problema viene con el SD.begin de la parte de la tarjeta SD. Parece que entra en conflicto con las instrucciones para el encendido del LED. Os reflejo el código aislado que da error.
#include <SD.h>
// Variable global para la tarjeta SD
const int chipSelect = 10; // Pin CS para la tarjeta Arduino. Hay que habilitarlo en modo salida para que funcione
//Variable global para el uso de LEDs
int led_rpm = 13;
void setup()
{
Serial.begin(57600);
Serial.print("Initializing SD card..."); // Asegurarse de configurar el pin 10 en modo salida, incluso aunque no se use. Sino no funciona la tarjeta SD.
pinMode(chipSelect, OUTPUT);
// Comprueba si la tarjeta existe y puede ser inicializada:
[code] if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
}
else Serial.println("card initialized.");
// Inicialización del pin led_rpm como salida
pinMode(led_rpm, OUTPUT);
}
void loop()
{
// Bucle para encender un led si se llega a sobrepasar las rpm por encima de las establecidas
digitalWrite(led_rpm,HIGH); // Enciende el LED
delay(1000);
digitalWrite(led_rpm,LOW); // Apaga el LED
delay(1000);
}
[/code]
Si hacéis una prueba y quitáis esta parte de código:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
}
else Serial.println("card initialized.");
...funciona perfectamente.
Agradecería cualquier ayuda que podáis darme. Gracias de antemano.
Saludos,