Arduino Polska Forum

Pełna wersja: Podział kodu źródłowego na pliki
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam.
Chcąc poprawić czytelność kodu próbuje podzielić mój kod na pliki, bez skutku.
Korzystam z Eclips-a. Czytałem różne poradniki, oglądałem poradniki wideo ale nadal coś mi umyka...
Wstawiony kod jest przykładowy aby nie zaciemniać tego, z czym mam problem.
Przetestowałem poniższy kod jako pojedynczy plik main.c i wszystko śmiga.
Po podziale na pliki nie daje się skompilować Huh

plik główny
Kod:
#include <Arduino.h>
#include "wyslij.h"

void setup() {
  //otwarcie portu i ustawienie prędkości na 9600 bodów
  Serial.begin(9600);
  //wypisanie linijki tekstu
  Serial.println("Kolejno odlicz!");
}


void loop() {
    wyslij();
  //czekamy sekundę na kolejny przebieg pętli
  delay(1000);
}

plik nagłówkowy wyslij.h
Kod:
/*
* wyslij.h
*
*  Created on: 19 mar 2020
*      Author: Staszek 
*/

#ifndef WYSLIJ_H_
#define WYSLIJ_H_

#include <Arduino.h>

int k = 0;
void wyslij(void);


#endif /* WYSLIJ_H_ */

plik wyslij.c
Kod:
/*
* wyslij.c
*
*  Created on: 19 mar 2020
*      Author: Staszek
*/

#include "wyslij.h"

void wyslij(void){
      //wypisywanie zmiennej k w nowym wierszu.
      Serial.println(k);
      //inkrementujemy k
      Serial.println("  Obecny!");
      k++;
}

Kompilator zgłasza taki błąd:

Method 'println' could not be resolved wyslij.c /Nano_test line 12 Semantic Error

Pewnie chodzi o jakiś szczegół.
Proszę o podpowiedź.
Serial.begin wystąpił później niż Serial.println?
Czy cóś takiego?

Musisz poczytać o linkerze, kompilatorze i preprocesorze.
To nie gryzie i nie jest skomplikowane.
Może jeśli nie dodane dodaj #include <Arduino.h> w pliku h.
(19-03-2020, 22:53)Robson Kerman napisał(a): [ -> ]Serial.begin wystąpił później niż Serial.println?
Czy cóś takiego?

Musisz poczytać o linkerze, kompilatorze i preprocesorze.
To nie gryzie i nie jest skomplikowane.
Gdziekolwiek nie przeniose Serial.begin(); oprucz setup() kompilator sygnalizuje błąd Syntax error