ラジコンのカヤックを作る その4
電圧の変換
arduinoは5V、
通信モジュールのトワイライトワイヤレスモジュールは3.3V、
ボタン情報は3.3Vから5Vに変換する必要があります。
今回はトランジスタを用いましたが専用のICもあります。
ネットで検索すればいろいろ出てきますのでそれを参考にしてください。
プログラムはこんな感じです、コメントがないのですが、
簡単なプログラムですから見ればわかると思います。
#include <Servo.h> const int P10servo = 10; const int P11servo = 11; Servo servo10; Servo servo11; int pos10; int pos11;
const int Rbutton = 13; const int Lbutton = 12; const int SLbutton = 9; const int BSbutton = 8; const int FSbutton = 7;
void setup() {
servo10.attach(P10servo); servo11.attach(P11servo); pinMode(FSbutton, INPUT_PULLUP); pinMode(BSbutton, INPUT_PULLUP); pinMode(SLbutton, INPUT_PULLUP); pinMode(Rbutton, INPUT_PULLUP); pinMode(Lbutton, INPUT_PULLUP); }
void loop() {
servo10.write(94); delay(10); servo11.write(92); delay(500); if (digitalRead(FSbutton) == LOW) { // Forward Stroke Forward(); } if (digitalRead(BSbutton) == LOW) { // Back Stroke Back(); } if (digitalRead(SLbutton) == LOW) { // Steun Ladder Stern(); } }
void Forward() { servo10.write(64); delay(500); while(digitalRead(FSbutton) == LOW) { if(digitalRead(Lbutton) == LOW ) { servo11.write(92); } else { servo11.write(66); } delay(500); for(pos10=64; pos10<124; pos10 += 1) { servo10.write(pos10); delay(10); } if(digitalRead(Rbutton) == LOW ) { servo11.write(92); } else { servo11.write(122); } delay(500); for(pos10=124; pos10>64; pos10 -= 1) { servo10.write(pos10); delay(10); } } }
void Back() { servo10.write(64); delay(500); while(digitalRead(BSbutton) == LOW) { if(digitalRead(Lbutton) == LOW ) { servo11.write(92); } else { servo11.write(122); } delay(500); for(pos10=64; pos10<124; pos10 +=1) { servo10.write(pos10); delay(10); }
if(digitalRead(Rbutton) == LOW ) { servo11.write(92); } else { servo11.write(66 ); } delay(500); for(pos10=124; pos10>64; pos10 -= 1) { servo10.write(pos10); delay(10); } } }
void Stern() { servo10.write(94); delay(10); servo11.write(92); while(digitalRead(SLbutton) == LOW) { if(digitalRead(Rbutton) == LOW ) { servo10.write(144); delay(10); servo11.write(47); }
if(digitalRead(Lbutton) == LOW ) { servo10.write(44); delay(10); servo11.write(137); } } }
最近のコメント