Skocz do zawartości
Pat93

Problem z kompilacją programu w środowisku Arduino

Pomocna odpowiedź

Witam mam problem z kompilacją gdyż wyskakuje mi taki błąd i nie wiem czemu tak się dzieje. Pomoże ktoś ?

#include <Ultrasonic.h>
 
// definicje dla HCSR04
 #define TRIGGER_PIN 7
 #define ECHO_PIN 4
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
 
// silnik lewy
 const int kierunekLewy=12;
 const int hamulecLewy=9;
 const int predkoscLewy=3;
 
//silnik prawy
 const int kierunekPrawy=13;
 const int hamulecPrawy=8;
 const int predkoscPrawy=11;
 
//ustawienia
 void setup()
 {
 Serial.begin(9600);
 pinMode(kierunekLewy,OUTPUT);
 pinMode(kierunekPrawy,OUTPUT);
 pinMode(hamulecLewy,OUTPUT);
 pinMode(hamulecPrawy,OUTPUT);
 pinMode(predkoscLewy,OUTPUT);
 pinMode(predkoscPrawy,OUTPUT);
 }
 
//petla glowna programu
 void loop()
 {
 float cmMsec;
 long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

 
doPrzodu();
 delay(50);
 
if (cmMsec<=30)
 {
 doTylu();
 delay(500);
 }
 }
 
void doPrzodu()
 {
 analogWrite(predkoscLewy,100);
 analogWrite(predkoscPrawy,105);
//Lewy do przodu
 digitalWrite(kierunekLewy,HIGH);
 digitalWrite(hamulecLewy,LOW);
//Prawy do przodu
 digitalWrite(kierunekPrawy,HIGH);
 digitalWrite(hamulecPrawy,LOW);
 }
 
void doTylu()
 {
 analogWrite(predkoscLewy,200);
 analogWrite(predkoscPrawy,0);
//Lewy do przodu
 digitalWrite(kierunekLewy,LOW);
 digitalWrite(hamulecLewy,LOW);
//Prawy stop
 digitalWrite(kierunekPrawy,HIGH);
 digitalWrite(hamulecPrawy,HIGH);
 }


 

program.png

Edytowano przez Sabre

Udostępnij ten post


Link to post
Share on other sites

Bardzo ładne zdjęcie ekranu... a teraz pokaż jaki to błąd.

Udostępnij ten post


Link to post
Share on other sites

Próbuje skomplilować  i zaznacza mi na czerwono te linijkę kodu - long microsec = ultrasonic.timing(); i wyskakuje within this context 

Udostępnij ten post


Link to post
Share on other sites

I tylko tyle?

Masz tam na dole takie fajne czarne okieneczko, w tej chwili jest ściśnięte do minimum, chwyć myszkę i je rozciągnij, popatrz czy coś na czerwono przypadkiem nie pisze.

Poza tym przed kompilacją otwórz preferencje i zaznacz wyświetlanie wszystkich błędów kompilatora.

Jak to zrobisz, skompiluj jeszcze raz, jeśli coś się wyświetliło to skopiuj i wklej na forum (nie rób screenshota tylko wklej jako tekst, najlepiej poprzez funkcję "wstaw kod").

Dopiero wtedy ktoś będzie mógł Ci pomóc.

@Treker jesteś tam może? Nie można by jakoś przykleić takiej informacji do działu "programowanie" (o zamieszczaniu błędów z Arduino IDE)? Bo ja już chyba piąty raz tłumaczę jak to się robi...

Udostępnij ten post


Link to post
Share on other sites










In file included from C:\Users\Dell\Documents\Arduino\sketch_jun22a\sketch_jun22a.ino:1:0:

C:\Users\Dell\Documents\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h: In function 'void loop()':

C:\Users\Dell\Documents\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h:43:18: error: 'unsigned int Ultrasonic::timing()' is private

     unsigned int timing();

                  ^

sketch_jun22a:34:36: error: within this context

  long microsec = ultrasonic.timing();

                                    ^

sketch_jun22a:35:21: error: 'class Ultrasonic' has no member named 'convert'

 cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

                     ^

In file included from C:\Users\Dell\Documents\Arduino\sketch_jun22a\sketch_jun22a.ino:1:0:

C:\Users\Dell\Documents\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h:26:12: error: expected unqualified-id before numeric constant

 #define CM 28

            ^

C:\Users\Dell\Documents\Arduino\sketch_jun22a\sketch_jun22a.ino:35:51: note: in expansion of macro 'CM'

 cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

                                                   ^

exit status 1
within this context

takie cos sie wysweitla

Udostępnij ten post


Link to post
Share on other sites

No to teraz dwa pytania:

Dlaczego chcesz użyć metody timing i nie dociera do Ciebie, że to prywatna metoda i nie jest dostępna w aplikacji?

Skąd wziąłeś informacje o tym, że istnieje jakaś metoda "convert"?

A przecież jak wół wyświetla się informacja, że:
 

error: 'unsigned int Ultrasonic::timing()' is private

error: 'class Ultrasonic' has no member named 'convert'

Czego w tych dwóch zdaniach nie rozumiesz?

 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...