Error: ' ' does not name a type
- Войдите на сайт для отправки комментариев
Перейду быстро к делу.
Написал программу, получил ошибку: '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];
}
Зарание спасибо!
Вот ответ
И посмотрите как вставлять код.
сомневаюсь что это мне поможет. да, код ошибки говорит что я не правильно (или вовсе не создал) s_gang, но проблема в том, что если убрать функцию в конце то ошибка пропадает. логично думать, что ошибка тогда в самой функции a не структуре.
Вместо объявления
попробуйте
Объявление структуры нужно положить в отдельный h-фаил, и подключить его как библиотеку при помощи include.
Не надо пугать словом 'библиотека', заголовочный файл это не библиотека, а средство использовать описание, например, объекта в нескольких сишных файлах и библиотека тут ни при чем.