Brushless Motor steuern über RS232 Schnittstelle

Hallo,

ich schreibe ein Programm für Steuerung der Brushless Motor. Es ist ein Motor von Faulhaber und ich steuere es mit dem entsprechenden Motion Controller für den Motor.

Der Motion Controller hat RS232 Schnittstelle ich habe es mit Arduino UNO verbunden und alles funktioniert nur jeder Loop Zyklus zuckt es im Motor. Kann mann dass irgendwie sinvoll umgehen dass sozusagen der loop läuft bis sich da nichts ändert?

Der kleine Ausschnitt aus dem Programm, was soll laufen, bis sich etwas ändert.

Serial.println("encres 64");//encres64
Serial.println("sor 0");//sor0
Serial.println("a 1");//a1
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4

Wie soll das denn funktionieren ?
Der Uno hat keine RS232 Schnittstelle.
Damit machst du eher den Uno kaputt.

Dafür gibts eine MAX3232 Schnitstelle für Arduino.

Dann solltest du das auch bitte so beschreiben.
Wir können nicht auf deinen Arbeitstisch schauen.
Und bitte poste deinen kompletten Sketch. Mit dem Fragment können wir nichts anfangen.

Ich dachte dass es selbsterklärend ist. Den kompletten Sketch kann ich gerne Posten. Ich wollte es nur einfach halten.

#include <SPI.h>

char CRPM[18] ;// für eine 5 stellige Zahl

unsigned long start, finished, elapsed; // Globale Variablen

// Variablen
int drehzahl = 0; // Startdrehzahl
const int drehzahlSchritt = 5; // Schrittgröße für die Drehzahl
const int maxDrehzahl = 500; // Maximale Drehzahl
const int minDrehzahl = -500; // Minimale Drehzahl
int VSpeed;



//TFT
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <TouchScreen.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#define MINPRESSURE 200
#define MAXPRESSURE 1000
#include <Interval.h>

/////Touchdisplay

// ALL Touch panels and wiring is DIFFERENT
// copy-paste results from TouchScreen_Calibr_native.ino
//const int XP = 8, XM = A2, YP = A3, YM = 9; //ID=0x9341 Hochformat
const int XP = 9, XM = A3, YP = A2, YM = 8; //ID=0x9341 Querformat
//const int TS_LEFT = 907, TS_RT = 136, TS_TOP = 942, TS_BOT = 139; //Hochformat
const int TS_LEFT = 92, TS_RT = 870, TS_TOP = 860, TS_BOT = 140; //Querformat
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

Adafruit_GFX_Button minus_btn, plus_btn, lock_btn, unlock_btn,plus50_btn,minus50_btn,plus25_btn,minus25_btn;

int pixel_x, pixel_y;     //Touch_getXY() updates global vars
bool Touch_getXY(void)
{
    TSPoint p = ts.getPoint();
    pinMode(YP, OUTPUT);      //restore shared pins
    pinMode(XM, OUTPUT);
    digitalWrite(YP, HIGH);   //because TFT control pins
    digitalWrite(XM, HIGH);
    bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE);
    if (pressed) {
        pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); //.kbv makes sense to me
        pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());
    }
    return pressed;
}

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
///////////

bool showSymbol1 = true; // Flag für das Symbol
bool Sperre = true;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600,SERIAL_8N1);

Serial.println("CONTMOD");//CONTMOD  
Serial.println("SOR 0");//SOR0
Serial.println("ADR");//APL0
Serial.println("MV 0");//MOTTYP0
Serial.println("MAV 25");//KN366
Serial.println("STW 1");//RM7100
Serial.println("STN 1000");//POHOSEQ0
Serial.println("LL 1800000000");//HP7
Serial.println("LL -1800000000");//HB0
Serial.println("APL 0");//HD0
Serial.println("SIN1");//HD0
Serial.println("SETPLC");//HOSP100
Serial.println("ERROUT");//HA0
Serial.println("DCE 200");//HL0
Serial.println("LPN 16");//HL0
Serial.println("C O");//HN0
Serial.println("HB 0");//CAHOSEQ
Serial.println("HP 7");//ADR
Serial.println("HD 0");//LPC5000
Serial.println("SHA 0");//LCC2000
Serial.println("SHN 0");//AC30000
Serial.println("SHL 0");//I3
Serial.println("POHOSEQ 0");//POR3
Serial.println("HOSP 100");//SP10000
Serial.println("ENCRES 64");//MV0
Serial.println("KN 220");//MAV25
Serial.println("RM 1470");//LL2000000000
Serial.println("KOEFFI 2534");//LL-2000000000
Serial.println("POLNUM 4");//LPN16
Serial.println("SP 15000");//STW1
Serial.println("AC 30000");//STN1000
Serial.println("DEC 30000");//ENCRES64
Serial.println("SR 1");//DEV30000
Serial.println("POR 4");//DCE200
Serial.println("I 33");//V295
Serial.println("PP 64");//
Serial.println("PD 2");//ENPROG
Serial.println("CI 16");//ANSW1
Serial.println("LPC 6000");//NODEADR0
Serial.println("LCC 2000");
Serial.println("DEV 30000");
Serial.println("CORRIDOR 20");
Serial.println("EN");
Serial.println("V 100");
Serial.println("ENPROG");
Serial.println("ANSW 2");
Serial.println("NET 0");
Serial.println("NODEADR 0");

  
/////Touchdisplay
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
  Serial.println(F("Using Adafruit 2.4\" TFT Arduino Shield Pinout"));
