Arduino, kopplar inte vad som är orsaken till felmeddelandet

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av johano »

@henry: jag la skriv() UTANFÖR loop() och setup() ... precis som alla andra sagt också :roll:
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av sodjan »

Du har ju hela tiden visat kodexempel som inte såg ut så som alla sa och så som johano's exempel visade.

Det du *skrev* att du gjorde är i princip helt ointressant, det går så klart inte att lita på.
Inte för att just du skrev det utan för att det alltid är så generellt... :-)
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av sodjan »

> vad är det som händer..

setup() anropas inte och optimeras nog bort.

Sen så har du väl ingen main(), så det finns nog
inget att köra, bara några definierade funktioner.
Kanske om du tar bort "void" vid loop()?
Användarvisningsbild
Henry
Inlägg: 23611
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Henry »

@henry: jag la skriv() UTANFÖR loop() och setup() ... precis som alla andra sagt också :roll:
Och jag är mer än fullt medveten om detta och jag upprepar var jag skrev innan:
Det kvittar var jag sätter den, loop, setup eller före allt det blir samma ändå.
Jag satte den koden utanför loop och utanför/ovanför setup och det blev alltså samma ändå, som jag skrev.

sodjan: om jag sade att jag testat koden med funktionen enbart och testat att lägga den överallt där det går så hade det varit fruktansvärt dumt att ödsla folks tid genom att ljuga om det. :wink:

Och som jag skrev nedan så funkar nu plötsligt koden som inte fungerade innan som johano klistrade in och som jag kopierade rakt av och klistrade in, den kompileras utan bekymmer och jag fattar absolut ingenting.. Detta med funktionen i setup som inte fungerade innan fungerar nu, lägger jag det i loopen blir det samma klagomål som innan som det väl skall skall och lägger jag tillbaka den där den skall vara så går allt igenom som om inget hänt.


Tid är ju millis så jag fick uppfattningen att det hela tiden räknades upp så att säga och nollställdes det så började det om från 0, men detta läses väl från något register i i processorn vad som finns där och således funkar inte det så som jag tänkt/hoppades även om detta problem nu var sekundärt då det inte gick att kompilera något tills nu plötsligt som jag fortfarande inte fattar varför..
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av johano »

Ok, kan du posta _exakt_ den kod som inte kompilerar och som du menar _har_ skriv() _utanför_ loop() och setup() så får vi kolla. Det låter konstigt.
Användarvisningsbild
Henry
Inlägg: 23611
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Henry »

Denna kod tex kompileras NU men det gjorde den inte innan och detta hände när jag kopierade den koden du lade in och klistrade in och kompilerade direkt utan några fel.

Kod: Markera allt

#include <LiquidCrystal.h>

LiquidCrystal lcd(40, 42, 28, 26, 24, 22);

int tid = millis();
int period = 3000;

void setup() {
   lcd.begin(20, 4);
   lcd.clear();
}

void skriv()
{
    lcd.print("Funkar");
    delay(1000);
    lcd.clear();
    tid = 0;
}


void loop() 
{


  
   if (tid >= period)
   {
       skriv();
   }
}

Nedan kod kompileras dock ej vilket den väl borde?

exit status 1
a function-definition is not allowed here before '{' token


void setup() {
// put your setup code here, to run once:
void skriv()

{
lcd.print("Funkar");
delay(1000);
lcd.clear();
}
}

void loop() {
// put your main code here, to run repeatedly:

}
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av johano »

Nej, den undre koden definierar en funktion (skriv) inne i en annan funktion (setup).

Det kan vara lite svårt ibörjan att ha full koll på alla 'scopes' (googla) så ett hett tips är att vara übernoggrann med indenteringen.
Varje nytt 'scope' ges en ny indentering.
Se till att alla påbörjade { avslutas med } på _samma_ indenteringsnivå !
Alla kodrader _emellan_ dessa två ska ligga på en indenteringsnivå som är _ett högre_ än de omslutande { och } !

