Pages: [1]   Go Down
Author Topic: Arduino Mega startet Programm nicht  (Read 758 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sollte immer automatisch passieren.
Zeig mal deinen Code!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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, "->");
    }
  }
}  

 


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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);    
}


}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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);
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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);
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
// 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);
 }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry ist halt ein großes Projekt  smiley

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

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Wien
Online Online
Edison Member
*
Karma: 26
Posts: 1842
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21244
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-razz

Viel Grüße
Sascha
Logged

Pages: [1]   Go Up
Jump to: