Skocz do zawartości

Arduino 1.8.19, błąd przy napotkaniu pętli IF.


99teki

Pomocna odpowiedź

- kolejny raz napotykam poniższą strukturę a że nie zaliczyłem żadnego kursu to się pytam na tym forum.

for (int i = 0; i < end; i++) {
	    ;
	}
	(int i=0;i<6;i++)
	{
		spr.drawString(sta[i],38,32+(i*12));
		spr.fillCircle(16,31+(i*12),2,0xFBAE);
	}
	spr.setTextColor(TFT_WHITE,TFT_BLACK);

- kompilator podaje komunikat "error: 'end' was not declared in this scope"

- czego dotyczy para nawiasów { ; }, (int i =0;i<6;i++) i para nawiasów {    spr.draw .... ; spr.fiilCircle...;     }

- menadzer płytek esp32s3 w wersji 2.013, arduino esp32 board w wersji 2.012

 

Link do komentarza
Share on other sites

 

Ten fragment to sieczka bez żadnego sensu.

7 godzin temu, 99teki napisał:

error: 'end' was not declared in this scope

W podanym fragmencie rzeczywiście brak jest deklaracji  'end', ale może to być też rezultat innych wcześniejszych błędów.

 

7 godzin temu, 99teki napisał:

czego dotyczy para nawiasów { ; },

pusta instrukcja pętli for - nic nie robi

 

7 godzin temu, 99teki napisał:
(int i=0;i<6;i++)

zapewne pozostałość po jakiejś pętli for, której nie ma

7 godzin temu, 99teki napisał:

para nawiasów {    spr.draw .... ; spr.fiilCircle...;     }

w takim kontekście nawiasy nic nie dają.

być może ten fragment powinien wyglądać tak:

for (int i = 0; i < 6; i++)
{
  spr.drawString(sta[i], 38, 32 + (i * 12));
  spr.fillCircle(16, 31 + (i * 12), 2, 0xFBAE);
}
spr.setTextColor(TFT_WHITE, TFT_BLACK);

albo tak:

// musi być wcześniejsza deklaracja 'end'

for (int i = 0; i < end; i++) 
{
  spr.drawString(sta[i], 38, 32 + (i * 12));
  spr.fillCircle(16, 31 + (i * 12), 2, 0xFBAE);
}
spr.setTextColor(TFT_WHITE, TFT_BLACK);

 

 

Edytowano przez jand
  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

- przeszukałem deklaracji end nie ma. 

- tylko to się powtarza tak ze trzy razy, to raczej nie pomyłka.

- może takie zabezpieczenie programisty albo coś nowego w GCC.

- fraza "end " jest na czerwono, czyli to jest jakiś element komend.

 

Edytowano przez 99teki
Link do komentarza
Share on other sites

Tyle że to naprawdę jest bez sensu - tak jakbyś wybierał sobie słowa ze słownika rzucając kostką i próbował doszukiwać się tam sensu. Dla kogoś kto nie ma pojęcia o języku polskim (i s ogóle europejskich językach) będzie to wyglądać jak zdanie... tak samo przytoczony fragment przypomina C.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

38 minut temu, 99teki napisał:

przeszukałem deklaracji end nie ma

No właśnie.

39 minut temu, 99teki napisał:

- tylko to się powtarza tak ze trzy razy, to raczej nie pomyłka.

 

Gdzie się powtarza, podaj źródło...

40 minut temu, 99teki napisał:

albo coś nowego w GCC.

każdy kompilator musi uwzględniać standard języka.

 

41 minut temu, 99teki napisał:

fraza "end " jest na czerwono, czyli to jest jakiś element komend.

Tak, jakiś element komend, ale to tylko znaczy, że w pliku keywords.txt jakiejś biblioteki został on wyszczególniony (prawdopodobnie w całkiem innym kontekście).

Na przykład biblioteka SPI ma metodę end()  i stąd może być pokolorowanie.

Link do komentarza
Share on other sites

- patrzę na tekst żródłowy, jest dobrze.

- teraz to są dwie możliwości albo mam "wirusa programisty" albo pora pójść odespać po świętach.

- no i przepraszam za zamieszanie, szukam wirusa programisty.

Link do komentarza
Share on other sites

Jest tam taki szkic:
 

#include <Wire.h>
#include <TEA5767.h>
#include <FastLED.h>
#include "TFT_eSPI.h"
#include <RotaryEncoder.h>


TFT_eSPI tft = TFT_eSPI();
TFT_eSprite spr = TFT_eSprite(&tft);

#define PIN_IN1 2
#define PIN_IN2 1

#define NUM_LEDS 7
#define DATA_PIN 42
#define CLOCK_PIN 45
CRGB leds[NUM_LEDS];

RotaryEncoder encoder(PIN_IN1, PIN_IN2, RotaryEncoder::LatchMode::TWO03);


#define color1 0xC638
#define color2  0xC638

int value=980;
int minimal=880;
int maximal=1080;
int strength=0;
String sta[6]={"96.6","101.0","89.4","106,5","98.2","92.4"};

float freq=0.00;
TEA5767 radio = TEA5767();

bool muted=0;
int deb=0;

