Salve, ho scritto questo codice che lo pubblico qui, per sapere come posso fare per gestire dei servo motori invece del semplice LED 13.
vi allego il codice python:
from libs.f import *
import serial
import time
arduino = serial.Serial('COM3',9600)
time.sleep(1)
while(True):
val = my_input(3,": ", '?')
if val=="H":
h = "H"
arduino.write(bytes(h, 'UTF-8'))
print("LED ON")
if val =="L":
l = "L"
arduino.write(bytes(l, 'UTF-8'))
print("LED OFF")
if val == "Q":
Exit()
arduino.close()
per i servo per caso devo andare da 0 a 180 gradi?
Mica ho capito. Che Arduino usi ?
Probabilmente hai su Arduino uno sketch che riceve via seriale (COM3) dei comandi da Python, ma che sketch c'e' su Arduino ? Firmata ?
Non proprio. Qui stiamo spedendo un singolo carattere, se spedisci 120 ad esempio stai spedendo un testo di tre caratteri, '1','2' e '3' ovvero una stringa (vettore/array di caratteri terminati da null)
Da Arduino stai leggendo 1 char, bisogna usare a questo punto la Serial.parseInt() per leggere i vari caratteri (e poi lui li converte in valore numerico)
Se Python non mi inganna dovresti essere in grado di inviare un singolo byte attraverso il metodo write, visto che un byte puo essere interpretato come un valore numerico compreso tra 0 e 255 l'intervallo 0 180 è completamente coperto, per tanto potresti provare a scrivere arduino.write(180) dalla parte di Arduino riceverai il byte che potrai usare per impostare il tuo servo, basterebbe un semplice servo.write(Serial.read());