Arduino BT no longer communicating - emergency...

Hi

I have an artpiece I just installed in Reykjavik. I just built a replica for the Art basel Miami which opens on tuesday.

But the BT has just given up. It’s a total mystery. I have one brand new BT, and one old and that always worked. I tried four different macs, in two different rooms. I tried firmata. I tried everything.

The script works fine with a duemilanove. The hardware works fine with a duemilanove.
The whole thing works fine with the BT in reykjavik where it runs everyday.

The script recieves a, b, c, d over serial and triggers a solenoid per letter. Very simple.

I can still upload to to the BT. And if I upload a script that just triggers the solenoids in sequence over and over, it does it without complaining. But as soon as I start sending serial - no banana. I also get a lot of stalling in all programs I use to try to send the serial data (Isadora, arduino serial monitor, goSerial etc).

Basically freaking out trying to solve this. Flying to miami in 24h. Desperate.

Thanks for any input

the hardware is basically this x 4

And this is the one script I would like to use:

int ledPin =13;

int SOLENOID1 = 4;
int SOLENOID2 = 5;
int SOLENOID3 = 10;
int SOLENOID4 = 7;

int solenoids[] = {SOLENOID1,SOLENOID2,SOLENOID3,SOLENOID4};
int cnt = 0;

void setup()
{
  Serial.begin(115200); //init of the serial com
  pinMode(ledPin, OUTPUT);
  for(int i=0;i<4;i++){
    pinMode(solenoids[i], OUTPUT);
  }
}

void loop()
{
  
  cnt++;
  cnt %= 40;
  if(cnt < 5) digitalWrite(ledPin, LOW);
  else digitalWrite(ledPin, HIGH);
  
  for(int i=0;i<4;i++){
    digitalWrite(solenoids[i], LOW);
  }
  delay(50);
  checkInput();
  delay(50);
  Serial.println("loop");
}

void checkInput(){
  boolean hadInput = false;
  if ( Serial.available()) { // serial reception
    char ch = Serial.read();
    int solenoidID = -1;
    switch(ch) {
    case 'a': // numeric value
      solenoidID = 0;
      break;
    case 'b': // reading of the letter
      solenoidID = 1;
      break;
    case 'c':
      solenoidID = 2;
      break;
    case 'd':
      solenoidID = 3;
      break;
    }
    
    if(solenoidID > -1){
      Serial.print("SOLENOID : ");
      Serial.println(solenoidID);
      digitalWrite(solenoids[solenoidID], HIGH);
    }    
    hadInput = true;
  }
  if(hadInput) Serial.flush();
}

Hi,

remove the following line and it should work:

  Serial.println("loop");

MikeT