Arduino Mega startet Programm nicht

Hallo zusammen,

ich habe mein Projekt fertig uns es läuft einwandfrei. Nun möchte ich dass das Programm ohne am USB zu hängen anfängt das Programm abzuspielen. Das Passiert aber nur wenn ich den Resetknopf betätige.

Muss man den Sketch anders auf den Arduino laden, wenn dieser sofort nach Spannung anlegen beginnen soll?

Ich hab einen Arduino Mega 2560 Rev 3.
An Vin hab ich 5V angelegt.

Danke im Voraus

Karlsa

Sollte immer automatisch passieren.
Zeig mal deinen Code!

int typ = 1;                                           //1 = One Laser Diode, 2 = Two Laser Diode



//Encoder******************************************
byte speicherA = 0;
byte speicherB = 0;

int stellungA;
int stellungB;

int A = 34;
int B = 36;
byte auswahl = 0;
byte auswahl_typ2 = 0;                              // wenn typ = 2, bei menue ACC
int menue = 0, status = 0, optionen = 0;
//*************************************************


boolean message_receive = false;

//*************************************************
char buf[10] = {0};

char ACC_Send[] = {0};
float valueACC = 0;
float bufACC = 0;

char APC_Send[] = {0};
float valueAPC = 0;
float bufAPC = 0;

char AGC_Send[] = {0};
float valueAGC = 0;
float bufAGC = 0;

//*************************************************
int counter = 0;

int fan = 4;


int zero = 0x00;                                 // 0 hex ans Display senden

byte change = 0;

int back = 42;
int back_led = 44;
int enter = 38;
int pump = 40;
int pump_led = 46;

int i, k;


void setup()
{
  Serial1.begin(9600);//Diplay
  Serial2.begin(9600);//EDFA
 
  pinMode(back, INPUT);
  digitalWrite(back, HIGH);
  pinMode(enter, INPUT);
  pinMode(A, INPUT);
  digitalWrite(A, HIGH);
  pinMode(B, INPUT); 
  digitalWrite(B, HIGH);
  pinMode(back_led, OUTPUT);
  pinMode(pump_led, OUTPUT);
  pinMode(fan, OUTPUT);
  digitalWrite(fan, LOW);
  
  attachInterrupt(0, ReadTemp, RISING);
  
  DisplayIni();
  Serial1.begin(115200);
  start();

} 

void loop()
{  
  char current[20] = {0};
  char powerIn[30] = {0};
  char powerOut[30] = {0};
  unsigned long time = 0;
  
  while(1)
  {
    menueWahl();   

    if (millis() >= 1000 + time)
    {  
      
      if (menue == 0 || menue == 1)
        getValue("LC 1", 0x03, 0x04, "LD current:", 8, current);
        
      getPower(0x07, 0x06, powerIn, powerOut);
      time = millis();
    }
       
    if (auswahl == 0 && digitalRead(enter) == HIGH)
    {
      while(digitalRead(enter) == HIGH);
      setValue(current, powerIn, powerOut);  
    }
    
    if (auswahl == 1 && digitalRead(enter) == HIGH && millis() <= 1000 + time)
    {
      while(digitalRead(enter) == HIGH);
      time = showMenue();
    }
      
    if (auswahl == 2 && digitalRead(enter) == HIGH)
    {
      while(digitalRead(enter) == HIGH);
      showStatus();
    }      
    
    if (auswahl == 3 && digitalRead(enter) == HIGH)
    {
      while(digitalRead(enter) == HIGH);
      showOptions(); 
    }
  
  
    if (digitalRead(pump) == HIGH)
    {
      if (menue == 1)
        startPump("APC", current, powerIn, powerOut);
      
      else if (menue == 2)
        startPump("ACC", current, powerIn, powerOut);
        
      else if (menue == 0)
        startPump("AGC", current, powerIn, powerOut);
    }   
  }      
}       
  
// Funktionen  