#else
  Serial.println(F("Using Adafruit 2.4\" TFT Breakout Board Pinout"));
#endif

  Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());

  tft.reset();

  uint16_t identifier = tft.readID();
  if(identifier == 0x9325) {
    Serial.println(F("Found ILI9325 LCD driver"));
  } else if(identifier == 0x9328) {
    Serial.println(F("Found ILI9328 LCD driver"));
  } else if(identifier == 0x4535) {
    Serial.println(F("Found LGDP4535 LCD driver"));
  }else if(identifier == 0x7575) {
    Serial.println(F("Found HX8347G LCD driver"));
  } else if(identifier == 0x9341) {
    Serial.println(F("Found ILI9341 LCD driver"));
  }else if(identifier == 0x7783) {
    Serial.println(F("Found ST7781 LCD driver"));
  }else if(identifier == 0x8230) {
    Serial.println(F("Found UC8230 LCD driver"));  
  }
  else if(identifier == 0x8357) {
    Serial.println(F("Found HX8357D LCD driver"));
  } else if(identifier==0x0101)
  {     
      identifier=0x9341;
       Serial.println(F("Found 0x9341 LCD driver"));
  }else {
    Serial.print(F("Unknown LCD driver chip: "));
    Serial.println(identifier, HEX);
    Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
    Serial.println(F("  #define USE_ADAFRUIT_SHIELD_PINOUT"));
    Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
    Serial.println(F("If using the breakout board, it should NOT be #defined!"));
    Serial.println(F("Also if using the breakout, double-check that all wiring"));
    Serial.println(F("matches the tutorial."));
    identifier=0x9341;
   
  }

  tft.begin(identifier);

   
 
   tft.setRotation(1);            //PORTRAIT
    tft.fillScreen(BLACK);


bool showSymbol1 = true; // Flag für das Symbol

   
tft.setCursor(60,0); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("");
tft.setCursor(70,30); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("");
tft.setCursor(90,60); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("");
tft.setCursor(0,100); tft.setTextSize(2);
tft.setTextColor(WHITE, BLACK); 
tft.print("");
tft.setCursor(0,140); tft.setTextSize(2);
tft.setTextColor(WHITE, BLACK); 
tft.print("");
tft.setCursor(0,160); tft.setTextSize(2);
tft.setTextColor(WHITE, BLACK); 
tft.print("");

delay(10000);
tft.fillScreen(BLACK);
 minus_btn.initButton(&tft,  30, 210, 60, 60,WHITE, CYAN, BLACK, "-", 4);
 plus_btn.initButton(&tft, 291, 210, 60, 60, WHITE, CYAN, BLACK, "+", 4);
 lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
 minus25_btn.initButton(&tft,  30, 150, 60, 50,WHITE, CYAN, BLACK, "-25", 3);
 plus25_btn.initButton(&tft, 291, 150, 60, 50, WHITE, CYAN, BLACK, "+25", 3);
  minus50_btn.initButton(&tft,  105, 160, 60, 50,WHITE, CYAN, BLACK, "-50", 3);
 plus50_btn.initButton(&tft, 216, 160, 60, 50, WHITE, CYAN, BLACK, "+50", 3);
 //unlock_btn.initButton(&tft, 140, 230, 160, 20, WHITE, CYAN, BLACK, "gesppert", 2);
// unlock_btn.initButton(&tft, 200, 210, 60, 60, WHITE, CYAN, BLACK, "e", 4);
 minus_btn.drawButton(false);
 plus_btn.drawButton(false);
 lock_btn.drawButton(false);
 minus25_btn.drawButton(false);
 plus25_btn.drawButton(false);
  minus50_btn.drawButton(false);
 plus50_btn.drawButton(false);
 //unlock_btn.drawButton(false);
 }
