tmgです。
たまにはためになることを
今xportで、通信してピンポンをするシーソー作ってます。文字だけ見るとなんのこっちゃって感じですね。
p160までのコードです。エラーはないはず!
resetdeviceのくだりはまるっと無視しました。だってXportからそんなピンでてないんだもん…
----------------------
/*
pong cliant
Langage: Writing/Arduino
このプログラムはArduinoで、ネットワークにつながった
ピンポンのパドルをコントロールすることを可能にする
*/
//Lantronix deviceのステータスを定義する
#define disconnected 0
#define connected 1
#define connecting 2
//I/Oピンを定義する
#define connectButtonPin 2
#define rightLED 3
#define leftLED 4
#define connectionLED 5
#define connectButtonLED 6
int inByte= -1;
int status = disconnected;
byte connectButton = 0;
byte lastConnectButton = 0;
byte paddleMessage = 0;
byte connectMessage = 0;
void setup(){
  pinMode(connectButtonPin,INPUT);
  pinMode(rightLED,OUTPUT);
  pinMode(leftLED,OUTPUT);
  pinMode(connectionLED,OUTPUT);
  pinMode(connectButtonLED,OUTPUT);
  
  Serial.begin(9600);
  
}
void loop(){
  readSensors();
  setLeds();
  stateCheck();
}
void readSensors(){
  int leftThereshold = 500;//適宜
  int rightThreshold = 420;//変えてね
  
  int x = analogRead(0);
  delay(10);
  
  if (x > leftThereshold){
    paddleMessage = 'l';
  } else if (x > rightThreshold){
    paddleMessage = 'r';
  } else {
    paddleMessage = 0;
  }
  
  connectButton = digitalRead(connectButtonPin);
  connectMessage = 0;
  if (connectButton == HIGH){
    if (connectButton != lastConnectButton){
      digitalWrite(connectButtonLED,HIGH);
      connectMessage = 'x';
    }
  }
  lastConnectButton = connectButton;
}
void setLeds(){
  switch (paddleMessage){
    case 'l':
    digitalWrite(leftLED,HIGH);
    digitalWrite(rightLED,LOW);
    break;
    case 'r':
    digitalWrite(rightLED,HIGH);
    digitalWrite(leftLED,LOW);
    break;
    case 0:
    digitalWrite(leftLED,LOW);
    digitalWrite(rightLED,LOW);
  }
  
  if (connectMessage !=0){
    digitalWrite(connectButtonLED,HIGH);
  }
  else{
    digitalWrite(connectButtonLED,LOW);
  }
  
  if (status == connected){
    digitalWrite(connectionLED,HIGH);
  }
  else {
    digitalWrite(connectionLED,LOW);
  }
}
void stateCheck() {
  switch (status){
    case connected:
    while (Serial.available() > 0){
      if(Serial.read() == 'D'){
        status = disconnected;
      }
    }
    if (paddleMessage != 0) {
      Serial.print(paddleMessage);
      paddleMessage = 0;
    }
    
    if (connectMessage != 0){
      Serial.print(connectMessage);
      connectMessage = 0;
    }
    break;
    
    case disconnected:
    if (connectMessage !=0){
      deviceConnect();
      connectMessage = 0;
    }
    break;
    
    case connecting:
    if (Serial.available()){
      inByte = Serial.read();
      if (inByte == 'C'){
        status = connected;
      }
      else{
        deviceConnect();
      }
    }
    break;
  }
}
void deviceConnect() {
  Serial.print("C192.168.0.182/50001\n\r");//←ここ自分のに変えてくださいね
  status = connecting;
}
  
void blink(int howManyTimes){
 for (int i=0; i< howManyTimes; i++) {
  digitalWrite(connectButtonLED,HIGH);
  delay(200); 
  digitalWrite(connectButtonLED,LOW);
  delay(200); 
 }
}
 
0 件のコメント:
コメントを投稿