void start()
{  
   char apc[20] = {0};
   ClearDisplay();
   while (Serial2.available() > 0) Serial2.read();
   getValue("APC", 0x03, 0x01, "Power Out:", 5, apc);
   Ausgabe(0x03, 0x06, "Pi:");
   Ausgabe(0x03, 0x08, "Po:");
   Ausgabe(0x03, 0x0B, "APC");
   Ausgabe(0x09, 0x0B, "Status");
   Ausgabe(0x12, 0x0B, "Optionen");
   menue = 1;      

   valueAPC = atof(apc);
   bufAPC = valueAPC;
}
 
void menueWahl()
{  
  
  if (digitalRead(A)==HIGH && digitalRead(B)==LOW && speicherA==0 && speicherB==0)
  {
    auswahl++; auswahl_typ2++;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=1;
    speicherB=0; 
  }
  else if (digitalRead(A)==HIGH && digitalRead(B)==HIGH && speicherA==1 && speicherB==0)
  {
    auswahl++; auswahl_typ2++;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=1;
    speicherB=1; 
  }
  else if (digitalRead(A)==LOW && digitalRead(B)==HIGH && speicherA==1 && speicherB==1 )
  {
    auswahl++; auswahl_typ2++;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=0;
    speicherB=1;
  }
  else if (digitalRead(A)==LOW && digitalRead(B)==LOW && speicherA==0 && speicherB==1 )
  {
    auswahl++; auswahl_typ2++;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=0;
    speicherB=0;
  }
  
 else if (digitalRead(A)==LOW && digitalRead(B)==HIGH && speicherA==0 && speicherB==0)
  {
    auswahl--; auswahl_typ2--;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=0;
    speicherB=1;
  }
  else if (digitalRead(A)==HIGH && digitalRead(B)==HIGH && speicherA==0 && speicherB==1)
  {
    auswahl--; auswahl_typ2--;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=1;
    speicherB=1;
  }
  else if (digitalRead(A)==HIGH && digitalRead(B)==LOW && speicherA==1 && speicherB==1)
  {
    auswahl--; auswahl_typ2--;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=1;
    speicherB=0;
  }
  else if (digitalRead(A)==LOW && digitalRead(B)==LOW && speicherA==1 && speicherB==0)
  {
    auswahl--; auswahl_typ2--;
    auswahl %= 4; auswahl_typ2 %= 5;
    speicherA=0;
    speicherB=0;
  }
 
  if (typ == 1 || typ == 2  && menue == 1 || typ == 2 && menue == 0)
  {  
    if (auswahl == 0)
    {
      Ausgabe(0x01, 0x01, "->");
      AusgabeLoeschen(0x01, 0x0B, "->");
      AusgabeLoeschen(0x10, 0x0B, "->");
    }
    else if (auswahl == 1)
    {
      Ausgabe(0x01, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x01, "->");
      AusgabeLoeschen(0x07, 0x0B, "->");
    }
    else if (auswahl == 2)
    {
      Ausgabe(0x07, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x0B, "->");
      AusgabeLoeschen(0x10, 0x0B, "->");
    } 
    else if (auswahl == 3)
    {
      Ausgabe(0x10, 0x0B, "->");
      AusgabeLoeschen(0x07, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x01, "->");
    }
  }
  
  else if (typ == 2 && menue == 2)
  {  
    if (auswahl_typ2 == 0)
    {
      Ausgabe(0x01, 0x01, "->");
      AusgabeLoeschen(0x01, 0x03, "->");
      AusgabeLoeschen(0x10, 0x0B, "->");
    }
    else if (auswahl_typ2 == 1)
    {
      Ausgabe(0x01, 0x03, "->");
      AusgabeLoeschen(0x01, 0x01, "->");
      AusgabeLoeschen(0x01, 0x0B, "->");
    }
    else if (auswahl_typ2 == 2)
    {
      Ausgabe(0x01, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x03, "->");
      AusgabeLoeschen(0x07, 0x0B, "->");
    }
    else if (auswahl_typ2 == 3)
    {
      Ausgabe(0x07, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x0B, "->");
      AusgabeLoeschen(0x10, 0x0B, "->");
    } 
    else if (auswahl_typ2 == 4)
    {
      Ausgabe(0x10, 0x0B, "->");
      AusgabeLoeschen(0x07, 0x0B, "->");
      AusgabeLoeschen(0x01, 0x01, "->");
    }
  }
}
unsigned long showMenue()
{ 
    char apc[20] = {0};
    char acc1[20] = {0};
    char agc[20] = {0};
    char current[20] = {0};
    
    if (menue == 0)
    {  
      ClearDisplay();   
      getValue("APC", 0x03, 0x01, "Power Out:", 5, apc);
      Ausgabe(0x03, 0x06, "Pi:");
      Ausgabe(0x03, 0x08, "Po:");
      Ausgabe(0x03, 0x0B, "APC");
      Ausgabe(0x09, 0x0B, "Status");
      Ausgabe(0x12, 0x0B, "Optionen");
      menue = 1;
    }
    
    else if (menue == 1)
    {  
      ClearDisplay();
      
      if (typ == 1)
      {   
        getValue("ACC 1", 0x03, 0x01, "LD current:", 8, acc1);   
        Ausgabe(0x03, 0x06, "Pi:");
        Ausgabe(0x03, 0x08, "Po:");
        Ausgabe(0x03, 0x0B, "ACC");
        Ausgabe(0x09, 0x0B, "Status");
        Ausgabe(0x12, 0x0B, "Optionen");
        menue = 2; 

        valueACC = atof(acc1);
        bufACC = valueACC;

      }
      else if (typ == 2)
      {
        Ausgabe(0x03, 0x01, "Laser Diode 1:");
        delay(10);
        Ausgabe(0x03, 0x03, "Laser Diode 2:");
        Ausgabe(0x03, 0x06, "Pi:");
        Ausgabe(0x03, 0x08, "Po:");     
        Ausgabe(0x03, 0x0B, "ACC");
        Ausgabe(0x09, 0x0B, "Status");
        Ausgabe(0x12, 0x0B, "Optionen");
        menue = 2; 
       }          
    }
  
    else if (menue == 2)
    {  
      ClearDisplay();   
      getValue("AGC", 0x03, 0x01, "Gain:", 5, agc);
      Ausgabe(0x03, 0x06, "Pi:");
      Ausgabe(0x03, 0x08, "Po:");
      Ausgabe(0x03, 0x0B, "AGC");
      Ausgabe(0x09, 0x0B, "Status");
      Ausgabe(0x12, 0x0B, "Optionen");
      menue = 0;
      
      valueAGC = atof(agc);
      bufAGC = valueAGC;
    }   
    
  return millis();
}    

void setValue(char* saveCurrent, char* Pi, char* Po)
{   
    char apc[20] = {0};
    char acc1[20] = {0};
    char agc[20] = {0};
    char current[20] = {0};
    char powerIn[30] = {0};
    char powerOut[30] = {0};   
    unsigned long time;
    
    strcpy(current, saveCurrent);
    strcpy(powerIn, Pi);
    strcpy(powerOut, Po);
    
    AusgabeLoeschen(0x01, 0x01, "->");
    Ausgabe(0x01, 0x01, "<-");
    change = 1;
    
    dtostrf(valueAPC, 3, 1, apc);
    dtostrf(valueACC, 3, 1, acc1);  
    dtostrf(valueAGC, 3, 1, agc);  
 
    while (digitalRead(enter) == HIGH);
    
    time = millis();
    
    while (change == 1)
    {  
      if (menue == 1)
      {        
         if (millis() >= 1000 + time)
        {  
          if (menue == 0 || menue == 1)
          getValue("LC 1", 0x03, 0x04, "LD current:", 8, current);
          getPower(0x07, 0x06, powerIn, powerOut);
          time = millis();
        }
        
          valueAPC = changeValue("APC");

         if (bufAPC != valueAPC)
         {

           dtostrf(valueAPC, 3, 1, buf);
           sprintf(APC_Send, "APC %s", buf);
           Serial2.println(APC_Send);
           delay(45);
           while(Serial2.available() > 0)    
              Serial2.read();

           getValue("APC", 0x03, 0x01, "Power Out:", 5, apc);
           
           valueAPC = atof(apc);
           bufAPC = valueAPC;
          }
       } 
        else if (menue == 2)
        {  
           if (millis() >= 1000 + time)
          {  
            if (menue == 0 || menue == 1)
            getValue("LC 1", 0x03, 0x04, "LD current:", 8, current);
            getPower(0x07, 0x06, powerIn, powerOut);
            time = millis();
          }          
           valueACC = changeValue("ACC");
           
           if (bufACC != valueACC)
           {
             dtostrf(valueACC, 3, 1, buf);
             sprintf(ACC_Send, "ACC 1 %s", buf);
             Serial2.println(ACC_Send); 
             delay(45);
             while(Serial2.available() > 0)    
               Serial2.read(); 
             
             getValue("ACC 1", 0x03, 0x01, "LD current:", 8, acc1);
             
             valueACC = atof(acc1);
              bufACC = valueACC;
           }
         }
        else if (menue == 0)
        { 
           if (millis() >= 1000 + time)
          {  
            if (menue == 0 || menue == 1)
            getValue("LC 1", 0x03, 0x04, "LD current:", 8, current);
            getPower(0x07, 0x06, powerIn, powerOut);
            time = millis();
          }          
           valueAGC = changeValue("AGC");
           
           if (bufAGC != valueAGC)
           {
             dtostrf(valueAGC, 3, 1, buf);
             sprintf(AGC_Send, "AGC %s", buf);             
             Serial2.println(AGC_Send); 
             delay(45);
             while(Serial2.available() > 0)    
               Serial2.read();  
               
             getValue("AGC", 0x03, 0x01, "Gain:", 5, agc); 
             
             valueAGC = atof(agc);
              bufAGC = valueAGC;
           }  
         }  
         
         if (digitalRead(enter) == HIGH)
         {
           while (digitalRead(enter) == HIGH);
           AusgabeLoeschen(0x01, 0x01, "<-");
           change = 0;
         } 
    }
  strcpy(saveCurrent, current);
  strcpy(Pi, powerIn);
  strcpy(Po, powerOut);    
}


}
float changeValue(char* modus)
{
    int last;
    float value;
  
    if (modus == "APC")
      value = valueAPC;
      
    else if (modus == "ACC")
      value = valueACC;
      
    else if (modus == "AGC")
      value = valueAGC; 
      
      
    if (last == 1)
      while(digitalRead(A)!=HIGH && digitalRead(B)!=LOW);    
    else if (last == 2)
      while(digitalRead(A)!=HIGH && digitalRead(B)!=HIGH);
    else if (last == 3)
      while(digitalRead(A)!=LOW && digitalRead(B)!=LOW);
    else if (last == 4)
      while(digitalRead(A)!=LOW && digitalRead(B)!=LOW);
    else if (last == 5)
      while(digitalRead(A)!=LOW && digitalRead(B)!=HIGH);
    else if (last == 6)
      while(digitalRead(A)!=HIGH && digitalRead(B)!=HIGH);
    else if (last == 7)
      while(digitalRead(A)!=HIGH && digitalRead(B)!=LOW);
    else if (last == 8)
      while(digitalRead(A)!=LOW && digitalRead(B)!=LOW);



      
      
    if (digitalRead(A)==HIGH && digitalRead(B)==LOW && speicherA==0 && speicherB==0)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
        value += 1.0;   
        else
          value +=0.1;
      }     
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value += 10.0;
        else
          value +=1;
      }     
      speicherA=1;
      speicherB=0;
      last = 1;
    }
    else if (digitalRead(A)==HIGH && digitalRead(B)==HIGH && speicherA==1 && speicherB==0)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value += 1.0;   
        else
          value +=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value += 10.0;
        else
          value +=1;
      }     
      speicherA=1;
      speicherB=1;
      last = 2;
    }
    else if (digitalRead(A)==LOW && digitalRead(B)==HIGH && speicherA==1 && speicherB==1)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value += 1.0;   
        else
          value +=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value += 10.0;
        else
          value +=1;
      }           
      speicherA=0;
      speicherB=1;
      last = 3;
    }
    else if (digitalRead(A)==LOW && digitalRead(B)==LOW && speicherA==0 && speicherB==1)
    {
       if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value += 1.0;   
        else
          value +=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value += 10.0;
        else
          value +=1;
      }          
      speicherA=0;
      speicherB=0;
      last = 4;
    }
  
    else if (digitalRead(A)==LOW && digitalRead(B)==HIGH && speicherA==0 && speicherB==0)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value -= 1.0;   
        else
          value -=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value -= 10.0;
        else
          value -=1;
      }           
      speicherA=0;
      speicherB=1;
      last = 5;
    }
    else if (digitalRead(A)==HIGH && digitalRead(B)==HIGH && speicherA==0 && speicherB==1)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value -= 1.0;   
        else
          value -=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value -= 10.0;
        else
          value -=1;
      }                 
      speicherA=1;
      speicherB=1;
      last = 6;
    }
    else if (digitalRead(A)==HIGH && digitalRead(B)==LOW && speicherA==1 && speicherB==1)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value -= 1.0;   
        else
          value -=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value -= 10.0;
        else
          value -=1;
      }                 
      speicherA=1;
      speicherB=0;
      last = 7;
    }
    else if (digitalRead(A)==LOW && digitalRead(B)==LOW && speicherA==1 && speicherB==0)
    {
      if (menue == 1 || menue == 0)
      {
        if (digitalRead(back) == LOW)
          value -= 1.0;   
        else
          value -=0.1;
      }    
      if (menue == 2)
      {
        if (digitalRead(back) == LOW)
          value -= 10.0;
        else
          value -=1;
      }               
      speicherA=0;
      speicherB=0;
      last = 8;
    }
    return value;
}


void startPump(char* modus, char* saveCurrent, char* Pi, char* Po)
{
  char checkModus[10] = {0};
  char current[20] = {0};
  char powerIn[30] = {0};
  char powerOut[30] = {0};
  unsigned long time;
  
  strcpy(current, saveCurrent);
  strcpy(powerIn, Pi);
  strcpy(powerOut, Po);
  
  while (digitalRead(pump) == HIGH);
  
  time = millis();
  
  if (modus == "APC")
  { 
    do
    {
      counter = 0; 
      Serial2.println("AM P");
      delay(50);
      while (Serial2.available() >0)
        checkModus[counter++] = Serial2.read();       
   } 
    while (checkModus[0] != 'A' && checkModus[1] != 'M' && checkModus[3] != 'P');
  }

  else if (modus == "ACC")
  {
    do
    {
      counter = 0; 
      Serial2.println("AM C");
      delay(50);
      while (Serial2.available() >0)
        checkModus[counter++] = Serial2.read();
    } 
    while (checkModus[0] != 'A' && checkModus[1] != 'M' && checkModus[3] != 'C');
  }
  
  else if (modus == "AGC")
  {
    do
    {
      counter = 0; 
      Serial2.println("AM G");
      delay(50);
      while (Serial2.available() >0)
        checkModus[counter++] = Serial2.read();       
    } 
    while (checkModus[0] != 'A' && checkModus[1] != 'M' && checkModus[3] != 'G');
  }
    
  digitalWrite(pump_led, HIGH);
  
  do
  {
    if (millis() >= 1000 + time)
    {  
      
      if (menue == 0 || menue == 1)
        getValue("LC 1", 0x03, 0x04, "LD current:", 8, current);
      getPower(0x07, 0x06, powerIn, powerOut);
      time = millis();
      }
    
    menueWahl();
    
    if (digitalRead(enter) == HIGH && auswahl == 2)
    {
      while(digitalRead(enter) == HIGH);
      showStatus();
    }  
    if (auswahl == 0 && digitalRead(enter) == HIGH)
    {
      while(digitalRead(enter) == HIGH);
      setValue(current, powerIn, powerOut);   
    }
  }
  while(digitalRead(pump) == LOW);
  
  strcpy(saveCurrent, current);
  strcpy(Pi, powerIn);
  strcpy(Po, powerOut);
    
  do
  {
     counter = 0;
     Serial2.println("AM O");
     delay(50);
     while (Serial2.available() >0)
       checkModus[counter++] = Serial2.read();   
  } 
  while (checkModus[0] != 'A' && checkModus[1] != 'M' && checkModus[3] != 'O');
  
  digitalWrite(pump_led, LOW);

  while(digitalRead(pump) != LOW);
}
void showStatus()
{
  char tec[10] = {0};
  char ld_Temp[10] = {0};
  char power[10] = {0};
  char case_Temp[10] = {0};
  unsigned long time = millis();
  
  ClearDisplay();

  do
  {
    if (millis() >= 1000 + time)
    {
      Ausgabe(0x02, 0x01, "Status:");
      getValue("HA 1", 0x02, 0x04, "TEC:", 8, tec);
      delay(10);
      getValue("LT 1", 0x02, 0x06, "LD Temp:", 8, ld_Temp);
      delay(10);
      getValue("LP 1", 0x02, 0x08, "L. Power:", 8, power);
      delay(10);
      getValue("IT", 0x02, 0x0A, "Case Temp:", 6, case_Temp);
      delay(10);
    }    
  }
  while (digitalRead(back) == LOW);
  switch(menue)
  {
    case 0:  menue = 2; break;
    case 1:  menue = 0; break;
    case 2:  menue = 1; break;
  }
  showMenue();
  while (digitalRead(back) == HIGH);
}
  
void showOptions()
{

}

void getValue(char* command, int y, int x, char* text, int a, char* save)
{
   int b;
   int len = strlen(text);
   char value[30] = {0};

   while (message_receive == false)
   {
     counter = 0;
     Serial2.println(command);
     delay(45);
     while (Serial2.available() > 0) 
      {
        value[counter++] = Serial2.read();
      }
    if (value[0] == 'F' && value[1] == 'W' && value[2] == 'C')
      message_receive = false;    
    else
      message_receive = true;
    }
    
    for(a, b = 0; value[a] != '\r'; a++, b++)
      value[b] = value[a];
      
    value[b] = '\0';

    if (strcmp(save, value) != 0)
    {
      Ausgabe(y, x, text);
      AusgabeLoeschen(y+len+1, x, save);
      Ausgabe(y+len+1, x, value);
    }
    
    else
    {
      Ausgabe(y, x, text);
      Ausgabe(y+len+1, x, value);
    }  
 
    message_receive = false; 

    strcpy(save, value);
 }
 
void getPower(int y, int x, char* Pi, char* Po)
{ 
   char power[50] = {0};
   char powerIn[30] = {0};
   char powerOut[30] = {0};
   
   while (message_receive == false)
   {
     counter = 0;
     Serial2.println("PH");
     delay(100);
     while (Serial2.available() > 0) 
      {
        power[counter++] = Serial2.read();
      }
    if ( power[0] == 'P' && power[1] == 'D' && power[2] == 'M')
     message_receive = true;    
    else
      message_receive = false;
    }

    for (i = 6, k = 0; power[i] != '\r'; i++, k++)
      powerIn[k] = power[i];
    
    powerIn[k] = '\0';
    
    for (i = i + 8, k = 0; power[i] != '\r'; i++, k++)
      powerOut[k] = power[i];
      
    powerOut[k] = '\0';

    if (strcmp(powerIn, Pi) != 0)     
    {
      AusgabeLoeschen(y, x, Pi);
      delay(10);
      Ausgabe(y, x, powerIn);   
    }
    else
      Ausgabe(y, x, powerIn);
      
    delay(10); 
    
    if (strcmp(powerOut, Po) != 0)
    {
      AusgabeLoeschen(y, x + 2, Po);  
      delay(10);
      Ausgabe(y, x + 2, powerOut); 
    }
    else
      Ausgabe(y, x + 2, powerOut); 
     
    message_receive = false;
    strcpy(Pi, powerIn);
    strcpy(Po, powerOut);
}
// Display-Funktionen
  
  
void DisplayIni()
{ 
  DisplayVerbinden();  
  ClearDisplay();
  DisplayHintergrund();
  DisplayDrehen();
  SetBaudDisplay(); 
}



void Ausgabe(int y, int x, char* text)
{
  Serial1.write(0x73);
  Serial1.write(y); 
  Serial1.write(x); 
  Serial1.write(0x03); 
  Serial1.write(zero);
  Serial1.write(zero);
  Serial1.write(text);
  Serial1.write(zero);
  delay(10);
}
  
void AusgabeLoeschen(int y, int x, char* zeichen)
{
  Serial1.write(0x73);
  Serial1.write(y); 
  Serial1.write(x); 
  Serial1.write(0x03); 
  Serial1.write(0xFF);
  Serial1.write(0xFF);
  Serial1.write(zeichen);
  Serial1.write(zero);
  delay(10); 
}

void DisplayVerbinden()
{
  Serial1.write(0x55);
  delay(100);
}

void ClearDisplay()
{
  Serial1.write(0x45);
  delay(100);  
}

void DisplayHintergrund()
{
  Serial1.write(0x42);
  Serial1.write(0xFF);
  Serial1.write(0xFF);
  delay(3000);  
} 

void DisplayDrehen()
{
  Serial1.write(0x59);
  Serial1.write(0x04);  
  Serial1.write(0x02);
  delay(100);
}
void SetBaudDisplay()
{
  Serial1.write(0x51);
  Serial1.write(0x0D);
  delay(1000);
}



// Interrupt

void ReadTemp()
{
 if (digitalRead(fan) == LOW)
 {
    digitalWrite(fan, HIGH);
    attachInterrupt(0, ReadTemp, FALLING);
 }
 else
 {
    digitalWrite(fan, LOW);
    attachInterrupt(0, ReadTemp, RISING);
 }
}

Sorry ist halt ein großes Projekt :slight_smile:

Aber im Code kann ja eigentlich nichts falsch sein, sonst würde es ja auch nicht starten wenn ich Reset drücke.

Bist du sicher, dass du 5V an Vin angeschlossen hast? Das dürfte zu wenig sein, erklärt allerdings nicht das merkwürdige Verhalten.
Wenn die Versorgungsspannung 5V beträgt musst du "hinter" dem Spannungsregler rein, also am 5V-Pin.

hi,

ich würde versuchen, festzustellen, ob es am sketch liegt. lade doch mal das blink-beispiel rauf, und schau, ob es startet.

gruß, stefan

Karlsa:
Hallo zusammen,

ich habe mein Projekt fertig uns es läuft einwandfrei. Nun möchte ich dass das Programm ohne am USB zu hängen anfängt das Programm abzuspielen. Das Passiert aber nur wenn ich den Resetknopf betätige.

Muss man den Sketch anders auf den Arduino laden, wenn dieser sofort nach Spannung anlegen beginnen soll?

Ich hab einen Arduino Mega 2560 Rev 3.
An Vin hab ich 5V angelegt.

Danke im Voraus

Karlsa

Wie sth77 sagt bruacht das Vin mindestens 7V. Wenn Du den Arduino mit 5V versorgen willst dann mußt Du die 5V auf das 5V pin geben oder über einen USB-Kabel auf die USB Buchse.

Des weiteren ist mir bei einem Arduino Nano passiert, daß ich einen zu großen Kondensator (470µF) auf die Versorgungspannung angeschlossen habe und darum dieser nicht gestartet ist.

Viele Grüße Uwe

So hab jetzt mal den Pin getauscht und es hat nichts gebracht.

Hab mir dann gedacht, dass es sein kann die der Arduino zu schnell ist und deshalb er sich nicht mit dem Display synchronisiert. Hab dann mal auf nen Taster gedrückt und siehe da...LED geht an. Also muss ich jetzt nur gucken, dass der Arduino so lang wartet bis er mit dem Display Kommunizieren kann.

Ich danke euch für die Tipps. Und ich werde mich nochmal melden Falls das wirklich das Problem war.

Ich hoffe es, hab nächste Woche abgabe meines Projektes in der Schule :stuck_out_tongue:

Viel Grüße
Sascha