Exempel:

Kod: Markera allt

void loop()
{
   while(true)
   {
      if(something)
      {
          do_another_thing();
      }
   }
}
Genom att vara extremfascist vad det gäller indenteringen blir det såååå mycket enklare att upptäcka denhär typen av fel.

I all välmening,
Johan
ToPNoTCH
Inlägg: 4875
Blev medlem: 21 december 2009, 17:59:48

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av ToPNoTCH »

Nää det borde inte funka.

Setup är en function.

Du kan inte definiera funktioner inom funktioner.

EDIT:2'a på bollen igen
ToPNoTCH
Inlägg: 4875
Blev medlem: 21 december 2009, 17:59:48

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av ToPNoTCH »

Detta borde funka

Kod: Markera allt

#include <LiquidCrystal.h>

LiquidCrystal lcd(40, 42, 28, 26, 24, 22);

int tid = millis();
int period = 3000;

void setup() 
  {
  // put your setup code here, to run once:
  skriv();
  }
void loop() 
  {
  // put your main code here, to run repeatedly:
  }

void skriv()
  {
    lcd.print("Funkar");
    delay(1000);
    lcd.clear();
  }
Användarvisningsbild
Henry
Inlägg: 23611
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Henry »

EDIT:2'a på bollen igen
?

Ok, jo det där med while if och then vet jag, men varför fungerade plötsligt inte huvudkoden att kompilera där det klagades på funktionen men det fungerar plötsligt nu med samma kod för jag kan inte se att något är gjort med den på något sätt om något ändrades i den?

En intressant grej; nedan kod kompilerar med allt bort kommenterat:

Kod: Markera allt

//#include <LiquidCrystal.h>

//LiquidCrystal lcd(40, 42, 28, 26, 24, 22);

//int tid = millis();
//int period = 3000;

void setup() 
  {
  // put your setup code here, to run once:
  //skriv();
  }
void loop() 
  {
  // put your main code here, to run repeatedly:
  }

void skriv()
  {
//    lcd.print("Funkar");
    delay(1000);
   // lcd.clear();
  }
Medan denna nedan inte kompilerar som per definition ju är det samma:

Kod: Markera allt

void setup() {
 
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
void skriv()
  {
    //lcd.print("Funkar");
    delay(1000);
   // lcd.clear();
  }

}
Varför?
Användarvisningsbild
Klas-Kenny
Inlägg: 11327
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Klas-Kenny »

:wall:

För att du deklarerar en funktion, inom en annan.
Även om funktionen inte innehåller någon kod så är den deklarerad, och då blir kompilatorn konfys.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av johano »

För att din skriv()-funktion (grön på bilden nedan) definieras _inne_ i den omslutande funktionen loop() (röd på bilden nedan).
Screenshot 2019-03-05 at 18.41.46.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
ToPNoTCH
Inlägg: 4875
Blev medlem: 21 december 2009, 17:59:48

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av ToPNoTCH »

ToPNoTCH skrev: Du kan inte definiera funktioner inom funktioner.
Användarvisningsbild
Henry
Inlägg: 23611
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Henry »

Det är jag med på nu och jag flyttade ju också detta till setupen där det ändå inte kompilerades innan, men gör det nu. Och koden ovan som har allt bortkommenterat MEN funktionen i loop kompilerar ändå vilket den ju då inte skall? Eller behålls grejer i nåt minne eller så i kompilatorn kanske.

Undrar också varför inte originalkoden kompilerade i början oavsett om jag satte funktionen i setupen eller utanför allt.
Användarvisningsbild
Henry
Inlägg: 23611
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Re: Arduino, kopplar inte vad som är orsaken till felmeddela

Inlägg av Henry »

Nä nu blev det samma igen med den kod som funkade innan, nu tar jag fan och installerar om allt vad Arduino och flash heter och hoppas på det bästa annars blir det en nedgradering, bara suck.

Men tack till alla som höll en god och mogen ton! :)
Skriv svar