I already have connected ethernet and usb host both on arduino mega, but i need to add a sd card write logs and store information
first i had had the usb and ethernet trouble because, both cards uses the same pin SS 10, i solved that by change 10 to 6 in usb host and it works perfectly but when i try to read sd card inmediatly throws an error
#include <hidboot.h>
#include <usbhub.h>
#include <Ethernet.h>
#include <SD.h>
#include <SPI.h>
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#define CHAR_ESC "\x1B"
#define pSd 4
#define pUsb 6
#define pEth 10
EthernetClient cliente;
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0xF3, 0x01}; // Direccion mac del ethernet shield
IPAddress ip(192, 168, 1, 19); // Direccion ip del ethernet shield
IPAddress myDns(192, 168, 1, 1); // Direccion dns
IPAddress gate(192, 168, 1, 1); // Direccion gateway
IPAddress mask(255, 255, 255, 0); // Direccion subred
IPAddress servidor(192, 168, 1, 10); // Direccion del servidor
String _cadena = "";
int _indice1 = 0, _indice2 = 0;
String _v0 = "", _v1 = "", _v2 = "", _v3 = "", _v4 = "";
String _v5 = "", _v6 = "", _v7 = "", _v8 = "", _v9 = "";
String _v10 = "", _v11 = "", _v12 = "", _v13 = "", _v14 = "";
String _v15 = "", _v16 = "";
int _v17 = 0;
String _tic = "", _cam = "", _alz = "";
int _imp = 0, _cas = 0, _bas = 0;
long _bru = 0;
boolean _ade = false;
long _tiempoEstado = 0;
boolean estadoTicket = false, estadoCamion = false, estadoAlzadora = false;
boolean estadoOtros = false, estadoChecar = false, estadoPeso = false;
boolean estadoPantalla = true;
String _dato = "";
boolean _lectura = false;
class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key);
protected:
virtual void OnControlKeysChanged(uint8_t before, uint8_t after);
virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyUp (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};
USB Usb;
USBHub Hub(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD | HID_PROTOCOL_KEYBOARD> HidComposite(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb);
uint32_t next_time;
KbdRptParser KbdPrs;
void setup()
{
Serial.begin(57600);
Serial1.begin(9600, SERIAL_7E1);
Serial2.begin(2400);
Serial3.begin(2400);
delay(200);
pinMode(pSd, OUTPUT);
pinMode(pEth, OUTPUT);
pinMode(pUsb, OUTPUT);
digitalWrite(pSd, HIGH);
digitalWrite(pEth, HIGH);
digitalWrite(pUsb, HIGH);
delay(10);
digitalWrite(pUsb, LOW);
delay(10);
if(Usb.Init() == -1)
{
Serial.println("Conexion USB no inicializada");
}
delay(200);
digitalWrite(pUsb, HIGH);
delay(10);
digitalWrite(pEth, LOW);
delay(10);
Ethernet.begin(mac, ip, myDns, gate, mask);
delay(2000);
digitalWrite(pEth, HIGH);
delay(10);
digitalWrite(pSd, LOW);
delay(10);
if(!SD.begin())
{
Serial.println("Error al leer la tarjeta SD.");
return;
}
delay(200);
digitalWrite(pSd, HIGH);
delay(10);
next_time = millis() + 5000;
HidComposite.SetReportParser(0, (HIDReportParser*)&KbdPrs);
HidComposite.SetReportParser(1, (HIDReportParser*)&KbdPrs);
HidKeyboard.SetReportParser(0, (HIDReportParser*)&KbdPrs);
HidKeyboard.SetReportParser(1, (HIDReportParser*)&KbdPrs);
delay(200);
}