• 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

Object Storage Arubacloud
0 głosów
450 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,000 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,371 wizyt
0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 24 października 2022 w Mikrokontrolery przez Mechanik_10 Nowicjusz (120 p.)
–3 głosów
0 odpowiedzi 1,758 wizyt

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...