Я играю с ардуино. В книге проектов есть проект для получения температуры от датчика температуры. Я зацепил, как он говорит, и написал следующий простой код:arduino serial и pySerial
const int sensorPin = A0;
void loop(){
int sensorVal = analogRead(sensorPin);
float voltage = (sensorVal/1024.0)* 5.0;
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
}
для печати температуры на последовательном мониторе. Я использовал pySerial, чтобы получить температуру от Arduino, как этот
try:
ser = serial.Serial('/dev/ttyACM0', 9600)
except serial.SerialException as se:
print se
exit()
while True:
temperature = ser.readline()
print "Temp from arduino", temperature
try:
temperature = float(temperature)
print "FLoat temperature", temperature
except ValueError as ve:
print ve
continue
Но проблема в том, что в то время как серийный монитор от Arduino язя показывает температуру нормально (22.3 например) обычный поплавок номер, который питон имеет номер деленная на 10
Temp from arduino 2.27
FLoat temperature 2.27
Как я могу справиться с этим?
Ваши выходы идентичны? Кроме того, вы захотите сделать 'float()' much ealier, beacause после получения данных. Вы уже испортили его, не рассматривая его как 'float()' с самого начала. Например, вы не можете выполнить 'x = 10.15; x = int (x); x = float (x); 'потому что это закончится« 10 », даже если вы попытаетесь его вернуть. Не то, чтобы это помогло, но вместо этого сделало 'temperature = float (ser.readline()'. – Torxed
Странно иметь разницу между выходом в последовательном мониторе и во входном pySerial. Я не вижу причин для этого - оба из них показать текст, поступающий из последовательного интерфейса. У меня есть два вопроса и одно предложение. Почему бы вам не разделить на 1023 вместо 1024? Почему это '- .5'? Попробуйте напечатать значение« напряжение »для серийного просмотра –
@Torxed ValueError: недействительный литерал для float(): 22.73.24 это то, что я получаю для float (ser.readline()). Как будто он читает строку и что-то из следующей строки ... Должен ли я синхронизировать arduino Serial.println() и serial.readline()? python? – Apostolos