• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Podprogram
#1
Witam, mam pytanie a mianowicie:

Jak w void loop jeżeli zostanie spełniony warunek if wywołać inną funkcję znajdującą się poza void loop?

Chcę żeby pasek led świecił cały czas na np. zielony a w momencie spełnienia warunku np. naciśnięcie przycisku uruchomiła się funkcja z poza loop w której jest jakaś sekwencja migania, po ukończeniu sekwencji migania wracamy do świecenia na zielono.
 
Odpowiedź
#2
Funkcję piszesz tak:
Jeśli nie zwraca i nie pobiera żadnej wartości to,
void nazwa_funkcji(void){
ciało funkcji
}
wywołujesz ją sobie:
nazwa_funkcji();
Jak chcesz znać inne przypadki to pisz, a ja postaram się napisać coś później.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
(18-01-2018, 15:56)Robson Kerman napisał(a): Funkcję piszesz tak:
Jeśli nie zwraca i nie pobiera żadnej wartości to,
void nazwa_funkcji(void){
ciało funkcji
}
wywołujesz ją sobie:
nazwa_funkcji();
Jak chcesz znać inne przypadki to pisz, a ja postaram się napisać coś później.

Dzięki za szybką reakcję.

Chodzi mi o coś takiego:

Kod:
int diodaPin = 13;  // to już jest dla nas jasne :)
int czujnik = 6; //wejście przycisku
int stan;
 
void setup() {
  pinMode(diodaPin, OUTPUT);
  pinMode(czujnik, INPUT);
  digitalWrite(diodaPin, LOW);
}
 
void loop()
{  
  stan = digitalRead(czujnik);     // odczytujemy pin6 i zapisujemy w zmiennej stan

    if (stan==HIGH);
    {
      digitalWrite(diodaPin, HIGH);   // zaświeć diodę na pinie 13
    }  
 
    if (stan==LOW);
    {
      wylacz();                     // wywołaj funkcję wyłączenia
    }
}

void wylacz();
{
  digitalWrite(diodaPin, LOW);
}
Wywala błąd że wylacz nie był zdeklarowany
 
Odpowiedź
#4
Witaj,

Niepotrzebnie dałeś średnik w tym miejscu:

Kod:
void wylacz(); <- tutaj

Spróbuj tak:

Kod:
void wylacz()

Pozdrawiam
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
#5
No przecież napisałem, jak piszemy funkcję.
void funkcja(void){
ciało funkcji;
}
A ty piszesz
void funkcja();
{
ciało funkcji;
}

Dzięki CEO za szybką reakcję.
Średnik w kompilatorze K&R C, ANSI C, C99, C++, oznacza koniec instrukcji.
Ogólna zasada tworzenia funkcji:

[klasa_pamieci] [typ] nazwa([lista_parametrów])
{
instrukcje;
[return wartość;]
}
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#6
(18-01-2018, 16:59)Robson Kerman napisał(a): No przecież napisałem, jak piszemy funkcję.
void funkcja(void){
ciało funkcji;
}
A ty piszesz
void funkcja();
{
ciało funkcji;
}

Dzięki CEO za szybką reakcję.
Średnik w kompilatorze K&R C, ANSI C, C99, C++, oznacza koniec instrukcji.
Ogólna zasada tworzenia funkcji:

[klasa_pamieci] [typ] nazwa([lista_parametrów])
{
 instrukcje;
 [return wartość;]
}
Dzięki Panowie za rozjaśnienie mojego zaciemnienia Smile faktycznie rozpędziłem się z tymi średnikami
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości