정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

매번 두서없는글에 답변감사한데 마지막으로 부탁하나드릴게요
신재철 | 2015-11-21

저번에 올린코드는 제껏도아니고 쓰기가 그래서 제가 한번 만들어본코든데요.

허수 i j를 넣어서  커맨드가 입력될때마다 +한 값이 늘어나게 하고싶은데 잘안되네요

제가 쓴코드에 뭘 첨가해야되는거죠?

 

#include <SoftwareSerial.h>
#include <Servo.h>
#define moter1EnablePin 13
#define moter1_1 2
#define moter1_2 4

int i=0;
int j=90;

int bluetoothTx = 5;
int bluetoothRx = 6;

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
Servo servo;
int angle = 90;
void setup()
{
   servo.attach(9);
   Serial.begin(9600);
   delay(100);
   bluetooth.begin(9600);

   pinMode(moter1_1, OUTPUT);
   pinMode(moter1_2, OUTPUT);

   analogWrite(moter1EnablePin, 0);

}

void loop()
{

char cmd;
if(bluetooth.available() )
{ cmd = (char)bluetooth.read();
  Serial.print("Command=");
  Serial.println(cmd);

  if(cmd == '1')

{
 digitalWrite(moter1_1, HIGH);
 digitalWrite(moter1_2, LOW);
 analogWrite(moter1EnablePin, i+300);
}

 


if(cmd == '2')

{
 digitalWrite(moter1_1, HIGH);
 digitalWrite(moter1_2, LOW);
 analogWrite(moter1EnablePin, i-300);
}

if(cmd == '3')

{
 digitalWrite(moter1_1, LOW);
 digitalWrite(moter1_2, HIGH);
 analogWrite(moter1EnablePin, i+300);
}

if(cmd == '4')

{
 digitalWrite(moter1_1, LOW);
 digitalWrite(moter1_2, HIGH);
 analogWrite(moter1EnablePin, i-300);
}

if(cmd == '0')

{
 digitalWrite(moter1_1, LOW);
 digitalWrite(moter1_2, LOW);
 analogWrite(moter1EnablePin, 0);
 delay(1000);
 analogWrite(moter1EnablePin, 0);
 analogWrite(moter1EnablePin,0);
 delay(1000);

}
if(cmd == 'a')
  {servo.write(j+10);}
 
  if(cmd == 'b')
  {servo.write(j-10);}
 
 
  if(cmd == 'd')
  {servo.write(j);}

}

}

프로필사진

수박쨈 2015-11-21 14:21:28

{servo.write(j+10);} 와 {servo.write(j-10);} 이런 방식으로 구성하셨을 경우

변수 j는 90으로 고정되어 있기 때문에 a를 누르면 j = 90이고 그 90에 10을 더한 100으로만 연산되어 100로 고정됩니다.

 

10도씩 증가하게 하고 싶으시다면 j = j+10을 하여 j값에 10을 더한 값을 다시 j로 하여 a를 눌렀을 경우 매번 j값이 10씩 증가하게 하면 됩니다.

 

if(cmd == 'a') {

  j = j+10;
 servo.write(j);

}

위 같이 구성하면 될 듯하네요.

이전글   |    심장박동센서에 대해 다시 질문드립니다. 2015-11-20
다음글   |    안녕하세요 2015-11-22