« 2022年6月 | トップページ | 2022年8月 »

2022年7月14日 (木)

ラジコンのカヤックを作る その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);    }  } }


| | コメント (0)

« 2022年6月 | トップページ | 2022年8月 »