Jan-11-2018, 12:00 AM
Program is partial working. I am able to turn pin 13 on and off. What I am trying to do is have "true" feed back when the pin changes state. I am trying to send pin 13 status ("1" or "0") to a tkinter label widget in python (below the "Exit" button) If I run using Arduino serial monitor everything works correctly. I get the text "Hello" and when I push the on button I get a "1" (no quotes) and when I push the off button I get a "0" (no quotes). Pushing Exit quits the program. Since I wrote this I am now getting "PY_VAR1 in my label field. I believe this is a python problem, I will also post to Arduino. Thanks for you help in advance
Jim
Python 3.6
[python]
----------------------------------------
#! /usr/bin/env python
import serial
import time
from tkinter import *
ArduinoSerial = serial.Serial('com3', 9600, timeout=.1)
time.sleep(2)
global status1
def led_on():
ArduinoSerial.write(b'1')
status1 = (ArduinoSerial.readline() .decode('utf-8').strip())
print(status1)
def led_off():
ArduinoSerial.write(b'0')
status1 = (ArduinoSerial.readline().decode('utf-8').strip())
print(status1)
def led_Exit():
ArduinoSerial.write(b'0')
status1 = "Quit"
print(status1)
quit()
root = Tk()
status1 = StringVar()
root.title("Arduino Push Buttons")
btn1 = Button(root, text="Led on", command=led_on)
btn2 = Button(root, text="Led off", command=led_off)
btn3 = Button(root, text="Exit", command=led_Exit)
msg1 = Label (root, textvariable = status1, relief=RAISED,width = 20)
btn1.pack()
btn2.pack()
btn3.pack()
msg1.pack()
status1.set(StringVar())
root.mainloop()
/python]
Python 3.6
-----------------------------------------------------------
Arduino 1.6.12
int data;
void setup()
{
Serial.begin(9600); //initialize serial COM at 9600 baudrate
pinMode(13, OUTPUT); //make the LED pin (13) as output
digitalWrite (13, LOW);
}
void loop()
{
if (Serial.available()> 0)
{
data = Serial.read();
}
if (data == '1')
{
digitalWrite (13, HIGH);
Serial.println(digitalRead(13));
data = '2';
}
else if (data == '0')
{
digitalWrite (13, LOW);
Serial.println(digitalRead(13));
data = '2';
}
}
----------------------------------------------
Jim
Python 3.6
[python]
----------------------------------------
#! /usr/bin/env python
import serial
import time
from tkinter import *
ArduinoSerial = serial.Serial('com3', 9600, timeout=.1)
time.sleep(2)
global status1
def led_on():
ArduinoSerial.write(b'1')
status1 = (ArduinoSerial.readline() .decode('utf-8').strip())
print(status1)
def led_off():
ArduinoSerial.write(b'0')
status1 = (ArduinoSerial.readline().decode('utf-8').strip())
print(status1)
def led_Exit():
ArduinoSerial.write(b'0')
status1 = "Quit"
print(status1)
quit()
root = Tk()
status1 = StringVar()
root.title("Arduino Push Buttons")
btn1 = Button(root, text="Led on", command=led_on)
btn2 = Button(root, text="Led off", command=led_off)
btn3 = Button(root, text="Exit", command=led_Exit)
msg1 = Label (root, textvariable = status1, relief=RAISED,width = 20)
btn1.pack()
btn2.pack()
btn3.pack()
msg1.pack()
status1.set(StringVar())
root.mainloop()
/python]
Python 3.6
-----------------------------------------------------------
Arduino 1.6.12
int data;
void setup()
{
Serial.begin(9600); //initialize serial COM at 9600 baudrate
pinMode(13, OUTPUT); //make the LED pin (13) as output
digitalWrite (13, LOW);
}
void loop()
{
if (Serial.available()> 0)
{
data = Serial.read();
}
if (data == '1')
{
digitalWrite (13, HIGH);
Serial.println(digitalRead(13));
data = '2';
}
else if (data == '0')
{
digitalWrite (13, LOW);
Serial.println(digitalRead(13));
data = '2';
}
}
----------------------------------------------