Hallo Leute,
ich möchte über einen Arduino Mega einen Motor steuern. Dazu muss ich dem Arduino mit LabVIEW Daten für Geschwindigkeit (G), Schrittanzahl (S) und Drehrichtung (R) vorgeben und anschießend den Motor mittels digitalen Pin starten.
Zur Zeit versuche ich die Kommunikation zum Laufen zu bringen. Für eine Einzelne LED mit einem Einzelnen Wert ist das auch kein Problem. Jetzt will ich aber gern dem Arduino einen String per Serieller Schnittstelle schicken “G123”, “S500” und “R1” . Der erste Buchstabe soll die Variable angeben die geändert werden soll und die Zahl danach den Wert dieser Variable.
Zum Testen würde es mir reichen, wenn ich die externe LED und die On Board LED blinken lassen kann.
Dazu hätte ich gern, dass wenn ich A5 (LED 1 blinkt 5 mal) B15 (LED 2 binkt 15 mal).
Das ganze muss ich wahrscheinlich über eine Case Struktur aufbauen. Nur wie bekomme ich dann am besten die empfangenen Zahlen/ASCII-Zeichen als den Wert den ich gesendet habe?
Hier der Code mit dem ich die Kommunikation allgemein getestet habe.
#include <Wire.h>
#include <SPI.h>
#include <Servo.h>
#include "LabVIEWInterface.h"
/*********************************************************************************
** setup()
**
** Initialize the Arduino and setup serial communication.
**
** Input: None
** Output: None
*********************************************************************************/
int incomingByte = 0;
void setup()
{
// >>>> Setup Motor <<<<
Serial.begin(9600);
pinMode(40, OUTPUT);
digitalWrite(40,LOW);
// Initialize Serial Port With The Default Baud Rate
syncLV();
// Place your custom setup code here
}
/*********************************************************************************
** loop()
**
** The main loop. This loop runs continuously on the Arduino. It
** receives and processes serial commands from LabVIEW.
**
** Input: None
** Output: None
*********************************************************************************/
void loop()
{
// Check for commands from LabVIEW and process them.
checkForCommand();
// Place your custom loop code here (this may slow down communication with LabVIEW)
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
if (incomingByte == 97){ // LED Anschalten, wenn 'a' gesendet
digitalWrite(40,HIGH);
}
else if(incomingByte == 98){ // LED ausschalten, wenn 'b' gesendet
digitalWrite(40,LOW);
}
}
if(acqMode==1)
{
sampleContinously();
}
}