2017-02-01 50 views
2

在我最近的項目中,我希望將數據從Arduino傳輸到Python。它已經完成了。如何將值存儲在來自arduino的列表(python)中?

在這裏,我的Arduino代碼:

float TPS_MIN = 0.00; 
float TPS_MAX = 5.00; 

float MAP_MIN = 0.85; 
float MAP_MAX = 1.90; 

float LOAD_MIN_TPS = 2.00; 
float LOAD_MAX_TPS = 10.00; 

float LOAD_MIN_MAP = 9.69; 
float LOAD_MAX_MAP = 82.18; 

float m1, m2; 

float y1, y2; 

float TPS[] = {0, 0.4, 0.8, 1.2, 1.6, 2, 2.4, 2.8, 3.2, 3.6, 4, 4.4, 4.8, 5}; 
float MAP[] = {0.85, 0.95, 1.05, 1.15, 1.25, 1.35, 1.45, 1.55, 1.65, 1.75, 1.85, 1.9}; 

int i; 
int j; 

void setup() 
{ 
    Serial.begin(9600); 
} 

void loop() 
{ 
    m1 = (LOAD_MAX_TPS - LOAD_MIN_TPS)/(TPS_MAX - TPS_MIN); 

    for(i = 0; i < 14; i++) 
    { 
    y1 = m1 * (TPS[i] - TPS_MIN) + LOAD_MIN_TPS; 
    Serial.println(y1); 
    } 

    m2 = (LOAD_MAX_MAP - LOAD_MIN_MAP)/(MAP_MAX - MAP_MIN); 

    for(j = 0; j < 12; j++) 
    { 
    y2 = m2 * (MAP[j] - MAP_MIN) + LOAD_MIN_MAP; 
    Serial.println(y2); 
    } 
    delay(10000000); 
} 

而且這是我的Python代碼:

import serial 
arduino = serial.Serial('COM12', 9600, timeout = .1) 
while True: 
    data = arduino.readline() 
    if data: 
     print data 

和輸出(蟒蛇殼):

2.00 


2.64 


3.28 


3.92 


4.56 


5.20 


5.84 


6.48 


7.12 


7.76 


8.40 


9.04 


9.68 


10.00 


9.69 


16.59 


23.50 


30.40 


37.31 


44.21 


51.11 


58.02 


64.92 


71.82 


78.73 


82.18 

現在,我想將此值存儲在列表中。我不知道它是如何完成的。提出一些建議。

+1

您應該提供**預期行爲的例子**,因爲我們無法讀懂您的想法。命題*「但所有數據存儲在一個變量中」*和* <<我如何區分不同數組中的所有數據>> *可以說是不明確的。你可以從這個'TPS = [] LOAD = [] ... TPS.append(data.split()[2])開始'LOAD.append(data.split()[5])' –

+0

@PatrickTrentin好吧,讓我用另一個例子來解釋。 – Hasan

+0

你改變了幾次你的輸出,因爲它現在你只有一個值的流..你想他們都在同一個數組? –

回答

3

您可能想要這樣,但由於您運行的是無限循環,因此您將不斷更改附加數據的列表。

import serial 
arduino = serial.Serial('COM12', 9600, timeout = .1) 
arduino_data = [] # declare a list 
while True: 
    data = arduino.readline() 
    if data: 
     arduino_data.append(data) # Append a data to your declared list 
     print arduino_data 
+1

謝謝。它爲我工作。 – Hasan

+1

很高興知道。 – Aniket

相關問題