5

I am new to programming and am trying to communicate with my arduino using python through serial communication. I am using the following code:

Arduino code:

int ledPin = 11;

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

void loop() {
  digitalWrite(ledPin,LOW);
    if (Serial.read() == 'M'){
      digitalWrite(ledPin,HIGH);}
}

Python code:

import imaplib
import serial
ser = serial.Serial("COM3",9600)
ser.write(b'T')
ser.close()

I get the following error on running the python script:

serial.serialutil.SerialException: could not open port 'COM3': PermissionError(13, 'Access is denied.', None, 5)

jfpoilpret
  • 9,162
  • 7
  • 38
  • 54
Severus
  • 151
  • 1
  • 1
  • 3

5 Answers5

9

More than likely you ran the Arduino program from the Arduino IDE, and left the terminal window open. You must close it before you run the python program, as it will already 'own' the port until it closes. You dont have to quit Arduino IDE, just close the terminal window.

2

There can be several reasons as highlighted in these questions:

They include:

  • port is already in use by another application
  • permissions are set to deny access to normal users
  • problems in the code (top answer in first link)

Try to run with administrator priviledges ("run as administrator"). Others claim that a simple retry might help.

fuenfundachtzig
  • 1,535
  • 1
  • 14
  • 26
2

you must use this code

>>> import serial
>>> ser.close()             # close port
sa_leinad
  • 3,218
  • 2
  • 23
  • 51
user70011
  • 21
  • 1
1

Either run your python program in "administrator mode" or close any other programs using the port intended for

1

Are you by any chance using Jupyter Notebok? I was having a similar error today and managed to solve it by opening Jupyter Notebook through Anaconda Navigator instead of opening it through Anaconda Prompt.

Cengizhan
  • 11
  • 1