首先,执行easy_install pyserial。python程序,向串口写一个数字。
import serial
s = serial.Serial()
s.port = 3
s.baudrate = 9600
s.stopbits = 1
s.open()
#print s
print s.readline().strip()
s.write('10')
print s.readline().strip()
执行easy_install docopt,生活更美好。python程序版本0.2。
'''talk with arduino
usage:
arduino.py <num>
options:
-h --help
-v --version
'''
from docopt import docopt
import serial
if __name__ == '__main__':
arguments = docopt(__doc__, version='0.2')
try:
num = arguments['<num>']
int(num)
except ValueError as e:
print 'argument must be a integer, from 1 to 254'
exit(-1)
s = serial.Serial()
s.port = 3
s.baudrate = 9600
s.stopbits = 1
s.open()
#print s
print s.readline().strip()
s.write(num)
print s.readline().strip()
s.close()
arduino从串口读入呼吸灯亮度的退化值1~254。
int pin = 9; int stay = 5; void setup () { pinMode(pin, OUTPUT); Serial.begin(9600); Serial.println(":-] hi"); delay(300); } void loop () { int _stay = 0; while (Serial.available()) { char in = Serial.read(); //Serial.println(in); continue; if (in >= 48 && in <= 57) { _stay = _stay * 10 + (in - 48); } else { _stay = 0; break; } } if (_stay != stay && _stay > 0 && _stay < 255) { stay = _stay; Serial.println(stay); } for(int fade = 0 ; fade <= 255; fade += stay) { analogWrite(pin, fade); delay(30); } for(int fade = 255 ; fade >= 0; fade -= stay) { analogWrite(pin, fade); delay(30); } }
done! enjoy it