void loop() {


VSpeed = drehzahl;
snprintf(CRPM,sizeof(CRPM),"%" "18d", VSpeed);// 5 stellig


 bool down = Touch_getXY();
 minus_btn.press(down && minus_btn.contains(pixel_x, pixel_y));
 plus_btn.press(down && plus_btn.contains(pixel_x, pixel_y));
 lock_btn.press(down && lock_btn.contains(pixel_x, pixel_y));
 unlock_btn.press(down && unlock_btn.contains(pixel_x, pixel_y));
 minus25_btn.press(down && minus25_btn.contains(pixel_x, pixel_y));
 plus25_btn.press(down && plus25_btn.contains(pixel_x, pixel_y));
  minus50_btn.press(down && minus50_btn.contains(pixel_x, pixel_y));
 plus50_btn.press(down && plus50_btn.contains(pixel_x, pixel_y));
 unsigned long start = micros();
 //bool down = Touch_getXY();
 
 if (minus_btn.justReleased())
   minus_btn.drawButton();
 if (plus_btn.justReleased())
   plus_btn.drawButton();
 if (lock_btn.justReleased())
 lock_btn.drawButton();
  if (unlock_btn.justReleased())
   unlock_btn.drawButton();
 if (plus25_btn.justReleased())
   plus25_btn.drawButton();
 if (minus25_btn.justReleased())
   minus25_btn.drawButton();
 if (plus50_btn.justReleased())
   plus50_btn.drawButton();
 if (minus50_btn.justReleased())
   minus50_btn.drawButton();

 if(!Sperre  && plus25_btn.justPressed()){
   plus25_btn.drawButton(true);
    drehzahl = drehzahl+25;
     if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  } 
   if(!Sperre  && plus50_btn.justPressed()){
   plus50_btn.drawButton(true);
    drehzahl = drehzahl+50;
     if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
   if(!Sperre  && minus25_btn.justPressed()){
   minus25_btn.drawButton(true);
    drehzahl = drehzahl-25;
     if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
   if(!Sperre  && minus50_btn.justPressed()){
   minus50_btn.drawButton(true);
    drehzahl = drehzahl-50;
     if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (lock_btn.justPressed()) {
    showSymbol1 = !showSymbol1; // Symbol wechseln
    drawButton(); // Taste neu zeichnen
    delay(200); // Entprellen
  }   

  
 if (!Sperre  && minus_btn.justPressed()) {
   minus_btn.drawButton(true);
   drehzahl -= drehzahlSchritt; // Drehzahl verringern
    if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
 if (!Sperre  && plus_btn.justPressed()) {
   plus_btn.drawButton(true);
       drehzahl += drehzahlSchritt; // Drehzahl erhöhen
    if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf maximale Drehzahl
    }
    delay(200); // Entprellzeit
  }
   



tft.setCursor(100,0); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("Drehzahl");
tft.setCursor(40,30); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("des Kegels RPM");
tft.setCursor(100,80); tft.setTextSize(5);
tft.setTextColor(WHITE, BLACK); 

if (VSpeed<=99){
 tft.print(" ");
 tft.print(VSpeed);
 tft.print(" ");
}
else if(VSpeed<=9) {
 tft.print("  ");
 tft.print( VSpeed);
 tft.print(" ");
}
else {
 tft.print(VSpeed);
 tft.print("");
}
 



  




Serial.println("encres 64");//encres64
Serial.println("sor 0");//sor0
Serial.println("a 1");//a1
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v29

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v29

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v29

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v29

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295



Serial.println("delay 4");//delay4
Serial.println("jmp 1");//jmp1
}
void drawButton() {
 bool down = Touch_getXY();
  if (showSymbol1) {
     lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
     
   Sperre = true;
  } else {
     lock_btn.initButton(&tft, 160, 220, 160, 40, GREEN, GREEN, BLACK, "Entsperrt", 2);
     
    Sperre = false; 
  }
}

Ganz sicher nicht. das waren doch nur serielle Ausgaben, was soll man da erkennen ?

Was genau bezweckst du mit dieser mehrfachen Wiederholung ?
Aktuell sehe ich da keinen Sinn drin.

Durch den Loop Zyklus zuckt es im Motor. Wenn sich aber

Serial.println("encres 64");//encres64
Serial.println("sor 0");//sor0
Serial.println("a 1");//a1
Serial.print("V");//a1
Serial.println(VSpeed);//v295
Serial.println("delay 4");//delay4

unendlich wiederholen würde bis sich durch den tastendruck die VSpeed nicht ändert. Dann würde den Motor ruhig laufen. Deswegen wiederholt sich es so oft im ganzen Programm.

Huch....verstehe ich das richtig, du möchtest mit einer "fehlerhaften" Programmierung einen vorhandenen Fehler übergehen ?

Nee, da solltest du deinen Sketch erstmal grundlegend überarbeiten.

1 Like

Danke für deine größartige Hilfe

alles ist logisch geschrieben eigentlich

#include <SPI.h>
//TFT
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <TouchScreen.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#define MINPRESSURE 200
#define MAXPRESSURE 1000
#include <Interval.h>

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
///////////


char CRPM[18] ;// für eine 5 stellige Zahl

// Variablen
int drehzahl = 0; // Startdrehzahl
const int drehzahlSchritt = 5; // Schrittgröße für die Drehzahl
const int maxDrehzahl = 500; // Maximale Drehzahl
const int minDrehzahl = -500; // Minimale Drehzahl
int VSpeed;

bool showSymbol1 = true; // Flag für das Symbol
bool Sperre = true;



/////Touchdisplay

// ALL Touch panels and wiring is DIFFERENT
// copy-paste results from TouchScreen_Calibr_native.ino
//const int XP = 8, XM = A2, YP = A3, YM = 9; //ID=0x9341 Hochformat
const int XP = 9, XM = A3, YP = A2, YM = 8; //ID=0x9341 Querformat
//const int TS_LEFT = 907, TS_RT = 136, TS_TOP = 942, TS_BOT = 139; //Hochformat
const int TS_LEFT = 92, TS_RT = 870, TS_TOP = 860, TS_BOT = 140; //Querformat
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

Adafruit_GFX_Button minus_btn, plus_btn, lock_btn, unlock_btn,plus50_btn,minus50_btn,plus25_btn,minus25_btn;

int pixel_x, pixel_y;     //Touch_getXY() updates global vars
bool Touch_getXY(void)
{
    TSPoint p = ts.getPoint();
    pinMode(YP, OUTPUT);      //restore shared pins
    pinMode(XM, OUTPUT);
    digitalWrite(YP, HIGH);   //because TFT control pins
    digitalWrite(XM, HIGH);
    bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE);
    if (pressed) {
        pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); //.kbv makes sense to me
        pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());
    }
    return pressed;
}

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600,SERIAL_8N1);

faulhaber();
setupscreen(); 
displayWelcomeMessage();
tft.fillScreen(BLACK);
initializeButtons();

}
void setupscreen() {
/////Touchdisplay
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
  Serial.println(F("Using Adafruit 2.4\" TFT Arduino Shield Pinout"));
#else
  Serial.println(F("Using Adafruit 2.4\" TFT Breakout Board Pinout"));
#endif

  Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());

  tft.reset();

  uint16_t identifier = tft.readID();
  if(identifier == 0x9325) {
    Serial.println(F("Found ILI9325 LCD driver"));
  } else if(identifier == 0x9328) {
    Serial.println(F("Found ILI9328 LCD driver"));
  } else if(identifier == 0x4535) {
    Serial.println(F("Found LGDP4535 LCD driver"));
  }else if(identifier == 0x7575) {
    Serial.println(F("Found HX8347G LCD driver"));
  } else if(identifier == 0x9341) {
    Serial.println(F("Found ILI9341 LCD driver"));
  }else if(identifier == 0x7783) {
    Serial.println(F("Found ST7781 LCD driver"));
  }else if(identifier == 0x8230) {
    Serial.println(F("Found UC8230 LCD driver"));  
  }
  else if(identifier == 0x8357) {
    Serial.println(F("Found HX8357D LCD driver"));
  } else if(identifier==0x0101)
  {     
      identifier=0x9341;
       Serial.println(F("Found 0x9341 LCD driver"));
  }else {
    Serial.print(F("Unknown LCD driver chip: "));
    Serial.println(identifier, HEX);
    Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
    Serial.println(F("  #define USE_ADAFRUIT_SHIELD_PINOUT"));
    Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
    Serial.println(F("If using the breakout board, it should NOT be #defined!"));
    Serial.println(F("Also if using the breakout, double-check that all wiring"));
    Serial.println(F("matches the tutorial."));
    identifier=0x9341;
   
  }

  tft.begin(identifier);

   
 
   tft.setRotation(1);            //PORTRAIT
    tft.fillScreen(BLACK);


bool showSymbol1 = true; // Flag für das Symbol
}
   
void faulhaber() {
Serial.println("CONTMOD");//CONTMOD  
Serial.println("SOR 0");//SOR0
Serial.println("ADR");//APL0
Serial.println("MV 0");//MOTTYP0
Serial.println("MAV 25");//KN366
Serial.println("STW 1");//RM7100
Serial.println("STN 1000");//POHOSEQ0
Serial.println("LL 1800000000");//HP7
Serial.println("LL -1800000000");//HB0
Serial.println("APL 0");//HD0
Serial.println("SIN1");//HD0
Serial.println("SETPLC");//HOSP100
Serial.println("ERROUT");//HA0
Serial.println("DCE 200");//HL0
Serial.println("LPN 16");//HL0
Serial.println("C O");//HN0
Serial.println("HB 0");//CAHOSEQ
Serial.println("HP 7");//ADR
Serial.println("HD 0");//LPC5000
Serial.println("SHA 0");//LCC2000
Serial.println("SHN 0");//AC30000
Serial.println("SHL 0");//I3
Serial.println("POHOSEQ 0");//POR3
Serial.println("HOSP 100");//SP10000
Serial.println("ENCRES 64");//MV0
Serial.println("KN 220");//MAV25
Serial.println("RM 1470");//LL2000000000
Serial.println("KOEFFI 2534");//LL-2000000000
Serial.println("POLNUM 4");//LPN16
Serial.println("SP 15000");//STW1
Serial.println("AC 30000");//STN1000
Serial.println("DEC 30000");//ENCRES64
Serial.println("SR 1");//DEV30000
Serial.println("POR 4");//DCE200
Serial.println("I 33");//V295
Serial.println("PP 64");//
Serial.println("PD 2");//ENPROG
Serial.println("CI 16");//ANSW1
Serial.println("LPC 6000");//NODEADR0
Serial.println("LCC 2000");
Serial.println("DEV 30000");
Serial.println("CORRIDOR 20");
Serial.println("EN");
Serial.println("V 100");
Serial.println("ENPROG");
Serial.println("ANSW 2");
Serial.println("NET 0");
Serial.println("NODEADR 0");
}

void initializeButtons() {
 minus_btn.initButton(&tft,  30, 210, 60, 60,WHITE, CYAN, BLACK, "-", 4);
 plus_btn.initButton(&tft, 291, 210, 60, 60, WHITE, CYAN, BLACK, "+", 4);
 lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
 minus25_btn.initButton(&tft,  30, 150, 60, 50,WHITE, CYAN, BLACK, "-25", 3);
 plus25_btn.initButton(&tft, 291, 150, 60, 50, WHITE, CYAN, BLACK, "+25", 3);
  minus50_btn.initButton(&tft,  105, 160, 60, 50,WHITE, CYAN, BLACK, "-50", 3);
 plus50_btn.initButton(&tft, 216, 160, 60, 50, WHITE, CYAN, BLACK, "+50", 3);
 //unlock_btn.initButton(&tft, 140, 230, 160, 20, WHITE, CYAN, BLACK, "gesppert", 2);
// unlock_btn.initButton(&tft, 200, 210, 60, 60, WHITE, CYAN, BLACK, "e", 4);
 minus_btn.drawButton(false);
 plus_btn.drawButton(false);
 lock_btn.drawButton(false);
 minus25_btn.drawButton(false);
 plus25_btn.drawButton(false);
  minus50_btn.drawButton(false);
 plus50_btn.drawButton(false);
 //unlock_btn.drawButton(false);
 }
void displayWelcomeMessage() {
    tft.setCursor(60, 0);
    tft.setTextSize(3);
    tft.setTextColor(WHITE, BLACK);
    tft.print("");
    tft.setCursor(70, 30);
    tft.print("");
    tft.setCursor(90, 60);
    tft.print("Apparatur");
    tft.setCursor(0, 100);
    tft.setTextSize(2);
    tft.print("");
    tft.setCursor(0, 140);
    tft.print("");
    tft.setCursor(0, 160);
    tft.print("Halle/Saale");
     delay(10000);
    tft.fillScreen(BLACK);
    
}
void updateTouch() {
    bool down = Touch_getXY();
    // Button-Status aktualisieren
    minus_btn.press(down && minus_btn.contains(pixel_x, pixel_y));
    plus_btn.press(down && plus_btn.contains(pixel_x, pixel_y));
    lock_btn.press(down && lock_btn.contains(pixel_x, pixel_y));
    minus25_btn.press(down && minus25_btn.contains(pixel_x, pixel_y));
    plus25_btn.press(down && plus25_btn.contains(pixel_x, pixel_y));
    minus50_btn.press(down && minus50_btn.contains(pixel_x, pixel_y));
    plus50_btn.press(down && plus50_btn.contains(pixel_x, pixel_y));
     if (minus_btn.justReleased())
   minus_btn.drawButton();
 if (plus_btn.justReleased())
   plus_btn.drawButton();
 if (lock_btn.justReleased())
 lock_btn.drawButton();
  if (unlock_btn.justReleased())
   unlock_btn.drawButton();
 if (plus25_btn.justReleased())
   plus25_btn.drawButton();
 if (minus25_btn.justReleased())
   minus25_btn.drawButton();
 if (plus50_btn.justReleased())
   plus50_btn.drawButton();
 if (minus50_btn.justReleased())
   minus50_btn.drawButton();

}
void handleButtonActions() {
if(!Sperre  && plus25_btn.justPressed()){
   plus25_btn.drawButton(true);
    drehzahl = drehzahl+25;
     if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  } 
   if(!Sperre  && plus50_btn.justPressed()){
   plus50_btn.drawButton(true);
    drehzahl = drehzahl+50;
     if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
   if(!Sperre  && minus25_btn.justPressed()){
   minus25_btn.drawButton(true);
    drehzahl = drehzahl-25;
     if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
   if(!Sperre  && minus50_btn.justPressed()){
   minus50_btn.drawButton(true);
    drehzahl = drehzahl-50;
     if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (lock_btn.justPressed()) {
    showSymbol1 = !showSymbol1; // Symbol wechseln
    drawButton(); // Taste neu zeichnen
    delay(200); // Entprellen
  }   

  
 if (!Sperre  && minus_btn.justPressed()) {
   minus_btn.drawButton(true);
   drehzahl -= drehzahlSchritt; // Drehzahl verringern
    if (drehzahl < minDrehzahl) {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
 if (!Sperre  && plus_btn.justPressed()) {
   plus_btn.drawButton(true);
       drehzahl += drehzahlSchritt; // Drehzahl erhöhen
    if (drehzahl > maxDrehzahl) {
      drehzahl = maxDrehzahl; // Begrenzung auf maximale Drehzahl
    }
    delay(200); // Entprellzeit
  }
}
void displayDrehzahl() {
VSpeed = drehzahl;
snprintf(CRPM,sizeof(CRPM),"%" "18d", VSpeed);// 5 stellig

tft.setCursor(100,0); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("Drehzahl");
tft.setCursor(40,30); tft.setTextSize(3);
tft.setTextColor(WHITE, BLACK); 
tft.print("des Kegels RPM");
tft.setCursor(100,80); tft.setTextSize(5);
tft.setTextColor(WHITE, BLACK); 

if (VSpeed<=99){
 tft.print(" ");
 tft.print(VSpeed);
 tft.print(" ");
}
else if(VSpeed<=9) {
 tft.print("  ");
 tft.print( VSpeed);
 tft.print(" ");
}
else {
 tft.print(VSpeed);
 tft.print("");
}
}
void speed() {


updateTouch();


Serial.println("encres 64");//encres64
Serial.println("sor 0");//sor0
Serial.println("a 1");//a1
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295



Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v29

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4
Serial.print("V");//a1
Serial.println(VSpeed);//v295


Serial.println("delay 4");//delay4
//Serial.println("jmp 1");//jmp1


}
void loop() {



updateTouch();
handleButtonActions();
displayDrehzahl();
speed();
}
void drawButton() {
 bool down = Touch_getXY();
  if (showSymbol1) {
     lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
     
   Sperre = true;
  } else {
     lock_btn.initButton(&tft, 160, 220, 160, 40, GREEN, GREEN, BLACK, "Entsperrt", 2);
     
    Sperre = false; 
  }
}

Was erwartest Du, wenn Du wie hier den Prozessor sich in sich selbst drehen lässt?
Alle delays müssen raus - restlos.

Das ist nur zum anzeigen vom Text in Setup. Damit man genug Zeit hat zum lesen.

Alle heisst auch bei den Tasten.

So und nun mal von vorn: Gibt es eine Befehlsdoku was auf der RS232 auf der Schnittstelle passieren sollen?

Ich versteh nämlich
a) nicht was da passieren soll auf dem Steuercontroller
b) warum man das ständig wiederholen muss

Und Du hast mindestens einen Logikfehler drin:

Was passiert wenn VSpeed == 8 ist?

Bild um es optisch sehen wie es alles angeschlossen ist

die Idee ist mit Arduino Uno durch Touch Display steuern den Motion Controller und damit der Motor über RS232 (MAX3232).
Der Motion Controller braucht eigentlich nur

Serial.println("encres 64");//encres64
Serial.println("sor 0");//sor0
Serial.println("a 1");//a1
Serial.print("V");//a1
Serial.println(VSpeed);//v295

Serial.println("delay 4");//delay4

leider jeder Loop Zyklus zuckt es einfach mit dem Motor. Durch wiederholte Eingabe zuckt es immer weniger, aber natürlich, wenn sich es zu viel wiederholt reagiert das Touchdisplay versetzt.

Nochmal: ich hab versucht bei https://www.faulhaber.com/en/support/drive-electronics/ was sinnvolles zu finden, aber das, was es da gibt ist nicht für nen UNO, also brauche ich mal wenigstens ne Produktbezeichnung!
Meine Glaskugel ist zur Wartung.

Hier sind die Handbücher
0900766b814ff88f.pdf (1,0 MB)
EN_MCBL3006S_V2-5_DFF.pdf (237,1 KB)

Es ist MCBL3006 S RS Motion Controller

Das wird nix.

Das sind doch Konfigeinstellungen.
Wenn Du die jedes mal neu schreibst, könnte das ertmal ein anhalten und neu initialisieren des Kontrollers auslösen.

Dann bekomm ich ne Warnung:

/tmp/arduino_modified_sketch_706352/sketch_apr02c.ino: In function 'void setupscreen()':
/tmp/arduino_modified_sketch_706352/sketch_apr02c.ino:162:8: warning: unused variable 'showSymbol1' [-Wunused-variable]
   bool showSymbol1 = true; // Flag für das Symbol
        ^~~~~~~~~~~

Das ist Mist. Der Grund ist, dass das eine neu definierte Variable ist.

Die ist jetzt bitte an die Pin 6 (RX) und 7 (TX) des Arduino zu hängen.

#include <SPI.h>
//TFT
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <TouchScreen.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#define MINPRESSURE 200
#define MAXPRESSURE 1000
//#include <Interval.h>

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
///////////
#include <SoftwareSerial.h>
const byte RX = 6;
const byte TX = 7;
SoftwareSerial mySerial (RX, TX);

char CRPM[18] ;// für eine 5 stellige Zahl

// Variablen
int drehzahl = 0; // Startdrehzahl
const int drehzahlSchritt = 5; // Schrittgröße für die Drehzahl
const int maxDrehzahl = 500; // Maximale Drehzahl
const int minDrehzahl = -500; // Minimale Drehzahl
int VSpeed;

bool showSymbol1 = true; // Flag für das Symbol
bool Sperre = true;



/////Touchdisplay

// ALL Touch panels and wiring is DIFFERENT
// copy-paste results from TouchScreen_Calibr_native.ino
//const int XP = 8, XM = A2, YP = A3, YM = 9; //ID=0x9341 Hochformat
const int XP = 9, XM = A3, YP = A2, YM = 8; //ID=0x9341 Querformat
//const int TS_LEFT = 907, TS_RT = 136, TS_TOP = 942, TS_BOT = 139; //Hochformat
const int TS_LEFT = 92, TS_RT = 870, TS_TOP = 860, TS_BOT = 140; //Querformat
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

Adafruit_GFX_Button minus_btn, plus_btn, lock_btn, unlock_btn, plus50_btn, minus50_btn, plus25_btn, minus25_btn;

int pixel_x, pixel_y;     //Touch_getXY() updates global vars
bool Touch_getXY(void)
{
  TSPoint p = ts.getPoint();
  pinMode(YP, OUTPUT);      //restore shared pins
  pinMode(XM, OUTPUT);
  digitalWrite(YP, HIGH);   //because TFT control pins
  digitalWrite(XM, HIGH);
  bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE);
  if (pressed)
  {
    pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); //.kbv makes sense to me
    pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());
  }
  return pressed;
}

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600, SERIAL_8N1);
  mySerial.begin(9600);
  faulhaber();
  setupscreen();
  displayWelcomeMessage();
  tft.fillScreen(BLACK);
  initializeButtons();
}

