CodingMaker

파이썬에서 아두이노로 문자 또는 숫자 보내기 본문

Python

파이썬에서 아두이노로 문자 또는 숫자 보내기

메이커K 2018.04.17 10:56

윈도우 cmd에 들어가서 명령 프롬프트 창이 열리면

pip install pySerial 을 입력한다.


설치가 끝나면 업데이트 하라는 메세지가 뜬다.


python -m pip install -U pip 입력하고 업데이트를 한다.


COM3 -->  COM6 으로 바꿔준다.


아두이노 스케치를 열어 코드를 작성한다.

y를 누르면 13번 LED가 커지고 n을 누르면 13번 LED가 꺼진다.

코드작성이 완료되면 아두이노에 업로드 한다.







파이썬에서 on을 입력하면 불이 켜지고 off를 입력받으면 불을 꺼지게 하는 코드를 작성해본다.

import serial


arduino = serial.Serial('COM6', 9600)


while(1):

    c = input()

    if c=='q':

        break

    elif c=='on':

        arduino.write(b'y')

    elif c=='off':

        arduino.write(b'n')

    else:

        c= c.encode('utf-8')

        arduino.write(c)

"""

파이썬에서 on을 입력하면 불이 켜지고

off를 입력받으면 불을 꺼지게 하는 코드를 작성해본다.

"""


아두이노에서 숫자를 보내는 코드를 작성해본다. 

void setup() {

  Serial.begin(9600);


  pinMode(13, OUTPUT);

}


void loop() {

  while (Serial.available() > 0) {

    long value = Serial.parseInt(); //숫자로 된 문자열을 숫자값으로 바꿔준다. 

    if( value >= 100) { // 들어온 값이 100보다 크면 불이 켜진다.

      digitalWrite(13, HIGH);

    } else {

      digitalWrite(13, LOW);

    }

  }

}



아두이노 스케치에서 아래의 조건으로 코딩한다.

조건 : 이전 값보다 큰 값이 들어오면 불이 켜지고

작은 값이 들어오면 불이 꺼지게 코딩한다.

void setup() {

  Serial.begin(9600);


  pinMode(13, OUTPUT);

}

long old =100;

void loop() {

  while (Serial.available() > 0) {

    long value = Serial.parseInt(); //숫자로 된 문자열을 숫자로 바꿔준다.

    if( value >= old) {

      digitalWrite(13, HIGH);

    } else {

      digitalWrite(13, LOW);

    }

    old = value;

  }

}


// 이전 값보다 큰 값이 들어오면 불이 켜지고

// 작은 값이 들어오면 불이 꺼진다.

코드 작성 완료후 아두이노에 업로드 한다.


파이썬에서 아래와 같은 코드를 작성한다. Run Module    F5   실행한다. 

import serial


arduino = serial.Serial('COM6', 9600)


while(1):

    c = input()

    if c=='q': 

        break

    else:

        c= c.encode('utf-8')

        arduino.write(c)



파이썬에서 작은 숫자를 입력하면 꺼지고 큰 숫자를 입력하면 켜진다.

'q'를 누르면 해당 파이썬을 종료한다.



숫자를 입력하면 입력한 숫자만큼 LED가 깜빡이게 하는 코딩을 아두이노 스케치에서 작성한다. 

작성한 코드를 아두이노에 업로드한다.

void setup() {

  Serial.begin(9600);


  pinMode(13, OUTPUT);

}

long old =100;

void loop() {

  while (Serial.available() > 0) {

    long value = Serial.parseInt(); //숫자로 된 문자열을 숫자로 바꿔준다.

    for(long i=0; i<value; i++){

      digitalWrite(13, HIGH);

      delay(500);

      digitalWrite(13, LOW);

      delay(500);

    }

  }

}


// 입력한 숫자 만큼 13번 LED가 깜빡인다.

 


파이썬에서 숫자를 키보드로 입력하면 아두이노에서 LED가 깜빡인다.

숫자 2를 입력하면 두번 LED가 깜빡인다.

3 Comments
  • 프로필사진 질문입니다 2018.11.26 17:06 안녕하세요 구글에서 파이썬 아두이노 연동 검색해보다가 이 블로그 글을 발견해서 따라해보고 있습니다.
    그런데 파이썬에서 실행을 하면 값이 뜨는데 왜 아두이노 시리얼 모니터에서 값을 확인하려고 하면 시리얼 포트를 여는데 에러가 발생한다고 뜨는걸까요? 혹시 아신다면 답변부탁드립니다.
  • 프로필사진 질문드립니다 2019.05.25 22:20 파이썬과 아두이노의 연동에 관해 검색하다가 작성자님께서 작성하신 좋은글을 보고 많은 도움을 받는중인 사람입니다.
    혹시 현재 두개의 게시글로 나뉘어 놓으신 (아두이노 -> 파이썬) (파이썬 -> 아두이노)기능을 한개의 코드로 합치는것도 가능한가요?
  • 프로필사진 김용규 2019.09.14 16:19 안녕하세요 아두이노 공부중에 파이썬을 활용해보고자 공부하다가 찾게되었습니다.
    pySerial 을 cmd창에서 다운받으려고 하는데
    'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
    배치 파일이 아닙니다.
    라는 메시지가 뜨는데 혹시 어떻게 해결할 수 있는지 아시나요
댓글쓰기 폼