INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Serial Monitor Zahlen Senden über 9
17.05.2015, 17:44 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2015 17:47 von paq.)
Beitrag #1
Serial Monitor Zahlen Senden über 9
Hallo

Ich möchte über die Serielle Schnitstelle verschiedebe Zahlen an den Arduino Senden (1-50). Jetzt habe ich das Problem das wen ich 2 stellige Zahlen (10,11,12,13,14) Sende nur die erste Ziffer gesendet wird

Richtig:
Eingabe: 1
Ausgabe:
1
Run 1


Falsch:
Eingabe: 12
Ausgabe:
1
Run 1
2


mein Sketch:

Code:
#include <AccelStepper.h>
#include <AFMotor.h>

// two stepper motors one on each port
AF_Stepper motor1(200, 1);
AF_Stepper motor2(200, 2);

char sendeInhalt = ' ';
// int sendeInhalt = 0; << geht auch nicht!

// you can change these to DOUBLE or INTERLEAVE or MICROSTEP!
// wrappers for the first motor!
void forwardstep1() {  
  motor1.onestep(FORWARD, DOUBLE);
}
void backwardstep1() {  
  motor1.onestep(BACKWARD, DOUBLE);
}
// wrappers for the second motor!
void forwardstep2() {  
  motor2.onestep(FORWARD, SINGLE);
}
void backwardstep2() {  
  motor2.onestep(BACKWARD, SINGLE);
}

// Motor shield has two motor ports, now we'll wrap them in an AccelStepper object
AccelStepper stepper1(forwardstep1, backwardstep1);
AccelStepper stepper2(forwardstep2, backwardstep2);

void setup()
{  
    stepper1.setMaxSpeed(800.0);
    stepper1.setAcceleration(30.0);

    
    stepper2.setMaxSpeed(300.0);
    stepper2.setAcceleration(100.0);

    Serial.begin(9600);
}

void loop()
{
            
    if (Serial.available()){
        sendeInhalt = int(Serial.read());
        
        Serial.println(sendeInhalt);
                    
        if (sendeInhalt == '1'){  
            stepper1.runToNewPosition(100);
            stepper1.run();
            Serial.println("Run 1");
        }
        
        if (sendeInhalt == '12'){  
            stepper1.runToNewPosition(-100);
            stepper1.run();
            Serial.println("Run 2");
        }
        
        Serial.flush(); //seriellen Puffer löschen

    }

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 18:06
Beitrag #2
RE: Serial Monitor Zahlen Senden über 9
Du löschst ja den Puffer bevor er die 2. Ziffer lesen kann...

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 18:32
Beitrag #3
RE: Serial Monitor Zahlen Senden über 9
das heißt jetzt was ?

selbst wen ich

Serial.flush(); //seriellen Puffer löschen

entferne geht es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 18:49 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2015 18:51 von Scherheinz.)
Beitrag #4
RE: Serial Monitor Zahlen Senden über 9
Aus dem hier
Code:
if (Serial.available()){
        sendeInhalt = int(Serial.read());
würde ich das machen

Code:
byte sendeInhalt;
.
.
.
if (Serial.available()) {
    sendeInhalt = Serial.read();


Ansonsten erwartest du einen Integer Wert, hast aber ein Ascii Zeichen eingelesen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 18:55
Beitrag #5
RE: Serial Monitor Zahlen Senden über 9
dan kommt als ausgabe

49
50

wen ich 12 eingebe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 19:31 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2015 19:34 von HaWe.)
Beitrag #6
RE: Serial Monitor Zahlen Senden über 9
49 ist der ASCII-char Wert für '1'
50 ist ASCII für '2'

Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2015, 19:34
Beitrag #7
RE: Serial Monitor Zahlen Senden über 9
ich habe das ganze jetzt so gelöst

Code:
int sendeInhalt = Serial.parseInt();

Das Problemm ist jetzt noch wen ich in processing

Code:
serialPort.write("101");

mache passiert nichts, im Arduino selber funktioniert es aber.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.05.2015, 08:48
Beitrag #8
RE: Serial Monitor Zahlen Senden über 9
(17.05.2015 19:34)paq schrieb:  ich habe das ganze jetzt so gelöst

Code:
int sendeInhalt = Serial.parseInt();

Das Problemm ist jetzt noch wen ich in processing

Code:
serialPort.write("101");

mache passiert nichts, im Arduino selber funktioniert es aber.

Kenne mich mit Processing nicht aus aber lass man die " " weg, dann sollte es funktionieren

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wartet Serial.begin() auf COM-Port? tollewurst 4 207 Gestern 09:50
Letzter Beitrag: rkuehle
  Kommunikation über das WiFi-Shield Flap 6 874 25.07.2017 14:14
Letzter Beitrag: Tommy56
  Serial.write fraju 5 717 23.07.2017 21:57
Letzter Beitrag: Mathias
  TFT Monitor und Grafiken Thor Wallhall 10 471 16.05.2017 18:15
Letzter Beitrag: Thor Wallhall
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 582 06.05.2017 13:30
Letzter Beitrag: metzgefa
  Array mit Serial.read befüllen Gonmaus 4 420 01.05.2017 09:13
Letzter Beitrag: Gonmaus
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 834 29.04.2017 14:29
Letzter Beitrag: hotsystems
  serial monitor, Ausgabe übereinander möglich?? silversurfer123 4 299 18.04.2017 19:19
Letzter Beitrag: silversurfer123
  Interrupt und Software Serial BennIY 6 489 29.03.2017 22:25
Letzter Beitrag: BennIY
  RGB Animation über Serial Steuern Medolino 5 421 20.02.2017 16:14
Letzter Beitrag: Medolino

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste