• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wprowadzenie do API

Object Storage Arubacloud
0 głosów
1,234 wizyt
pytanie zadane 15 stycznia 2019 w C i C++ przez Artrix Początkujący (290 p.)

Czy mógłby mi ktoś pomóc w zadaniu?

Treść zadania: plik led_api.h, który znajdziesz w drugiej zakładce w edytorze, zawiera dwie funkcje, służące do włączania i wyłączania zasilania w układzie elektronicznym zapalającym diodę.
Wywołanie funkcji power_on()powoduje włączenie zasilania, wywołanie funkcji power_off()powoduje wyłączenie zasialania, zaś wywołanie funkcji power_delay(int time) powoduje wstrzymanie wykonania następnej operacji o liczbę milisekund przekazaną do funkcji przez parametr int time.
Uzupełnij funkcję void send_SOS()w taki sposób, aby za pomocą krótkich sygnałów włącz/wyłącz światło nadać komunikat SOS w alfabecie Morse'a.
Kod SOS w alfabecie Morse'a ma postać: " . . .  - - -  . . . " (3 kropki , 3 kreski, 3 kropki). W pliku led_api.h znajdziesz odpowiednie interwały czasowe odpowiadające kropce oraz kresce. Jeśli potrzebujesz więcej podpowiedzi skorzystaj z koła ratunkowego.
Pamiętaj, że aby użyć funkcji zawartych w bibliotece led_api.h musisz dołączyć jej zawartość do pliku źródłowego za pomocą dyrektywy preprocesora #include <led_api.h> 

Biblioteka led_api.h:


#ifndef LED_API
#define LED_API

// DELAY_DOT:   stała w [ms] definiująca krótki sygnał świetlny
//              odpowiadający "kropce" według alfabetu Morse'a
//      wartość: 30 [ms]
#define DELAY_DOT       30

// DELAY_DASH:  stała w [ms] definiująca długi sygnał świetlny
//              odpowiadający "kresce" według alfabetu Morse'a
//      wartość: 90 [ms]
#define DELAY_DASH      90

// DELAY_NEXT:  stała w [ms] definiująca odstęp między elementami znaku
//              według alfabetu Morse'a
//      wartość: 30 [ms]
#define DELAY_NEXT      30

// DELAY_SPACE: stała w [ms] definiująca odstęp między znakami
//              według alfabetu Morse'a
//      wartość: 150 [ms]
#define DELAY_SPACE     90

// power_on: Funkcja zapala diodę LED
// Argumenty:
//      brak
// return:
//      brak
void power_on(void);

// power_off: Funkcja gasi diodę LED
// Argumenty:
//      brak
// return:
//      brak
void power_off(void);

// power_delay: Funkcja opóźnia wywołanie kolejnych funkcji API o [n] milisekund
// Argumenty:
//      ms: ilość milisekund opóźnienia
// return:
//      void: funkcja nie zwraca rezultatu
void power_delay( int time );

#endif // LED_API

Konsola:

void send_SOS(void)
{
}

 

komentarz 16 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
edycja 16 stycznia 2019 przez DragonCoder
Cos mi tu nie pasuje: 1. Pelny kod pliku z implementacja funcji send_sos 2. Czym to kompilujesz 3. Czytalem w zadaniu o ukladzie, myslalem, ze to tylko opis od tak, ale jezeli pracujesz na jakims ukladzie, to jaki to jest 4. To ma byc w c, czy c++ Prosze o te informacje

Edit::

Wiecej bledow wynikalo z mojej glupoty, bo przy kopiowaniu zapomnialem usunac void jak slowo kluczowe i w nawiasach. Jak wroce do domu, to sprawdze ten kod na swoim arduino
komentarz 16 stycznia 2019 przez Artrix Początkujący (290 p.)
Pracuje na c++, a to wszystko rozwiązuje na takiej stronie - lnu, tam jest napisane zadanie a po prawej coś jest zapisane i mam albo to pozmieniać albo dopisać, nie odpowiem ci na to pytanie czym kompiluje, bo dopiero co zaczynam i dokładnie nie wiem.
komentarz 16 stycznia 2019 przez Artrix Początkujący (290 p.)

Dobra kolega mi pomógł, a to było rozwiązaniem:

#include <led_api.h>
void send_SOS (void)
{ power_on();
power_delay(DELAY_DOT);
power_off();
power_delay(DELAY_NEXT);
power_on();
power_delay(DELAY_DOT);
power_off(); 
power_delay(  DELAY_NEXT);
power_on();
power_delay( DELAY_DOT);
power_off();
power_delay   ( DELAY_SPACE);
power_on();
power_delay( DELAY_DASH);
power_off();
power_delay(DELAY_NEXT);
power_on();
power_delay( DELAY_DASH);
power_off();
power_delay(DELAY_NEXT);
power_on();
power_delay( DELAY_DASH);
power_off();
power_delay(DELAY_SPACE);
power_on();
power_delay(DELAY_DOT);
power_off();
power_delay(DELAY_NEXT);
power_on();
power_delay(DELAY_DOT);
power_off(); 
power_delay(  DELAY_NEXT);
power_on();
power_delay( DELAY_DOT);
power_off();

}

 

komentarz 16 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

Specjalnie dla pewnosci, sprawdzilem ten kod u siebie, przy uzyciu arduino, nie patrzac juz na przerwy czasowe miedzy kropka a kreska, tu jest kod i on dziala:

 

main.ino

#include "led_api.h"
#include <Wire.h>

void setup() { pinMode(8, OUTPUT); }

void send_SOS()
{
String sos = {"...---..."};
   for (int i = 0; i < 9; i++)
   {
      if ((sos[i]) != sos [i-1]) {
         power_delay(DELAY_SPACE);
      }
      if (sos[i] == '.') {
         power_on();
         power_delay( DELAY_DOT );
         power_off();
         power_delay(DELAY_DOT);
      }
      if (sos[i] == '-') {
         power_on();
         power_delay( DELAY_DASH );
         power_off();
         power_delay(DELAY_DOT);
      }
   }
}

void loop()
{
  send_SOS();
}

Przy czym moja funkcja jest bardziej uniwersalna, bo mozesz ja jako string poddac doslownie wszystko co chcesz

komentarz 16 stycznia 2019 przez Artrix Początkujący (290 p.)
Dzięki za pomoc, ale to co wysłałeś było źle, bo tam trzeba to napisać jak oni to chcą, a nie na różne sposoby, jedynym dobrym sposobem był ten mój.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 908 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez Artrix Początkujący (290 p.)
+1 głos
1 odpowiedź 88 wizyt
pytanie zadane 14 listopada 2023 w PHP przez kordix Gaduła (3,910 p.)
0 głosów
1 odpowiedź 71 wizyt

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...