Error: ' ' does not name a type

cheshire
cheshire аватар
Offline
Зарегистрирован: 11.07.2014

Перейду быстро к делу.
Написал программу, получил ошибку: 'gang_s' does not name a type.
Перепробовал как мог но ошибка не уходит.

B чем может быть проблема?

Программа тут:

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

const int buttonPinLeft = 18;      //  Up button
const int buttonPinRight = 14;     //  Down button
const int buttonPinEsc = 12;       // Esc button
const int buttonPinEnter = 11;     //  Enter button

int lastButtonPushed = 0;
int lastButtonEnterState = LOW;
int lastButtonEscState = LOW;
int lastButtonLeftState = LOW;
int lastButtonRightState = LOW;
long lastEnterDebounceTime = 0;
long lastEscDebounceTime = 0;
long lastLeftDebounceTime = 0;
long lastRightDebounceTime = 0;
long debounceDelay = 150;
int A ;
int reading;
int toleranz;
int schaltzeit;
int gang;

#define MAXSIZE 21

typedef struct gang_s
{
    unsigned int gUw;
    unsigned int gUa;
} gang_s;

gang_s jetzt;
gang_s solljetzt;
gang_s erster[MAXSIZE]  = {{2125,2500},{2125,2575},{2125,2650},{2125,2725},{2125,2800},{2125,2875},{2125,2950},{2125,3025},{2125,3100},{2125,3175},{2125,3250},{2125,3325},{2125,3400},{2125,3475},{2125,3550},{2125,3625},{2125,3700},{2125,3775},{2125,3850},{2125,3925},{2125,4000}};
gang_s zweiter[MAXSIZE] = {{2125,2500},{2125,2425},{2125,2350},{2125,2275},{2125,2200},{2125,2125},{2125,2050},{2125,1975},{2125,1900},{2125,1825},{2125,1750},{2125,1675},{2125,1600},{2125,1525},{2125,1450},{2125,1375},{2125,1300},{2125,1225},{2125,1150},{2125,1075},{2125,1000}};
gang_s neutral = {2125,2500};

 
void setup() {
  pinMode(buttonPinLeft, INPUT);
  pinMode(buttonPinRight, INPUT);
  pinMode(buttonPinEnter, INPUT);
  pinMode(buttonPinEsc, INPUT);
  lcd.begin(16, 4);
  lcd.clear();
  A = 0;  
  gang = 0;
  gang_s jetzt = { 2125,2500 };
  toleranz=1;
}

