Buenas señores
Tengo este codigo, el cual quiero que al pulsar un pulsador me mande un array 5 veces cada 300 ms,tal cual esta echo funciona, pero si en el momento que pulso para mandar el array S1, pulso para mandar el S2 no hace caso hasta que termina de enviar el primero, el problema creo que esta en los delay, de que forma puedo mandar 5 veces el array cada 300ms y que no interfiera si mando dos muy seguidos.
Gracias
#include <SPI.h>
#include "mcp_can.h"
const int SPI_CS_PIN = 9;
MCP_CAN CAN(SPI_CS_PIN);
#define pulsador1 2
#define pulsador2 3
#define pulsador3 4
#define pulsador4 5
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
unsigned char S1[8] = {0xF1, 0x88, 0x88, 0x00, 0x00, 0x00, 0x01, 0x00};
unsigned char S2[8] = {0xF1, 0x88, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00};
unsigned char S3[8] = {0xF1, 0x88, 0x88, 0x00, 0x00, 0x00, 0x03, 0x00};
unsigned char S4[8] = {0xF1, 0x88, 0x88, 0x00, 0x00, 0x00, 0x04, 0x00};
void setup() {
Serial.begin(115200);
pinMode (pulsador1, INPUT);
pinMode (pulsador2, INPUT);
pinMode (pulsador3, INPUT);
pinMode (pulsador4, INPUT);
if (CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
}
}
void loop() {
val1 = digitalRead(pulsador1);
val2 = digitalRead(pulsador2);
val3 = digitalRead(pulsador3);
val4 = digitalRead(pulsador4);
if (val1 == HIGH)
{
CAN.sendMsgBuf(0x15, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x15, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x15, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x15, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x15, 0, 8, S1);
}
if (val2 == HIGH)
{
CAN.sendMsgBuf(0x16, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x16, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x16, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x16, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x16, 0, 8, S1);
}
if (val3 == HIGH)
{
CAN.sendMsgBuf(0x17, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x17, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x17, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x17, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x17, 0, 8, S1);
}
if (val4 == HIGH)
{
CAN.sendMsgBuf(0x18, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x18, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x18, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x18, 0, 8, S1);
delay(300);
CAN.sendMsgBuf(0x18, 0, 8, S1);
}
}