void setup() {
  
  pinMode(46, OUTPUT);
  digitalWrite(46, HIGH);

  tft.begin();
  tft.writecommand(0x11);
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK);

  pinMode(15, OUTPUT);
  digitalWrite(15, HIGH);

  pinMode(0, INPUT_PULLUP);
  FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

  Wire.begin(43,44);
    

  spr.createSprite(320,170);
  spr.setTextDatum(4);
  spr.setSwapBytes(true);
  spr.setFreeFont(&Orbitron_Light_24);
  spr.setTextColor(color1,TFT_BLACK);

  leds[0] = CRGB::Red;
  leds[1] = CRGB::White;
  leds[2] = CRGB::Red;
  leds[3] = CRGB::Green;
  leds[4] = CRGB::Red;
  leds[5] = CRGB::Blue;
  leds[6] = CRGB::Red;
  FastLED.show();
  drawSprite();

}

void readEncoder() {

  static int pos = 0;
  encoder.tick();

  if(digitalRead(0)==0){
    if(deb==0){
      deb=1;
      muted=!muted;
      radio.setMuted(muted);
      drawSprite();
      delay(200);
    }
  }else deb=0;
  
  int newPos = encoder.getPosition();
  if (pos != newPos) {
    
    if(newPos>pos)
    value=value-1;
      if(newPos<pos)
      value=value+1;
    
    pos = newPos;
    
    drawSprite();
  } 

}

void drawSprite()
{
freq=value/10.00;
if(muted==false)
radio.setFrequency(freq);

strength=radio.getSignalLevel();
spr.fillSprite(TFT_BLACK);
spr.setTextColor(TFT_WHITE,TFT_BLACK);

spr.drawFloat(freq,1,160,64,7);
spr.setFreeFont(&Orbitron_Light_24);
spr.drawString("FM Radio",160,12);
spr.drawString("STATIONS",38,14,2);
spr.drawRoundRect(1,1,76,110,4,0xAD55);
spr.drawRoundRect(240,20,76,22,4,TFT_WHITE);

spr.drawRect(290,6,20,9,TFT_WHITE);
spr.fillRect(291,7,12,7,0x34CD);
spr.fillRect(310,8,2,5,TFT_WHITE);

spr.setTextFont(0);
spr.setTextColor(0xBEDF,TFT_BLACK);
for(int i=0;i<6;i++){
spr.drawString(sta[i],38,32+(i*12));
spr.fillCircle(16,31+(i*12),2,0xFBAE);
}
spr.setTextColor(TFT_WHITE,TFT_BLACK);

spr.drawString("SIGNAL:",266,54);
spr.drawString("MUTED",260,102,2);
spr.fillRoundRect(288,96,20,20,3,0xCC40);

if(muted==1)
spr.fillCircle(297,105,6,TFT_WHITE);


for(int i=0;i<strength;i++)
spr.fillRect(244+(i*4),80-(i*1),2,4+(i*1),0x3526);



spr.fillTriangle(156,104,160,114,164,104,TFT_RED);

  
 int temp=value-20;
 for(int i=0;i<40;i++)
 {
 if((temp%10)==0){
  spr.drawLine(i*8,170,i*8,140,color1);
  
  spr.drawLine((i*8)+1,170,(i*8)+1,140,color1);
  spr.drawFloat(temp/10.0,1,i*8,130,2);
  }
 else if((temp%5)==0 && (temp%10)!=0)
 {spr.drawLine(i*8,170,i*8,150,color1);
 spr.drawLine((i*8)+1,170,(i*8)+1,150,color1);
 //spr.drawFloat(temp/10.0,1,i*8,144);
 }
 else
  {spr.drawLine(i*8,170,i*8,160,color1);}
 
  temp=temp+1;
 }
spr.drawString("Stereo: "+String(radio.isStereo()),275,31,2);




spr.drawLine(160,114,160,170,TFT_RED);
spr.pushSprite(0,0);

}

void loop() { 

  readEncoder();
}


W którym występuje fragment:

for(int i=0;i<6;i++){
spr.drawString(sta[i],38,32+(i*12));
spr.fillCircle(16,31+(i*12),2,0xFBAE);
}


Ale nie występuje to, co załączałeś na początku - co pozwala sugerować, że to błąd przy edycji kodu. 
 

  • Lubię! 1
Link do komentarza
Share on other sites

9 godzin temu, etet100 napisał:

Trochę nie na temat ale zastanawia mnie jedno. Ten VolosR ma 130 repozytoriów, 900 obserwatorów, a każdy jego kod wygląda jak śmietnik. O co tu chodzi?
 

Odpowiem trochę prowokacyjnie 😉 Ludzie dzielą się na trzy grupy: tych, którzy naprawdę znają sztukę tworzenia oprogramowania; tych, którzy naprawdę znają sztukę posługiwania się lutownicą i projektowania układów oraz (bardzo nieliczną) tych, którzy opanowali obydwie te sztuki. Pierwsze dwie grupy są bardzo liczne (sam zaliczam się do jednej z nich). Przypuszczam, że fani w/w repozytorium to miłośnicy elektroniki, dla których liczy się, że "ten kod działa" 😉

Link do komentarza
Share on other sites

- coście się doczepili do Volosa.

- zrobiłem wg jego propozycji kilka projektów, działały od pierwszego kopa.

- a lutownicą dobrze się posługuję.

- dla arduinowców takie repozytorium to skarb.

- i tyle w starym roku, tak trzymać.

Capture-1.thumb.png.bb877a504d236597e07844685d80fe5c.png

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.