void loop() {
  switch(A){
  case 0:
    lcd.setCursor(0, 0);
    lcd.print(jetzt.gUw);
    lcd.setCursor(0,1);
    lcd.print(jetzt.gUa);
    lcd.setCursor(0,2);
  if ((jetzt.gUw=2125) && (jetzt.gUa>=3000)) {
    lcd.print("Gang: 1");
  }
  else if((jetzt.gUw=2125) && (jetzt.gUa<=2000)) {
    lcd.print("Gang: 2");
  }
  else{
    lcd.print("Gang: N");
  }
  break;
  case 10:  
    lcd.setCursor(0, 0);
    lcd.print("> T: Ideal");
    lcd.setCursor(0,1);
    lcd.print("  T: +5%");
    lcd.setCursor(0,2);
    lcd.print("  T: -5%");
    lcd.setCursor(0,3);
    lcd.print("  T: +10%");
    break;
  case 20:
    lcd.setCursor(0,0);
    lcd.print("  T: Ideal");
    lcd.setCursor(0,1);
    lcd.print("> T: +5%");
    lcd.setCursor(0,2);
    lcd.print("  T: -5%");
    lcd.setCursor(0,3);
    lcd.print("  T: +10%");
    break;
  case 30:
    lcd.setCursor(0,0);
    lcd.print("  T: Ideal");
    lcd.setCursor(0,1);
    lcd.print("  T: +5%");
    lcd.setCursor(0,2);
    lcd.print("> T: -5%");
    lcd.setCursor(0,3);
    lcd.print("  T: +10%");
    break;
  case 40:
    lcd.setCursor(0,0);
    lcd.print("  T: +5%");
    lcd.setCursor(0,1);
    lcd.print("  T: -5%");
    lcd.setCursor(0,2);
    lcd.print("> T: +10%");
    lcd.setCursor(0,3);
    lcd.print("  T: -10%");
    break;
  case 50:      
    lcd.setCursor(0,0);
    lcd.print("  T: +5%");
    lcd.setCursor(0,1);
    lcd.print("  T: -5%");
    lcd.setCursor(0,2);
    lcd.print("  T: +10%");
    lcd.setCursor(0,3);
    lcd.print("> T: -10%");
    break;
  case 11:  
    lcd.setCursor(0, 0);
    lcd.print("> auf 1.Gang");
    lcd.setCursor(0,1);
    lcd.print("  auf 2.Gang");
    lcd.setCursor(0,2);
  case 12:
    lcd.setCursor(0,0);
    lcd.print("  auf 1.Gang");
    lcd.setCursor(0,1);
    lcd.print("> auf 2.Gang");
    lcd.setCursor(0,2);
    break;
  case 110:
    lcd.setCursor(0,0);
    lcd.print("  Schaltzeit:");
    lcd.setCursor(0,1);
    lcd.print(schaltzeit);
    lcd.setCursor(0,2);
    break;
  default:
    lcd.setCursor(0,0);
    lcd.print("Glückwunsch!");
    lcd.setCursor(0,1);
    lcd.print("Du hast das Pro-");
    lcd.setCursor(0,2);
    lcd.print("gramm kaputt");
    lcd.setCursor(0,3);
    lcd.print("gemacht! :-D");
    break;
  }

  int buttonEnterState=LOW;            
  int buttonEscState=LOW;            
  int buttonLeftState=LOW;            
  int buttonRightState=LOW;  
  reading = digitalRead(buttonPinEnter);
  if (reading != lastButtonEnterState) {
    lastEnterDebounceTime = millis();
  }
  if ((millis() - lastEnterDebounceTime) > debounceDelay) {
    buttonEnterState=reading;
    lastEnterDebounceTime=millis();
  }
  lastButtonEnterState = reading;
  reading = digitalRead(buttonPinEsc);
  if (reading != lastButtonEscState) {
    lastEscDebounceTime = millis();
  }
  if ((millis() - lastEscDebounceTime) > debounceDelay) {
    buttonEscState = reading;
    lastEscDebounceTime=millis();
  }
  lastButtonEscState = reading;
  reading = digitalRead(buttonPinRight);
  if (reading != lastButtonRightState) {
    lastRightDebounceTime = millis();
  }
  if ((millis() - lastRightDebounceTime) > debounceDelay) {
    buttonRightState = reading;
    lastRightDebounceTime =millis();
  }
  lastButtonRightState = reading;   
  reading = digitalRead(buttonPinLeft);
  if (reading != lastButtonLeftState) {
    lastLeftDebounceTime = millis();
  }
  if ((millis() - lastLeftDebounceTime) > debounceDelay) {
    buttonLeftState = reading;
    lastLeftDebounceTime=millis();
  }
  lastButtonLeftState = reading;
  if (buttonEnterState==HIGH){
    lastButtonPushed=buttonPinEnter;
  }
  else if(buttonEscState==HIGH){
    lastButtonPushed=buttonPinEsc;
  }
  else if(buttonRightState==HIGH){
    lastButtonPushed=buttonPinRight;
  }
  else if(buttonLeftState==HIGH){
    lastButtonPushed=buttonPinLeft;
  }
  else{
    lastButtonPushed=0;
  }

  //////////////////////////////  Taster  ///////////////////////////////////
  //menu key down

  if (buttonRightState==HIGH ) {
    if((A == 10) || (A == 20) || (A == 30)|| (A == 40)) {
      A = A + 10;
    }
    else if(A == 11) {
      A = A + 1;
    }
     else if(A == 110){
      schaltzeit = schaltzeit + 100;  
     }
  }
  //menu key up
  if (buttonLeftState==HIGH) {
    if((A == 20) || (A == 30) || (A == 40)|| (A == 50)) {
      A = A - 10;
    }
    else if((A == 12)) {
      A = A - 1;
    }
     else if( A == 110 ){
     schaltzeit = schaltzeit - 100;
     }
  }

  //menu key ok
  if (buttonEnterState==HIGH) {
    switch(A){
    case 10:
      toleranz=1;
      A=11;
      break;

    case 20:
      toleranz=1.05;
      A=11;
      break;

    case 30:
      toleranz=0.95;
      A=11;
      break;

    case 40:
      toleranz=1.1;
      A=11;
      break;

    case 50:
      toleranz=0.9;
      A=11;
      break;
      
    case 11:
      gang = 1;
      A=110;
      break;

    case 12:
      gang = 2;
      A=110;
      break;
     
     case 110:
         switch(gang){
          
          case 1:
//        //  jetzt = umschaltfkt1();
//          solljetzt = jetzt;
//          solljetzt = umschaltfkt1();
//          jetzt = solljetzt;
         break;
          case 2:
 
         break;
         
         default:
         break;
         }
         A==0;
     break;

    default:
      A=10;
      break;    
    }
  }
  //menu key ESC
  if ( buttonEscState==HIGH) {
    if((A == 11) || (A == 12)) {
      A = 10;
    }
    else if(A > 100) {
      A = 11;
    }
    else if((A == 20) || (A == 30) || (A == 40) || (A == 50)) {
      A = 10;
    }
    else if(A == 110) {
      A = 11;
    }
 

}
  if ((buttonLeftState==HIGH) && (buttonRightState==HIGH)) {
  A=10;
  }
}

  gang_s umschaltfkt( gang_s j[], gang_s n[], gang_s w[], int t, int tol)
  {
    int a;
    int b;
    for( a = 20; a > 0; a--)
    {
      lcd.setCursor(0, 0);
      lcd.print(j[a].gUw);
      lcd.setCursor(0,1);
      lcd.print(j[a].gUa);
    }
    
    for( b = 0; b < 20; b++){
      lcd.setCursor(0, 0);
      lcd.print(w[b].gUw);
      lcd.setCursor(0,1);
      lcd.print(w[b].gUa);
    
    }
  return w[20];
 }

Зарание спасибо!

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вот ответ

И посмотрите как вставлять код.

cheshire
cheshire аватар
Offline
Зарегистрирован: 11.07.2014

сомневаюсь что это мне поможет. да, код ошибки говорит что я не правильно (или вовсе не создал) s_gang, но проблема в том, что если убрать функцию в конце то ошибка пропадает. логично думать, что ошибка тогда в самой функции a не структуре.

step962
Offline
Зарегистрирован: 23.05.2011

Вместо объявления

gang_s umschaltfkt( gang_s j[], gang_s n[], gang_s w[], int t, int tol)

попробуйте

struct gang_s umschaltfkt( gang_s j[], gang_s n[], gang_s w[], int t, int tol)

 

toly
Offline
Зарегистрирован: 17.05.2014

Объявление структуры нужно положить в отдельный h-фаил, и подключить его как библиотеку при помощи include.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Не надо пугать словом 'библиотека', заголовочный файл это не библиотека, а средство использовать описание, например, объекта в нескольких сишных файлах и библиотека тут ни при чем.