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
  Variablenname über Schleife deklarieren golden_eagle 9 238 12.02.2018 22:36
Letzter Beitrag: golden_eagle
  Led über ethernet schalten dahans 2 185 06.02.2018 20:01
Letzter Beitrag: hotsystems
  Servo über Transistor Harry 21 1.189 29.01.2018 19:30
Letzter Beitrag: hotsystems
  Float über I2C zwischen 2 Arduinos UNO Marduino_UNO 12 3.342 13.01.2018 11:54
Letzter Beitrag: hotsystems
  Arduino Software Serial - Delay notwendig? Zipfel1 18 840 02.01.2018 11:59
Letzter Beitrag: Tommy56
Information DHT 22 Daten per 433 Mhz senden Niklas 5 583 10.12.2017 17:15
Letzter Beitrag: hotsystems
  2 Befehle über Serielle Schnittstelle interpretieren phischmi 14 758 04.12.2017 08:52
Letzter Beitrag: phischmi
  I2C Slave Empfang geht aber Senden? Franz54 9 828 09.11.2017 22:05
Letzter Beitrag: Tommy56
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 1.391 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Richtungsblinker und Warnblinker über jeweils einen Schalter Crazydiver 25 1.568 04.10.2017 12:47
Letzter Beitrag: hotsystems

Gehe zu:


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