728x90
Arduino] 무선 조종 선풍기 소스
http://twinparadox.tistory.com/132
자세한 내용은 위 링크 참조...
DC 서보 모터 HS-311
DC 선풍기 모듈 L9110
HC-06 블루투스 슬레이브 모듈
이렇게 세 개를 활용해서 만들었던 바스티온..
아니, 회전각 제어가 가능한 블루투스 무선 조종 선풍기(이하 무선 조종 선풍기)의
아두이노 스케치 코드다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | #include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출 #include <Servo.h> Servo serv; int blueTx = 2; //Tx (블투 보내는핀 설정) int blueRx = 3; //Rx (블투 받는핀 설정) int dcMotor = 11; int dcMotors = 12; int servMotor = 7; int isTurn = 0; int spd=0; int maxAngle; int minAngle; int angle; int direct; //시리얼 통신을 위한 객체선언 SoftwareSerial mySerial(blueTx, blueRx); String myString = ""; //받는 문자열 boolean isInput() { if (!myString.equals("")) return true; else return false; } void setup() { serv.attach(servMotor); serv.write(90); Serial.begin(9600); Serial.println("Hello!"); Serial.println(serv.read()); mySerial.begin(9600); //블루투스 시리얼 개방 pinMode (dcMotor, OUTPUT); // relay를 output으로 설정 pinMode (dcMotors, OUTPUT); digitalWrite(dcMotor,LOW); digitalWrite(dcMotors,LOW); minAngle=maxAngle=90; angle=90; direct=-1; } void loop() { while (mySerial.available()) //mySerial 값이 있으면 { //mySerial int형식의 값을 char형식으로 변환 char myChar = (char)mySerial.read(); //수신되는 문자열을 myString에 모두 붙임 (1바이트씩 전송되는 것을 모두 붙임) if (myChar != '\n') myString += myChar; delay(5); //수신 문자열 끊김 방지 } if (!myString.equals("")) //myString 값이 있다면 { //시리얼모니터에 myString값 출력 Serial.println("input value: " + myString); if (myString == "on1") //myString 값이 'on' 이라면 { spd=1; } else if (myString == "on2") { spd=2; } else if (myString == "on3") { spd=3; } else if (myString == "on4") { serv.attach(servMotor); Serial.println(serv.read()); isTurn = 1; minAngle=90-30*isTurn; maxAngle=90+30*isTurn; } else if (myString == "off4") { analogWrite(dcMotor, 0); Serial.println(serv.read()); isTurn = 0; minAngle=90-30*isTurn; maxAngle=90+30*isTurn; } else if (myString == "on5") { serv.attach(servMotor); Serial.println(serv.read()); isTurn = 2; minAngle=90-30*isTurn; maxAngle=90+30*isTurn; } else if (myString == "on6") { serv.attach(servMotor); Serial.println(serv.read()); isTurn = 3; minAngle=90-30*isTurn; maxAngle=90+30*isTurn; } else { analogWrite(dcMotor, 0); Serial.println(serv.read()); isTurn = 0; minAngle=90-30*isTurn; maxAngle=90+30*isTurn; spd=0; } myString = ""; //myString 변수값 초기화 } if(angle<=minAngle) { direct=1; } if(angle>=maxAngle) { direct=-1; } if(direct==1) { serv.write(angle++); } else { serv.write(angle--); } delay(30); analogWrite(dcMotor, (int)((0.33*spd) * 255)); } | cs |
728x90
'Computer Science > Arduino, RB Pi' 카테고리의 다른 글
Arduino] LiquidCrystal.h (0) | 2017.04.15 |
---|---|
Arduino] PWM 출력으로 LED 스트립 써먹기 (0) | 2017.04.14 |
Arduino] 아두이노 활용한 무선 조종 선풍기 (12) | 2017.02.21 |
Arduino] 아두이노 언어 구조, 변수, 함수 (0) | 2016.11.09 |
Arduino] 아두이노 센서 정리 (0) | 2016.07.21 |