Xenon54의 잡다한 이야기

아두이노 어렵다 본문

잡담

아두이노 어렵다

사용자 Xenon54 2018. 12. 20. 15:20

아니 진짜 아두이노 사회악이야 이정도면.

왜 안되냐고 씨아아앙


아두이노로 만든 보안모듈의 소스코드.

제작자는 나이지만 만든지 1달정도 되니까 ㅋㅋ


#include <SoftwareSerial.h>

SoftwareSerial BT(2,3);


const int SOUND_SENSOR_PIN = A5;

int sensorValue;


int vol = 0;

int unlock = 4;

int lock1 = 5;

int lock2 = 6;

int buz = 12;

int trig = 10;

int echo = 11;

char bt = '0', btsub = '0';


void setup()

{

  BT.begin(9600);

  Serial.begin(9600);

  pinMode(trig, OUTPUT);

  pinMode(echo, INPUT);

  pinMode(unlock,OUTPUT);

  pinMode(lock1,OUTPUT);

  pinMode(lock2,OUTPUT);

  pinMode(buz,OUTPUT);

  //pinMode(SOUND_SENSOR_PIN,INPUT);

  attachInterrupt(0, change, CHANGE);

  

}


void loop()

{

  if(bt == '1'){

    btsub = '1';

    digitalWrite(trig, HIGH);

    delayMicroseconds(10);

    digitalWrite(trig, LOW);

  

    int distance = pulseIn(echo, HIGH) * 17 / 1000;

    Serial.print(distance);

    Serial.println("cm");

    delay(100); 

  

    if(distance <= 10){

       buzzer(1);

       //delay(100);

    }else{

      buzzer(0);

    }

    digitalWrite(lock2, 1);

    digitalWrite(unlock, 0);

    digitalWrite(lock1, 0);

    //cw

  }

  if(bt == '2'){

    btsub = '1';

    digitalWrite(trig, HIGH);

    delayMicroseconds(10);

    digitalWrite(trig, LOW);

  

    int distance = pulseIn(echo, HIGH) * 17 / 1000;

    Serial.print(distance);

    Serial.println("cm");

    delay(100); 

  

    if(distance <= 10){

       buzzer(1);

       //delay(100);

    }

    digitalWrite(lock2, 0);

    digitalWrite(unlock, 0);

    digitalWrite(lock1, 1);

    

    btsub = '2';

    //sensorValue = analogRead(SOUND_SENSOR_PIN);

   //    Serial.println(sensorValue);

   // if(sensorValue == 1){

    //  buzzer(1);

   // }

    

    delay(200);

    

  }

  if(bt == '0'){

    btsub = 0;

    digitalWrite(lock2, 0);

    digitalWrite(unlock, 1);

    digitalWrite(lock1, 0);

    }

  if(bt == 'c'){

     buzzer(0);

      bt = btsub;

      Serial.println("Alarm Clear");

    }

   if(bt == 'w'){

      buzzer(1);

      bt = btsub;

      Serial.println("Alarm On");

    }

}


void change(){

  bt = BT.read();

  if(bt == '1')

    Serial.println("Security Level : 1");

  if(bt == '2')

    Serial.println("Security Level : 2");

  if(bt == '0')

    Serial.println("Unsecured");

}

void buzzer(int a){

  if(a == 1){

    tone(buz,1800);

  }else if(a == 0){

    noTone(buz);

  }

}


눈이아프죠?

저렇게 보여도 긴코드가 아님 ㅋㅋ


주석친거는 사운드 센서인데, 저거는 작동확인 못함 ㅋ


그리고 무선통신모듈... 저주할거다.


(송신부)

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

#include <DHT11.h>

int pin=2;

DHT11 dht11(pin);


RF24 radio(7, 8);

const byte address[6] = "00001";

void setup() {

  Serial.begin(9600);

  radio.begin();

  radio.openWritingPipe(address);

  radio.setPALevel(RF24_PA_LOW);

  radio.stopListening();

}

void loop() {

  int err;

  float temp, humi;

  const char text[] = "Hello World";

  radio.write(&text, sizeof(text));

  if((err=dht11.read(humi, temp))==0)

  {

    Serial.print("temperature:");

    Serial.print(temp);

    Serial.print(" humidity:");

    Serial.print(humi);

    Serial.println();


    String dumy1 = String(temp);

    const char text1[32] = "";

    dumy1.toCharArray(text1, dumy1.length());

    //radio.write(&text1, 10);

    String dumy2 = String(humi);

    const char text2[32] = "";

    dumy1.toCharArray(text2, dumy2.length());

    

    //delay(1000);

    if(!radio.write(&text1, sizeof(text1))){

      Serial.println("temp send fail");

      Serial.println(text1);

    }

    if(!radio.write(&text2, sizeof(unsigned long))){

      Serial.println("humi send fail");

      Serial.println(text2);

    }

  }

  

  //delay(100);

}


온도습도 측정해서 수신부로 보내는게 왜 안되냐...


(수신부)

#include <SPI.h> 

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(7, 8); // SPI 버스에 nRF24L01 라디오를 설정하기 위해 CE, CSN 선언.

const byte address[6] = "00001"; //주소값을 5가지 문자열로 변경할 수 있으며, 송신기과 수신기가 동일한 주소로 해야됨.

void setup() {

  Serial.begin(9600);

  radio.begin();

  radio.openReadingPipe(0, address);

  radio.setPALevel(RF24_PA_MIN); //전원공급에 관한 파워레벨을 설정합니다. 모듈 사이가 가까우면 최소로 설정합니다.


//거리가 가까운 순으로 RF24_PA_MIN / RF24_PA_LOW / RF24_PA_HIGH / RF24_PA_MAX 등으로 설정할 수 있습니다.


//높은 레벨(거리가 먼 경우)은 작동하는 동안 안정적인 전압을 가지도록 GND와 3.3V에 바이패스 커패시터 사용을 권장함

  radio.startListening(); //모듈을 수신기로 설정

}

void loop() {

  if (radio.available()) {

    char text[32] = "";

    radio.read(&text, sizeof(text));

    Serial.println(text);

  }

}


구글링으로 가져움 누구건지는 모르지만... 이거 작동 잘됨 ㅋ

나의 아두이노는 이것을 왠지모르게 거부하지만...ㅋㅋ

'잡담' 카테고리의 다른 글

애니 음악 사이트를 만들었다!  (0) 2019.02.25
아두이노 어렵다  (0) 2018.12.20
게임 추천들좀 해주세요  (0) 2018.12.20
시작이당~  (0) 2018.08.06
0 Comments
댓글쓰기 폼