void loop()
{
  updateTouch();
  handleButtonActions();
  displayDrehzahl();
  speed();
}


void setupscreen()
{
  /////Touchdisplay
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
  Serial.println(F("Using Adafruit 2.4\" TFT Arduino Shield Pinout"));
#else
  Serial.println(F("Using Adafruit 2.4\" TFT Breakout Board Pinout"));
#endif
  Serial.print("TFT size is ");
  Serial.print(tft.width());
  Serial.print("x");
  Serial.println(tft.height());
  tft.reset();
  uint16_t identifier = tft.readID();
  if (identifier == 0x9325)
  {
    Serial.println(F("Found ILI9325 LCD driver"));
  }
  else if (identifier == 0x9328)
  {
    Serial.println(F("Found ILI9328 LCD driver"));
  }
  else if (identifier == 0x4535)
  {
    Serial.println(F("Found LGDP4535 LCD driver"));
  }
  else if (identifier == 0x7575)
  {
    Serial.println(F("Found HX8347G LCD driver"));
  }
  else if (identifier == 0x9341)
  {
    Serial.println(F("Found ILI9341 LCD driver"));
  }
  else if (identifier == 0x7783)
  {
    Serial.println(F("Found ST7781 LCD driver"));
  }
  else if (identifier == 0x8230)
  {
    Serial.println(F("Found UC8230 LCD driver"));
  }
  else if (identifier == 0x8357)
  {
    Serial.println(F("Found HX8357D LCD driver"));
  }
  else if (identifier == 0x0101)
  {
    identifier = 0x9341;
    Serial.println(F("Found 0x9341 LCD driver"));
  }
  else
  {
    Serial.print(F("Unknown LCD driver chip: "));
    Serial.println(identifier, HEX);
    Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
    Serial.println(F("  #define USE_ADAFRUIT_SHIELD_PINOUT"));
    Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
    Serial.println(F("If using the breakout board, it should NOT be #defined!"));
    Serial.println(F("Also if using the breakout, double-check that all wiring"));
    Serial.println(F("matches the tutorial."));
    identifier = 0x9341;
  }
  tft.begin(identifier);
  tft.setRotation(1);            //PORTRAIT
  tft.fillScreen(BLACK);
  showSymbol1 = true; // Flag für das Symbol
}

void faulhaber()
{
  mySerial.println("CONTMOD");//CONTMOD
  mySerial.println("SOR 0");//SOR0
  mySerial.println("ADR");//APL0
  mySerial.println("MV 0");//MOTTYP0
  mySerial.println("MAV 25");//KN366
  mySerial.println("STW 1");//RM7100
  mySerial.println("STN 1000");//POHOSEQ0
  mySerial.println("LL 1800000000");//HP7
  mySerial.println("LL -1800000000");//HB0
  mySerial.println("APL 0");//HD0
  mySerial.println("SIN1");//HD0
  mySerial.println("SETPLC");//HOSP100
  mySerial.println("ERROUT");//HA0
  mySerial.println("DCE 200");//HL0
  mySerial.println("LPN 16");//HL0
  mySerial.println("C O");//HN0
  mySerial.println("HB 0");//CAHOSEQ
  mySerial.println("HP 7");//ADR
  mySerial.println("HD 0");//LPC5000
  mySerial.println("SHA 0");//LCC2000
  mySerial.println("SHN 0");//AC30000
  mySerial.println("SHL 0");//I3
  mySerial.println("POHOSEQ 0");//POR3
  mySerial.println("HOSP 100");//SP10000
  mySerial.println("ENCRES 64");//MV0
  mySerial.println("KN 220");//MAV25
  mySerial.println("RM 1470");//LL2000000000
  mySerial.println("KOEFFI 2534");//LL-2000000000
  mySerial.println("POLNUM 4");//LPN16
  mySerial.println("SP 15000");//STW1
  mySerial.println("AC 30000");//STN1000
  mySerial.println("DEC 30000");//ENCRES64
  mySerial.println("SR 1");//DEV30000
  mySerial.println("POR 4");//DCE200
  mySerial.println("I 33");//V295
  mySerial.println("PP 64");//
  mySerial.println("PD 2");//ENPROG
  mySerial.println("CI 16");//ANSW1
  mySerial.println("LPC 6000");//NODEADR0
  mySerial.println("LCC 2000");
  mySerial.println("DEV 30000");
  mySerial.println("CORRIDOR 20");
  mySerial.println("EN");
  mySerial.println("V 100");
  mySerial.println("ENPROG");
  mySerial.println("ANSW 2");
  mySerial.println("NET 0");
  mySerial.println("NODEADR 0");
}

