Need a specialist Arduinsk! Code main.py opens the port of communication with ArDuino. Sketch Arduino Allows you to manage through the port monitor on and disconnecting the RGB LEDs. How to record the LED_RED () function in Python to control the Red LED with Python? I do not fundamentally, how the code will be written in Sketch, the main thing is that the control has become possible
main.py
import sys
from pyqt5.Qtwidgets import qmainwindow, qapplication
from pyqt5.uic Import Loadui
from pyqt5.QtSerialPort Import QSERIALPORT, QSERIALPORTINFO
from pyqt5.Qtcore import qiodevice
Class New (QMainWindow):
Def __init __ (Self):
Super (New, Self) .__ init __ ()
Loadui ("Arduino_gui.ui", Self)
Self.setWindowTitle ('New')
self.openb.clicked.connect (Self.Onopen)
self.closeb.clicked.connect (self.onclose)
Self.LeDr.StateChanged.connect (self.led_red)
Self.Ledg.StateChanged.connect (self.led_green)
self.ldb.statechanged.connect (self.led_blue)
Self.Serial = QSERIALPORT ()
Self.Serial.Setbaudrate (9600)
portlist = []
Ports = QSerialPortInfo (). AvailablePorts ()
For port in ports:
portlist.append (port.portname ())
PRINT (Portlist)
Self_L.Additems (Portlist)
DEF OnOpen (Self):
PRINT ('ON')
Self.Serial.SetportName (self-artl.currenttext ())
Self.Serial.Pen (Qiodevice.ReadWrite)
DEF OnClose (Self):
PRINT ('Close')
Self.Serial.Close ()
DEF LED_RED (Self, Data):
IF Data == '1':
Self.Serial.Write (1)
ELIF DATA == '0':
Self.Serial.Write (0)
DEF LED_GREEN (Self, Data):
Pass
DEF LED_BLUE (SELF, DATA):
Pass
Def Closeevent (Self, E):
Super (). Closeevent (E)
if __name__ == '__main__':
App = Qapplication (SYS.Argv)
Window = New ()
Window.Show ()
sys.exit (app.exec_ ())
arduino_gui.ui
& lt; xml version = "1.0" encoding = "UTF-8"? & gt;
& lt; ui version = "4.0" & gt;
& lt; Class & gt; Mainwindow & lt; / class & gt;
& lt; widget class = "qmainwindow" name = "Mainwindow" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 0 & lt; / x & gt;
& lt; y & gt; 0 & lt; / y & gt;
& lt; width & gt; 800 & lt; / width & gt;
& lt; height & gt; 208 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "Windowtitle" & gt;
& lt; String & GT; Mainwindow & lt; / String & GT;
& lt; / Property & gt;
& lt; widget class = "qwidget" name = "centralwidget" & gt;
& lt; widget class = "QGroupbox" name = "groupbox" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 20 & lt; / x & gt;
& lt; y & gt; 20 & lt; / y & gt;
& lt; width & gt; 331 & lt; / width & gt;
& lt; height & gt; 61 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "Title" & gt;
& lt; String & GT; opening / closing the port & lt; / String & GT;
& lt; / Property & gt;
& lt; layout class = "qgridlayout" name = "gridlayout" & gt;
& lt; item row = "0" column = "0" & gt;
& lt; widget class = "qcombobox" name = "COML" / & GT;
& lt; / Item & gt;
& lt; item row = "0" column = "1" & gt;
& lt; widget class = "qpushbutton" name = "OpenB" & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; Open & lt; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / Item & gt;
& lt; item row = "0" column = "2" & gt;
& lt; widget class = "qpushbutton" name = "closeb" & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; Close & lt; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / Item & gt;
& lt; / layout & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledr" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 40 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_R & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledg" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 140 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_G & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledb" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 240 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_B & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / widget & gt;
& lt; / widget & gt;
& lt; Resources / & GT;
& lt; Connections / & gt;
& lt; / ui & gt;
sketch arduino
int CNT = 0;
Void setup () {
Serial.begin (9600);
Serial.settimeout (5);
Pinmode (5, Output);
Pinmode (6, Output);
Pinmode (11, Output);
}
void loop ()
{
if (serial.available () & gt; 0) {
Byte Data = Serial.Read ();
if (data == '0') DigitalWrite (5, Low);
if (data == '1') DigitalWrite (5, HIGH);
if (data == '0') DigitalWrite (6, Low);
if (data == '2') DigitalWrite (6, HIGH);
if (Data == '0') DigitalWrite (11, Low);
if (data == '3') DigitalWrite (11, High);
Serial.write (DATA);
}
}
Answer 1
Libraries for serial port of Arduins on the site alexgyver.ru or on the channel “Notes Arduce”
main.py
import sys
from pyqt5.Qtwidgets import qmainwindow, qapplication
from pyqt5.uic Import Loadui
from pyqt5.QtSerialPort Import QSERIALPORT, QSERIALPORTINFO
from pyqt5.Qtcore import qiodevice
Class New (QMainWindow):
Def __init __ (Self):
Super (New, Self) .__ init __ ()
Loadui ("Arduino_gui.ui", Self)
Self.setWindowTitle ('New')
self.openb.clicked.connect (Self.Onopen)
self.closeb.clicked.connect (self.onclose)
Self.LeDr.StateChanged.connect (self.led_red)
Self.Ledg.StateChanged.connect (self.led_green)
self.ldb.statechanged.connect (self.led_blue)
self.LeD13on.Clicked.connect (self.LeD13_ON)
self.LeD13off.clicalked.connect (self.LeD13_OFF)
Self.Serial = QSERIALPORT ()
Self.Serial.Setbaudrate (115200)
portlist = []
Ports = QSerialPortInfo (). AvailablePorts ()
For port in ports:
portlist.append (port.portname ())
PRINT (Portlist)
Self_L.Additems (Portlist)
DEF OnOpen (Self):
PRINT ('ON')
Self.Serial.SetportName (self-artl.currenttext ())
Self.Serial.Pen (Qiodevice.ReadWrite)
DEF SerialSend (Self, Data): # list int
TXS = ""
FOR VAL IN DATA:
TXS + = STR (VAL)
TXS + = ','
TXS = TXS [: - 1]
TXS + = ';'
Self.Serial.Write (TXS.Encode ())
DEF OnClose (Self):
PRINT ('Close')
Self.Serial.Close ()
DEF LED13_ON (SELF):
VAL = 1.
Self.SerialSend ([0, Val])
DEF LED13_OFF (SELF):
VAL = 0.
Self.SerialSend ([0, Val])
DEF LED_RED (Self, Val):
Self.SerialSend ([1, Val])
DEF LED_GREEN (Self, Val):
Self.SerialSend ([2, Val])
DEF LED_BLUE (Self, Val):
Self.SerialSend ([3, Val])
Def Closeevent (Self, E):
Super (). Closeevent (E)
if __name__ == '__main__':
App = Qapplication (SYS.Argv)
Window = New ()
Window.Show ()
sys.exit (app.exec_ ())
arduino_gui.ui
& lt; xml version = "1.0" encoding = "UTF-8"? & gt;
& lt; ui version = "4.0" & gt;
& lt; Class & gt; Mainwindow & lt; / class & gt;
& lt; widget class = "qmainwindow" name = "Mainwindow" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 0 & lt; / x & gt;
& lt; y & gt; 0 & lt; / y & gt;
& lt; width & gt; 800 & lt; / width & gt;
& lt; height & gt; 208 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "Windowtitle" & gt;
& lt; String & GT; Mainwindow & lt; / String & GT;
& lt; / Property & gt;
& lt; widget class = "qwidget" name = "centralwidget" & gt;
& lt; widget class = "QGroupbox" name = "groupbox" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 20 & lt; / x & gt;
& lt; y & gt; 20 & lt; / y & gt;
& lt; width & gt; 331 & lt; / width & gt;
& lt; height & gt; 61 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "Title" & gt;
& lt; String & GT; opening / closing the port & lt; / String & GT;
& lt; / Property & gt;
& lt; layout class = "qgridlayout" name = "gridlayout" & gt;
& lt; item row = "0" column = "0" & gt;
& lt; widget class = "qcombobox" name = "COML" / & GT;
& lt; / Item & gt;
& lt; item row = "0" column = "1" & gt;
& lt; widget class = "qpushbutton" name = "OpenB" & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; Open & lt; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / Item & gt;
& lt; item row = "0" column = "2" & gt;
& lt; widget class = "qpushbutton" name = "closeb" & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; Close & lt; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / Item & gt;
& lt; / layout & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledr" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 40 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_R & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledg" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 140 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_G & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qcheckbox" name = "ledb" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 240 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 81 & lt; / width & gt;
& lt; height & gt; 20 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; LED_B & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qpushbutton" name = "led13on" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 410 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 93 & lt; / width & gt;
& lt; Height & gt; 28 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; PIN13_ON & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; widget class = "qpushbutton" name = "led13off" & gt;
& lt; Property Name = "Geometry" & gt;
& lt; rect & gt;
& lt; x & gt; 530 & lt; / x & gt;
& lt; y & gt; 120 & lt; / y & gt;
& lt; width & gt; 93 & lt; / width & gt;
& lt; Height & gt; 28 & lt; / height & gt;
& lt; / rect & gt;
& lt; / Property & gt;
& lt; Property Name = "font" & gt;
& lt; font & gt;
& lt; Pointsize & gt; 10 & lt; / pointsize & gt;
& lt; / font & gt;
& lt; / Property & gt;
& lt; Property Name = "Text" & gt;
& lt; String & GT; PIN13_OFF & LT; / String & GT;
& lt; / Property & gt;
& lt; / widget & gt;
& lt; / widget & gt;
& lt; / widget & gt;
& lt; Resources / & GT;
& lt; Connections / & gt;
& lt; / ui & gt;
sketch
# define led_r 5
#Define LED_G 6.
#Define LED_B 11.
#Include "Parser.h"
#Include "asyncstream.h" // Asynchronous reading series
ASYNCSTREAM & LT; 50 & gt; Serial (& amp; serial, ';'); // Indicate the handler and stop symbol
Void setup () {
Serial.begin (115200);
Pinmode (13, 1);
Pinmode (LED_R, 1);
Pinmode (LED_G, 1);
Pinmode (LED_B, 1);
}
// with PC on Arduino, Termintar;
// 0, ice 13
// 1, R
// 2, g
// 3, b
void loop () {
Parsing ();
}
// Parsing function, interview inmpore
Void Parsing () {
if (serial.available ()) {
Parser Data (serial.buf, ','); // We give Parser
INT INTS [10]; // Array for numerical data
data.parseints (INTS); // Parsim in it
Switch (INTS [0]) {
CASE 0: DIGITALWRITE (13, INTS [1]);
Break;
Case 1:
DigitalWrite (LED_R, INTS [1]);
Break;
Case 2:
DigitalWrite (LED_G, INTS [1]);
Break;
Case 3:
DigitalWrite (LED_B, INTS [1]);
Break;
}
}
}