Hallo,
ich möchte beim Arduino Werte über den Seriellen Monitor an den Arduino
schicken, mit denen ich später weiterarbeiten möchte. Diese Werte möchte
ich eigentlich in HEX eingeben, ist aber das kommt später.
Zum Testen möchte ich die Eingegebenen Werte zunächst einfach ausgeben.
Aber hier gibt es schon Probleme bei der Ausgabe
1 | char buffer[10];
|
2 | int key_A[6], key_B[6], key[6];
|
3 | int dataA[6], dataB[6], data[6];
|
4 | int bindex = 0, dindex = 0;
|
5 |
|
6 | void setup() {
|
7 | Serial.begin(9600);
|
8 | }
|
9 |
|
10 | void loop() {
|
11 | Serial.println("Input Key");
|
12 | read_key();
|
13 | Serial.println("Output KEY");
|
14 | for (int i = 0; i < sizeof(key_A); i++) {
|
15 | Serial.println(data[i]);
|
16 | }
|
17 | }
|
18 |
|
19 |
|
20 | int read_key() {
|
21 | while (!Serial.available()) {}
|
22 | while (Serial.available() > 0) {
|
23 | buffer[bindex] = Serial.read(); //aktuelles Zeichen einlesen
|
24 | if (buffer[bindex] == ',') { //Trenner oder Zeilenende gefunden
|
25 | dataA[dindex] = atoi(buffer); //Umwandeln in eine Zahl
|
26 | dindex++;
|
27 | bindex = 0; //Buffer Index zurücksetzen
|
28 | if (buffer[bindex] == '\n') {
|
29 | bindex = 0;
|
30 | dindex = 0;
|
31 | }
|
32 | }
|
33 | else {
|
34 | bindex++;
|
35 | }
|
36 | }
|
37 | }
|
in der funktion read_key() ermittel ich die eingegebenen Werte. dazu
setze ich zunächst alle werte in ein weiteren array, aus dem ich später
mit atoi() einen wert bekomme. Das Funktioniert auch.
Wenn ich als Input schreibe:
1,2,3,4,5,6,
bekomme ich im Montior folgendes
1 | Input
|
2 | Output
|
3 | 0
|
4 | 0
|
5 | 0
|
6 | 0
|
7 | 0
|
8 | 0
|
9 | 0
|
10 | 0
|
11 | 0
|
12 | 0
|
13 | 0
|
14 | 0
|
15 | Input
|
16 | Output
|
17 | 0
|
18 | 0
|
19 | 0
|
20 | 0
|
21 | 0
|
22 | 0
|
23 | 1
|
24 | 0
|
25 | 0
|
26 | 0
|
27 | 0
|
28 | 0
|
29 | Input
|
30 | Output
|
31 | 0
|
32 | 0
|
33 | 0
|
34 | 0
|
35 | 0
|
36 | 0
|
37 | 1
|
38 | 2
|
39 | 3
|
40 | 4
|
41 | 5
|
42 | 6
|
43 | Input
|
Wieso läuft der die loop() immer wieder durch? und gibt mir so etwas
heraus?
eigentlich möchte ich im späteren Verlauf die Funktion so benutzen, dass
sie immer wieder aufgerufen werden kann
1 | void loop(){
|
2 | ...
|
3 | key_A = read_key()
|
4 | key_B = read_key()
|
5 | ...
|
6 | }
|
hat jemand einen tip, wie ich das hinbekommen kann?
Gruß