2015年8月13日木曜日

ラジコン化コントローラ

//javac -cp C:\xbee\rxtx-2.1-7-bins-r2\Windows\ch-rxtx-2.2-20081207-win-x64\RXTXcomm.jar ControllRadicon.java
//java -cp C:\xbee\rxtx-2.1-7-bins-r2\Windows\ch-rxtx-2.2-20081207-win-x64\RXTXcomm.jar;. -Djava.library.path=C:\xbee\rxtx-2.1-7-bins-r2\Windows\ch-rxtx-2.2-20081207-win-x64 ControllRadicon

import java.io.*;
import gnu.io.*;
public class ControllRadicon{
public static void main( String arg[] ){
while ( true ){
int x;
System.out.print("input integer: ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try{
String buf = br.readLine();
x = Integer.parseInt(buf);
}catch(Exception e){
x = 0;
}
if(x==0){
sendControl("l0.r0.");
}else if(x==1){
sendControl("l220.r220.");
}else if(x==2){
sendControl("l250.r250.");
}else if(x==3){
sendControl("l185.r185.");
}else if(x==4){
sendControl("l185.r250.");
}else if(x==5){
sendControl("l250.r185.");
}
}
}
static void sendControl(String str){
try{
CommPortIdentifier comID = CommPortIdentifier.getPortIdentifier( "COM16" );
CommPort commPort = comID.open("hoge",2000);
SerialPort port = (SerialPort)commPort;
port.setSerialPortParams( 9800,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE );
port.setFlowControlMode( SerialPort.FLOWCONTROL_NONE );
OutputStream out = port.getOutputStream();
byte[] data = str.getBytes();
out.write(data);
out.flush();
out.close();
port.close();
System.out.println(str);
}catch( Exception e ){
System.out.println( "エラーです:" + e );
}
}
}

ラジコン化

int rightPin = 3;      // LEDはピン9に接続
int leftPin = 5;   // アナログピン3にポテンショメータ

void setup() {
        pinMode(rightPin, OUTPUT);
        pinMode(leftPin, OUTPUT);
Serial.begin(9600); // 9600bpsでシリアルポートを開く
}

void loop() {
char valueC[3];
int count = 0;
if (Serial.available() > 0) { // 受信したデータが存在する
char c = Serial.read(); // 受信データを読み込む
if(c == 'r' || c == 'l'){
int value = 0;
bool flag = true;
count = 0;
                        while (flag){
  if (Serial.available() > 0){
  char c1 = Serial.read(); // 受信データを読み込む
if(c1 == '.'){
flag = false;
}else{
valueC[count] = c1;
count++;
}
}
}
if(count == 3){
value =100*(int(valueC[0])-48)+10*(int(valueC[1])-48)+1*(int(valueC[2])-48);
}else if(count == 2){
value =10*(int(valueC[0])-48)+1*(int(valueC[1])-48);
}else if(count == 1){
value =1*(int(valueC[0])-48);
}
  Serial.print("I received: "); // 受信データを送りかえす
  Serial.print(c);
  Serial.println(value);
  if(c == 'r' ){
                           analogWrite(rightPin, value);
  }else if (c=='l'){
                           analogWrite(leftPin, value);
  }
}
}
}