[Arduino] Arduino與Python通訊(三)Arduino傳送資料給Python

  • 使用 python 程式透過通訊埠(COM PORT)接收 arduino 的資料 ,並顯示在電腦中。
  • arduino 接線
aduino 可變電阻
A0 中間腳位
VCC VCC
GND GND
  • arduino 程式
void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  int vr = analogRead(A0);
  Serial.println(vr);
}
  • python 程式:python沒有陣列(array)的型態,所以只能用list。
import serial

COM_PORT = 'COM4'  # 根據連結的Arduino的通訊埠修改設定
BAUD_RATES = 9600
arduinoSerial = serial.Serial(COM_PORT, BAUD_RATES)

try:
    buffer = list()
    
    while True:
        while arduinoSerial.in_waiting:
            data_raw = arduinoSerial.read()
            buffer.append(data_raw)

            if data_raw == b'\n':
                print('收到的資料:', buffer)
                buffer.clear()

except KeyboardInterrupt:
    arduinoSerial.close()    # 清除序列通訊物件
    print('關閉程式')

 

[Arduino] Arduino與Python通訊(二)使用Python點亮Arduino上的LED

  • 使用 python 程式透過通訊埠(COM PORT)傳輸指令給 arduino  ,來控制 LED 燈的開關(亮暗)。
  • python程式
import serial

COM_PORT = 'COM4'  # 根據連結的Arduino的通訊埠修改設定
BAUD_RATES = 9600
arduinoSerial = serial.Serial(COM_PORT, BAUD_RATES)

try:
    while True:
        choice = input('1:開燈 0:關燈 9:關閉程式  ')
        if choice == '1':
            print('開燈')
            arduinoSerial.write(b'1')
        elif choice == '0':
            print('關燈')
            arduinoSerial.write(b'0')
        elif choice == '9':
            print('關閉程式')
            arduinoSerial.close()
            exit()
        else:
            print('指令錯誤')

except KeyboardInterrupt:
    arduinoSerial.close()    # 清除序列通訊物件
    print('關閉程式')
  • arduino 接線
arduino LED
D10 正(長腳)
GND 負(短腳)
  • arduino程式
char serialData;
int LedPin = 10;

void setup() 
{
  pinMode(LedPin, OUTPUT);  
  Serial.begin(9600);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    serialData = Serial.read();
    Serial.print(serialData);

    if(serialData == '1')
      digitalWrite(LedPin, HIGH);
    else if(serialData == '0')
      digitalWrite(LedPin, LOW);
  }
}