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
  Display über I2-Bus betreiben mfri 22 346 Heute 11:06
Letzter Beitrag: renid55
  LED langsam über 15 Minuten dimmen Kriskind 9 192 17.01.2017 21:10
Letzter Beitrag: Tommy56
  Messdatenausgabe auf Webserver über NanoESP RivaDynamite 10 317 10.01.2017 15:49
Letzter Beitrag: renid55
  Über drei Taster zwei externe Timer steuern Sidamo 23 356 09.01.2017 20:12
Letzter Beitrag: Tommy56
  LED Dimmen über Bewegungsmelder Jens040774 8 172 05.01.2017 19:07
Letzter Beitrag: renid55
  Serial Output Buffer abfragen BennIY 5 85 05.01.2017 18:51
Letzter Beitrag: Tommy56
  Variable über EEPROM in ein Script einbinden... Badger1875 5 485 01.01.2017 15:08
Letzter Beitrag: Tommy56
  Korrekte serial.print Befehlszeile Franz54 16 513 22.12.2016 18:37
Letzter Beitrag: renid55
  Arduino IDE Serial Plotter futsch? SensorX10 2 183 13.12.2016 13:42
Letzter Beitrag: SensorX10
  Servo über Temperatur steuern querkopf71 3 221 07.12.2016 19:21
Letzter Beitrag: hotsystems

Gehe zu:


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