• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ARDUINO a function-definition is not allowed here before '{' token

VPS Starter Arubacloud
0 głosów
548 wizyt
pytanie zadane 30 maja 2020 w Mikrokontrolery przez antekelektronik Obywatel (1,120 p.)

Dzień dobry! Napisałem przed chwilą kod . Pracuję nad szkolnym projektem , quiz o elektronice , klasa 6 szkoła podstawowa. Takie żadne urządzenie , prosty projekt na płytce stykowej . wyświetlacz lcd 16x2 oraz 5 przycisków . Ale tak , kod się nie kompiluje . nie wiem w ogóle czego ten błąd dotyczy a brzmi on tak "a function-definition is not allowed here before '{' token" . problem pojawia się przy void wczytywanie(){ 

 

mój kod:


#include <LiquidCrystal.h>


const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

bool login;
bool animacja;

int p1pin = 6;
int p2pin = 7;
int p3pin = 8;
int p4pin = 9;
int p5pin = 10;


int p1 = 0;
int p2 = 0;
int p3 = 0;
int p4 = 0; 
int p5 = 0;

int punkty;

void wczytywanie();
void dobrze();
void zle();


void setup()
{
  pinMode(6,INPUT);
  pinMode(7,INPUT);
  pinMode(8,INPUT);
  pinMode(9,INPUT);
  pinMode(10,INPUT);
  
  lcd.begin(16,2);
  
  //ekran główny
  
  lcd.setCursor(3,0);
  lcd.print("quiz");
  
  while(login = false){
    
    if(animacja == true){
       lcd.setCursor(2,1);
      lcd.print("start");
      animacja == false;
      delay(500);
    }
    else if(animacja == false){
      lcd.setCursor(2,1);
      lcd.print("     ");
      animacja == true;
      delay(500);
    }
  
    
    p1 = digitalRead(p1pin);
    p2 = digitalRead(p2pin);
    p3 = digitalRead(p3pin);
    p4 = digitalRead(p4pin);
    p5 = digitalRead(p5pin);
    
    
    if((p1 == HIGH)||(p2 == HIGH)||(p3 == HIGH)||(p4 == HIGH)||(p4 == HIGH)||(p5 == HIGH)){
      delay(200);
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("wczytywanie");
      delay(2000);
      login == true;
    }
    
  }
  
  //regulamin 
  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("zaraz na ekranie");
  lcd.setCursor(0,1);
  lcd.print("zobaczysz");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("nazwy elenentow");
  lcd.setCursor(0,1);
  lcd.print("elektronicznych");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("twoim zadaniem");
  lcd.setCursor(0,1);
  lcd.print("jest nacisniecie");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("odpowiedniej");
  lcd.setCursor(0,1);
  lcd.print("ikony");
  delay(3000);
  delay(1000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("zaczynajmy!!!");
  
  
    p1 = digitalRead(p1pin);
    p2 = digitalRead(p2pin);
    p3 = digitalRead(p3pin);
    p4 = digitalRead(p4pin);
    p5 = digitalRead(p5pin);
    
    
    if((p1 == HIGH)||(p2 == HIGH)||(p3 == HIGH)||(p4 == HIGH)||(p4 == HIGH)||(p5 == HIGH)){
      delay(200);
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("wczytywanie");
      delay(2000);
    }
  
  
  
  
  
  
pytanie1:
  
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("rezystor");
  
  for(bool lol; lol == false;){
    wczytywanie();
    
    if(p1 == HIGH){
    dobrze();
    lol = true;
  }else if((p2 == HIGH)||(p3 == HIGH)||(p4 == HIGH)||(p5 == HIGH)){
    zle();
    delay(2000);
    goto pytanie1;
  }
  
}




  
pytanie2:
  
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("cewka");
  
  for(bool lol; lol == false;){
    wczytywanie();
    
    if(p2 == HIGH){
    dobrze();
    lol = true;
  }else if((p1 == HIGH)||(p3 == HIGH)||(p4 == HIGH)||(p5 == HIGH)){
    zle();
    delay(2000);
    goto pytanie2;
  }
  
}




  
pytanie3:
  
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("kondensator");
  
  for(bool lol; lol == false;){
    wczytywanie();
    
    if(p3 == HIGH){
    dobrze();
    lol = true;
  }else if((p2 == HIGH)||(p1 == HIGH)||(p4 == HIGH)||(p5 == HIGH)){
    zle();
    delay(2000);
    goto pytanie3;
  }
  
}





  
pytanie4:
  
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("tranzystor");
  
  for(bool lol; lol == false;){
    wczytywanie();
    
    if(p4 == HIGH){
    dobrze();
    lol = true;
  }else if((p2 == HIGH)||(p3 == HIGH)||(p1 == HIGH)||(p5 == HIGH)){
    zle();
    delay(2000);
    goto pytanie4;
  }
  
}


void loop(){
  
}



void wczytywanie() {
  
    p1 = digitalRead(p1pin);
    p2 = digitalRead(p2pin);
    p3 = digitalRead(p3pin);
    p4 = digitalRead(p4pin);
    p5 = digitalRead(p5pin);
    

}


void dobrze(){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("dobrze!");
  
  delay(2000);
  
}


void zle(){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("zle");
  
  delay(1000);
}

bardzo proszę o pomoc , muszę to skończyć to na piątek. zostały mi do dodania jeszcze 2 pytania , ale nie chcę ich robić , ponieważ boję się że nie naprawię kodu i moja praca pójdzie na marnę . to moje pierwsze pytanie odniśnie programowania , bardzo się cieszę że znalazłem tą stronę , ponieważ dopiero się uczę angielskiego i nie chcę używać stackoverflow

komentarz 30 maja 2020 przez tkz Nałogowiec (42,020 p.)
Dlaczego używasz goto? Użyj switcha i zobaczysz sam, że nie zamknąłeś setup()...

2 odpowiedzi

+1 głos
odpowiedź 30 maja 2020 przez 1234 Dyskutant (9,140 p.)
wybrane 1 czerwca 2020 przez antekelektronik
 
Najlepsza
Nie domknąłeś setup(), wystarczy poprawić nieco taby, żeby to zauważyć. Po wyświetleniu zasad gry możesz użyć funkcji wczytywanie, która jest identyczna co te 5 linijek od wczytywania wciśniętych przycisków. Tak swoją drogą, nie żebym się czepiał, bo rozumiem, że dopiero zaczynasz, ale zapisywanie pinu D5 jako zmienna d4 może być trochę mylące.
komentarz 30 maja 2020 przez antekelektronik Obywatel (1,120 p.)

te dwie linijki 

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

po prostu skopiowałem z przykładowego kodu ze strony:  https://www.arduino.cc/en/Tutorial/HelloWorld tych zmiennych nie używam. W sumie pisząc ten komentarz uświadomiłem sobie swoją głupotę , bo zamiast pisać np LiquidCrystal(12,11,5,4,3,2) to zawsze pisałem tak jak w kodzie powyżej . (po prostu z lenistwa kopiowałem sobie)

komentarz 30 maja 2020 przez 1234 Dyskutant (9,140 p.)
A tam głupota od razu, ja też często przeklejam kod z jednego programu do drugiego ;)
0 głosów
odpowiedź 30 maja 2020 przez Damian12345 Bywalec (2,940 p.)
nie znam się ale pisze że definicja jakiegoś token jest źle zdefiniowana przed "{". Warto to wpisać w tłumacza.

Podobne pytania

0 głosów
1 odpowiedź 2,449 wizyt
0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 24 października 2022 w Mikrokontrolery przez Mechanik_10 Nowicjusz (120 p.)
–3 głosów
0 odpowiedzi 1,788 wizyt

93,012 zapytań

141,977 odpowiedzi

321,266 komentarzy

62,354 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...