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
Information DHT 22 Daten per 433 Mhz senden Niklas 5 138 10.12.2017 17:15
Letzter Beitrag: hotsystems
  2 Befehle über Serielle Schnittstelle interpretieren phischmi 14 368 04.12.2017 08:52
Letzter Beitrag: phischmi
  I2C Slave Empfang geht aber Senden? Franz54 9 582 09.11.2017 22:05
Letzter Beitrag: Tommy56
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 952 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Richtungsblinker und Warnblinker über jeweils einen Schalter Crazydiver 25 1.263 04.10.2017 12:47
Letzter Beitrag: hotsystems
  Nextion Display komma Zahlen darstellen becki133 8 682 18.09.2017 18:26
Letzter Beitrag: becki133
  Kommunikation über das WiFi-Shield Flap 13 1.588 12.09.2017 22:12
Letzter Beitrag: Flap
  Wartet Serial.begin() auf COM-Port? tollewurst 4 565 19.08.2017 09:50
Letzter Beitrag: rkuehle
  Serial.write fraju 5 947 23.07.2017 21:57
Letzter Beitrag: Mathias
  TFT Monitor und Grafiken Thor Wallhall 10 797 16.05.2017 18:15
Letzter Beitrag: Thor Wallhall

Gehe zu:


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