新しいArduino.app

うっかりしてましたが、arduino.appが新しくなったので、コード修正。

色々変わったそうな。

といっても、関係があるのはBYTEキーワードがなくなったことと、Serial.write()を使うことくらいかな。
以下、MIDIコントローラーのコード。

#define pushVal 0  //for push-on switches.
//#define pushVal 1  //Otherwise,use this for push -off switches.
#define nd 4  //number of digital switches.
#define msg 176  //controll change. note-on:144 note-off:128

const int inPin[nd] = {4,6,8,10};  //input pins for switches.
const int gndPin[nd] = {5,7,9,11};  //input pins' ground.
const int val1[nd] = {70,71,72,73};  //controll No or note No
int val2[nd];  //controll value or velocity

long time[nd];  //the last time each switches was toggled.
//long now;  
const long debounce = 300;  //debounce time. Increase if the output flickers.

//int reading;

void setup(){
  for(int i=0 ; i < nd ; i++ ){
    pinMode(inPin[i] , INPUT);
    digitalWrite(inPin[i] , HIGH);
    pinMode(gndPin[i] , OUTPUT);
    digitalWrite(gndPin[i] , LOW);
    
    time[i] = millis();
    
    val2[i] = readPin(i);
  }  
    Serial.begin(31250);
}
void loop(){
  int reading;
  long now; 
  
  for(int i = 0 ; i < nd ; i++ ){
    reading = readPin(i);
    
    if(reading != val2[i]){
      now = millis();
      
      if(now-time[i] > debounce){
        val2[i] = reading;
        MIDI_TX(msg , val1[i] , val2[i] );
        time[i] = now;
      }
    }
  }
}

int readPin(int i){
  
  return digitalRead(inPin[i])  == pushVal ? 127 : 0 ;
}

void MIDI_TX(int MESSAGE, int VAL1, int VAL2) 
{
  Serial.write(MESSAGE);
  Serial.write(VAL1);
  Serial.write(VAL2);
}
コードおわり。

赤い所が修正したとこ。

コメント