void initializeButtons()
{
  minus_btn.initButton(&tft,  30, 210, 60, 60, WHITE, CYAN, BLACK, "-", 4);
  plus_btn.initButton(&tft, 291, 210, 60, 60, WHITE, CYAN, BLACK, "+", 4);
  lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
  minus25_btn.initButton(&tft,  30, 150, 60, 50, WHITE, CYAN, BLACK, "-25", 3);
  plus25_btn.initButton(&tft, 291, 150, 60, 50, WHITE, CYAN, BLACK, "+25", 3);
  minus50_btn.initButton(&tft,  105, 160, 60, 50, WHITE, CYAN, BLACK, "-50", 3);
  plus50_btn.initButton(&tft, 216, 160, 60, 50, WHITE, CYAN, BLACK, "+50", 3);
  //unlock_btn.initButton(&tft, 140, 230, 160, 20, WHITE, CYAN, BLACK, "gesppert", 2);
  // unlock_btn.initButton(&tft, 200, 210, 60, 60, WHITE, CYAN, BLACK, "e", 4);
  minus_btn.drawButton(false);
  plus_btn.drawButton(false);
  lock_btn.drawButton(false);
  minus25_btn.drawButton(false);
  plus25_btn.drawButton(false);
  minus50_btn.drawButton(false);
  plus50_btn.drawButton(false);
  //unlock_btn.drawButton(false);
}
void displayWelcomeMessage()
{
  tft.setCursor(60, 0);
  tft.setTextSize(3);
  tft.setTextColor(WHITE, BLACK);
  tft.print("");
  tft.setCursor(70, 30);
  tft.print("");
  tft.setCursor(90, 60);
  tft.print("Apparatur");
  tft.setCursor(0, 100);
  tft.setTextSize(2);
  tft.print("");
  tft.setCursor(0, 140);
  tft.print("");
  tft.setCursor(0, 160);
  tft.print("Halle/Saale");
  delay(10000);
  tft.fillScreen(BLACK);
}
void updateTouch()
{
  bool down = Touch_getXY();
  // Button-Status aktualisieren
  minus_btn.press(down && minus_btn.contains(pixel_x, pixel_y));
  plus_btn.press(down && plus_btn.contains(pixel_x, pixel_y));
  lock_btn.press(down && lock_btn.contains(pixel_x, pixel_y));
  minus25_btn.press(down && minus25_btn.contains(pixel_x, pixel_y));
  plus25_btn.press(down && plus25_btn.contains(pixel_x, pixel_y));
  minus50_btn.press(down && minus50_btn.contains(pixel_x, pixel_y));
  plus50_btn.press(down && plus50_btn.contains(pixel_x, pixel_y));
  if (minus_btn.justReleased())
  { minus_btn.drawButton(); }
  if (plus_btn.justReleased())
  { plus_btn.drawButton(); }
  if (lock_btn.justReleased())
  { lock_btn.drawButton(); }
  if (unlock_btn.justReleased())
  { unlock_btn.drawButton(); }
  if (plus25_btn.justReleased())
  { plus25_btn.drawButton(); }
  if (minus25_btn.justReleased())
  { minus25_btn.drawButton(); }
  if (plus50_btn.justReleased())
  { plus50_btn.drawButton(); }
  if (minus50_btn.justReleased())
  { minus50_btn.drawButton(); }
}
void handleButtonActions()
{
  if (!Sperre  && plus25_btn.justPressed())
  {
    plus25_btn.drawButton(true);
    drehzahl = drehzahl + 25;
    if (drehzahl > maxDrehzahl)
    {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (!Sperre  && plus50_btn.justPressed())
  {
    plus50_btn.drawButton(true);
    drehzahl = drehzahl + 50;
    if (drehzahl > maxDrehzahl)
    {
      drehzahl = maxDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (!Sperre  && minus25_btn.justPressed())
  {
    minus25_btn.drawButton(true);
    drehzahl = drehzahl - 25;
    if (drehzahl < minDrehzahl)
    {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (!Sperre  && minus50_btn.justPressed())
  {
    minus50_btn.drawButton(true);
    drehzahl = drehzahl - 50;
    if (drehzahl < minDrehzahl)
    {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (lock_btn.justPressed())
  {
    showSymbol1 = !showSymbol1; // Symbol wechseln
    drawButton(); // Taste neu zeichnen
    delay(200); // Entprellen
  }
  if (!Sperre  && minus_btn.justPressed())
  {
    minus_btn.drawButton(true);
    drehzahl -= drehzahlSchritt; // Drehzahl verringern
    if (drehzahl < minDrehzahl)
    {
      drehzahl = minDrehzahl; // Begrenzung auf minimale Drehzahl
    }
    delay(200); // Entprellzeit
  }
  if (!Sperre  && plus_btn.justPressed())
  {
    plus_btn.drawButton(true);
    drehzahl += drehzahlSchritt; // Drehzahl erhöhen
    if (drehzahl > maxDrehzahl)
    {
      drehzahl = maxDrehzahl; // Begrenzung auf maximale Drehzahl
    }
    delay(200); // Entprellzeit
  }
}
void displayDrehzahl()
{
  VSpeed = drehzahl;
  snprintf(CRPM, sizeof(CRPM), "%" "18d", VSpeed); // 5 stellig
  tft.setCursor(100, 0);
  tft.setTextSize(3);
  tft.setTextColor(WHITE, BLACK);
  tft.print("Drehzahl");
  tft.setCursor(40, 30);
  tft.setTextSize(3);
  tft.setTextColor(WHITE, BLACK);
  tft.print("des Kegels RPM");
  tft.setCursor(100, 80);
  tft.setTextSize(5);
  tft.setTextColor(WHITE, BLACK);
  if (VSpeed <= 9)
  {
    tft.print("  ");
    tft.print(VSpeed);
    tft.print(' ');
  }
  else if (VSpeed <= 99)
  {
    tft.print(' ');
    tft.print( VSpeed);
    tft.print(' ');
  }
  else
  {
    tft.print(VSpeed);
    tft.print("");
  }
}
void speed()
{
  updateTouch();
  mySerial.println("encres 64");//encres64
  mySerial.println("sor 0");//sor0
  mySerial.println("a 1");//a1
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  /*
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v29
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  mySerial.print("V");//a1
  mySerial.println(VSpeed);//v295
  mySerial.println("delay 4");//delay4
  */
  //mySerial.println("jmp 1");//jmp1
}

void drawButton()
{
  bool down = Touch_getXY();
  if (showSymbol1)
  {
    lock_btn.initButton(&tft, 160, 220, 160, 40, RED, RED, BLACK, "Gesperrt", 2);
    Sperre = true;
  }
  else
  {
    lock_btn.initButton(&tft, 160, 220, 160, 40, GREEN, GREEN, BLACK, "Entsperrt", 2);
    Sperre = false;
  }
}

Und wenn Du Dich bemühst, dann kann man aus dem Code auch noch was machen.

1 Like

Um den Motortreiber anzusteuern brauchst Du das Display nicht. Darum alles raus was nicht mit dem Treiber zu tun hat. (minimalsketch der den Fehler hat).

Dann wo hast Du den MAX232 angeschlossen?
An den Pins 0 und 1 des UNO?
Dann frage ich Dich wieso Du alles mögliche an den Motorkontroller schickst? zB:

Wieso benutzt Du nicht übereall die F() Makro?

Seit wann prellt ein Touchscreen?

Grüße Uwe