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
  Servo über Temperatur steuern querkopf71 3 73 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 98 12.11.2016 20:29
Letzter Beitrag: Hannes
  Kommunikation über das WiFi-Shield Flap 3 235 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Menü über Bluetooth Eingabe abwarten anwo 4 504 18.10.2016 08:59
Letzter Beitrag: Lolliball
  Daten über USB verarbeiten Felix91 10 326 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Code mit Verifikation über Keypad & LCD machnetz 5 215 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Speicher sparen bei serial.print?? DL1AKP 3 194 02.09.2016 13:32
Letzter Beitrag: hotsystems
  NRF24L01+ "Ping" senden, empfangen, bestätigen MeisterQ 8 387 23.08.2016 13:19
Letzter Beitrag: MeisterQ
  Arduino Steuern über eigne Homepage b3ta 8 404 16.08.2016 11:07
Letzter Beitrag: Pit
  Serial Monitor ASCII 1 schreiben BennIY 11 581 01.08.2016 16:42
Letzter Beitrag: Mathias

Gehe zu:


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