Arduino Polska Forum

Pełna wersja: Arduino bluetooth
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam. Mam problem z bluetooth na arduino. Zestaw ma za zadanie sterować 6-7 przekaźnikami. Wszystko jest ok dla 3 sztuk. Gdy dopisuje 4 linijke dla przekaźnika sypie błedami? Może ktoś pomóc w rozwiązaniu tego problemu.
Kod:
char state;


void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    state = Serial.read();
  }
  if (state == 'A') {
    digitalWrite(2, HIGH);
  } else if (state == 'a') {
    digitalWrite(2, LOW);
  } else if (state == 'B') {
    digitalWrite(3, HIGH);
  } else if (state == 'b') {
    digitalWrite(3, LOW);
  } else if (state == 'C') {
    digitalWrite(4, HIGH);
  } else if (state == 'c') {
    digitalWrite(4, LOW);



  }
   

  }

 Tu jest wszystko ok.
Gdy dodam nastepne wiersze:
Kod:
char state;


void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    state = Serial.read();
  }
  if (state == 'A') {
    digitalWrite(2, HIGH);
  } else if (state == 'a') {
    digitalWrite(2, LOW);
  } else if (state == 'B') {
    digitalWrite(3, HIGH);
  } else if (state == 'b') {
    digitalWrite(3, LOW);
  } else if (state == 'C') {
    digitalWrite(4, HIGH);
  } else if (state == 'c') {
    digitalWrite(4, LOW);
    } else if (state == 'C') {
    digitalWrite(5, HIGH);
  } else if (state == 'c') {
    digitalWrite(5, LOW);



  }
   

  }
Wywala bład:
C:\Users\Kris\AppData\Local\Temp\cces0IFh.ltrans0.ltrans.o: In function `main':
C:\Users\Kris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.4\cores\arduino/main.cpp:43: undefined reference to `setup'
C:\Users\Kris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.4\cores\arduino/main.cpp:46: undefined reference to `loop'
collect2.exe: error: ld returned 1 exit status
exit status 1
Błąd kompilacji dla płytki Arduino Uno.
























C:\Users\Kris\AppData\Local\Temp\ccIp7kw6.ltrans0.ltrans.o: In function `main':

C:\Users\Kris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.4\cores\arduino/main.cpp:43: undefined reference to `setup'

C:\Users\Kris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.4\cores\arduino/main.cpp:46: undefined reference to `loop'

collect2.exe: error: ld returned 1 exit status

exit status 1

Błąd kompilacji dla płytki Arduino Uno.



Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Dwa razy sprawdzasz literkę C - i wielką, i małą. Błąd przepisywania czy tak jest?
Ale to oczywiście nie powinno spowodować błędu linkowania. Najwyżej ostrzeżenie 
kompilacji - że część kodu nigdy się nie wykona.
Wygląda jakby twój moduł się nie skompilował, ale normalnie nie zaczęło by się 
linkowanie w takiej sytuacji. Albo się skompilował, ale z jakiegoś powodu nie został 
wzięty do linkowania. Tak naprawdę nie wiem co się dzieje pod spodem - jak szkic
jest przekształcany w kod do kompilacji, co jest kompilowane 
(widać, że jakiś main z pakietu woła setup() i loop())
I jeszcze to, że krótszy program się kompiluje a dłuższy nie, czyli środowisko wygląda ok.
Chyba że to problem jakiegoś braku pamięci. To co zaprezentowałeś to wszystko,
czy jest tam coś jeszcze. Choć dopisujesz kod a nie dane, a flasha to trochę jest.

A włączyłeś tą opcje pokazywania więcej?
(08-10-2023, 17:28)oscarX napisał(a): [ -> ]Dwa razy sprawdzasz literkę C - i wielką, i małą. Błąd przepisywania czy tak jest?
Ale to oczywiście nie powinno spowodować błędu linkowania. Najwyżej ostrzeżenie 
kompilacji - że część kodu nigdy się nie wykona.
Wygląda jakby twój moduł się nie skompilował, ale normalnie nie zaczęło by się 
linkowanie w takiej sytuacji. Albo się skompilował, ale z jakiegoś powodu nie został 
wzięty do linkowania. Tak naprawdę nie wiem co się dzieje pod spodem - jak szkic
jest przekształcany w kod do kompilacji, co jest kompilowane 
(widać, że jakiś main z pakietu woła setup() i loop())
I jeszcze to, że krótszy program się kompiluje a dłuższy nie, czyli środowisko wygląda ok.
Chyba że to problem jakiegoś braku pamięci. To co zaprezentowałeś to wszystko,
czy jest tam coś jeszcze. Choć dopisujesz kod a nie dane, a flasha to trochę jest.

A włączyłeś tą opcje pokazywania więcej?
Z tymi literkami to przypadek bo wycinam i wklejam tekst zeby szybciej było. Ale nawet jak sie nie powtarzaja to jest problem z kompilacja.
Zresetowałem kompa i pomogło. Nie wiem co tu sie dzieje
(08-10-2023, 17:47)kdinstal napisał(a): [ -> ]Zresetowałem kompa i pomogło. Nie wiem co tu sie dzieje


Może sprawdź zegarek w kompie - czy prawidłowy czas, baterie od biosu itp. Budowanie softu (make) bazuje na czasie modyfikacji plików, gdy coś się dzieje nie tak z zegarkiem (lub ktoś/coś przestawi zegarek) czasami występują problemy z kompilacją. Może być np. tak, że bateria siądzie, komputer po włączeniu na dziwny czas, ale za jakiś czas zsynchronizuje się z siecią i ustawi prawidłowo. Do resetu...
Jak się dokleja i ma problemy z loop i setup to zwykle chodzi o klamerki {}, czegoś brakuje.