for hanzo4.1
This commit is contained in:
parent
758adad460
commit
6aec4ee462
1 changed files with 123 additions and 0 deletions
123
arduino/ServoSetHanzo4_1/ServoSetHanzo4_1.ino
Normal file
123
arduino/ServoSetHanzo4_1/ServoSetHanzo4_1.ino
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
#include <Servo.h>
|
||||||
|
|
||||||
|
// Servo : SC-1267SG
|
||||||
|
unsigned int steeringServoCenter = 1820; //us
|
||||||
|
unsigned int steeringServoMin = (steeringServoCenter-780); //us
|
||||||
|
unsigned int steeringServoMax = (steeringServoCenter+780); //us
|
||||||
|
|
||||||
|
// Servo : SC-0352
|
||||||
|
unsigned int lanceServoCenter = 1560; //us
|
||||||
|
unsigned int lanceServoMin = (lanceServoCenter-780); //us
|
||||||
|
unsigned int lanceServoMax = (lanceServoCenter+780); //us
|
||||||
|
|
||||||
|
unsigned char rotPin = 2;
|
||||||
|
|
||||||
|
unsigned char numSensors = 8;
|
||||||
|
unsigned char sensorPin[] = {19,18,17,16,15,14,13,12}; //右端から順番に左端へ
|
||||||
|
|
||||||
|
unsigned char steeringServoPin = 9;
|
||||||
|
unsigned char lanceServoPin = 10;
|
||||||
|
|
||||||
|
volatile unsigned long distance = 0;
|
||||||
|
|
||||||
|
Servo lanceServo;
|
||||||
|
Servo steeringServo;
|
||||||
|
|
||||||
|
/* ステアリングを中央からa[度]だけ動かす
|
||||||
|
<- - 0 + ->
|
||||||
|
||
|
||||||
|
||
|
||||||
|
[]---{}---[]
|
||||||
|
/ .\
|
||||||
|
*/
|
||||||
|
int steering(int a){
|
||||||
|
steeringServo.write(90 + a);
|
||||||
|
return (steeringServo.read() - 90);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ランスを中央からa[度]だけ動かす
|
||||||
|
<- - 0 + ->
|
||||||
|
/ .\
|
||||||
|
/ | \
|
||||||
|
[]+--{}--+[]
|
||||||
|
*/
|
||||||
|
int lance(int a){
|
||||||
|
lanceServo.write(90 - a);
|
||||||
|
return (90 - a);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* センサーのアレイの初期化 */
|
||||||
|
void sensorInit(){
|
||||||
|
for(int i=0; i<numSensors; i++){
|
||||||
|
pinMode(sensorPin[i], INPUT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* エンコーダーの割り込み処理 */
|
||||||
|
void rot(){
|
||||||
|
distance++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
steeringServo.attach(steeringServoPin, steeringServoMin, steeringServoMax);
|
||||||
|
lanceServo.attach(lanceServoPin, lanceServoMin, lanceServoMax);
|
||||||
|
steering(0);
|
||||||
|
lance(0);
|
||||||
|
pinMode(rotPin, INPUT);
|
||||||
|
attachInterrupt(0, rot, RISING);
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("format : [+-][0-180][hl]");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
static int i = 0;
|
||||||
|
i++;
|
||||||
|
if(i>100){
|
||||||
|
i = 0;
|
||||||
|
Serial.print(distance);
|
||||||
|
Serial.print('\t');
|
||||||
|
for(int i=0; i<numSensors; i++){
|
||||||
|
Serial.print(digitalRead(sensorPin[i]));
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int v = 0;
|
||||||
|
static int s = 1;
|
||||||
|
|
||||||
|
if ( Serial.available() ) {
|
||||||
|
char ch = Serial.read();
|
||||||
|
switch(ch) {
|
||||||
|
case '-':
|
||||||
|
s = -1;
|
||||||
|
break;
|
||||||
|
case '0'...'9':
|
||||||
|
v = v * 10 + ch - '0';
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
v = s*v;
|
||||||
|
Serial.print("lance :");
|
||||||
|
Serial.println(v);
|
||||||
|
lance(v);
|
||||||
|
v = 0;
|
||||||
|
s = 1;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
v = s*v;
|
||||||
|
Serial.print("steering :");
|
||||||
|
Serial.println(v);
|
||||||
|
steering(v);
|
||||||
|
v = 0;
|
||||||
|
s = 1;
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
Serial.println("clear");
|
||||||
|
distance = 0;
|
||||||
|
v = 0;
|
||||||
|
s = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1);
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue