Monthly Archives: Kwiecień 2016

#1 Projekt Arduino – Zapalanie i gaszenie diody led

Naukę warto zaczynać od najprostszych przykładów, stąd ten projekt. Pozytywne jest to, że do jego zrealizowania wystarczy samo Arduino Uno lub inne zgodne z Arduino, które posiada kilka diodę, którą możemy sterować, choć polecam dokupić kilka elementów, dzięki którym poznasz działanie wyjść cyfrowych.

Program sterujący diodą na płycie Arduino Uno

[csharp]int pin = 13; // (1)

void setup() // (2)
{
pinMode(pin, OUTPUT); // (3)
}

void loop() // (4)
{
digitalWrite(pin, LOW); // (5)
delay(1000); // (6)
digitalWrite(pin, HIGH); // (7)
delay(1000);
}[/csharp]

Wyjaśnienie działania kodu
(1) tworzę zmienną w której ustawiam numer portu, którym chce sterować. W tym wypadku jest to port numer 13, czyli dioda na płycie Arduino Uno.

(2) tutaj znajduje się funkcja w której będziemy ustawiać parametry, np. portów. Ta funkcja jest wykonywana tylko raz przy starcie programu.

(3) za pomocą tej funkcji określamy, że 13 port będzie obsługiwał operacje wyjścia, czyli będziemy mogli na nim ustawić albo stan wysoki (binarnie jedynka), albo stan niski (binarnie zero). Te stany są określane przez stan napięcia na tym porcie, jeżeli mamy na porcie napięcie 0V to mamy stan niski, jeżeli napięcie wynosi 5V jest to stan wysoki.

(4) loop jest funkcją, która wykonuje się cały czas, działa dokładnie jak while(true), operacje tam zdefiniowane są wykonywane jedna po drugiej

(5) dzięki funkcji digitalWrite możmy zdefiniować jaki stan będzie na wyjściu. Jeżeli ustawimy stan na LOW to żarówka nie zaświeci się, bo to oznacza, że na porcie pojawi się zerowe napięcie.

(6) funkcja delay obecna jest w wielu językach programowania i działa w nich niemalże tak samo, czyli zatrzymuje wykonywanie programu na określoną liczbę milisekund (1000 ms = 1 s).

(7) analogicznie jak w punkcie (5) określamy stan na porcie. Gdy ustawiamy stan na HIGH, na porcie pojawia się 5V, czyli napięcie zdolne do zasilenia diody.

Wgrywanie programu

Działanie programu

Sterowanie świeceniem diody podłączonej do wyjścia cyfrowego
To już jest trochę trudniejsze zadanie, ponieważ wymaga lutowania elementów lub zakupienia płytki prototypowej dzięki której można to znacznie łatwiej połączyć, oraz diody (ja korzystam z takiej diody) i rezystora (w moim przypadku 220Ω).

Podstawy teoretyczne
Stan wysoki na wyjściu cyfrowym w Arduino Uno to 5V, czyli zdecydowanie za dużo na to, żeby podłączyć diody, które używam (Napięcie pracy: 1.8-2.5V). Dlatego należy pomiędzy źródłem zasilania (wyjście cyfrowe) a diodą umieścić rezystor (opornik), który obniży napięcie do odpowiedniej wartości. Według tego kalkulatora potrzebuję rezystora 220Ω, który zostanie przylutowany do jednej z nóżek czerwonej diody. Wartości, które ustawiłem w kalkulatorze odczytałem ze specyfikacji diody:

kalkulator rezystancji

 

dioda zlutowana z rezystorem

dioda zlutowana z rezystorem

Dioda podłączona do Arduino

Dioda podłączona do Arduino

Program sterujący diodą przez wyjście cyfrowe
Jedyną różnica w programie w porównaniu do poprzedniego jest zmiana portu z 13 na 2 (1). Cała reszta pozostaje bez zmian. Dlaczego 2 port? Ponieważ jak się przyjrzycie na zdjęciu do tego portu podłączyłem jedną z nóżek diody.

[csharp]int pin = 2; // (1)

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

void loop()
{
digitalWrite(pin, LOW);
delay(1000);
digitalWrite(pin, HIGH);
delay(1000);
}[/csharp]

UWAGA
Jeżeli dioda po podłączeniu do odpowiedniego portu nie świeci się, to znaczy, że została podłączona złą nóżką do napięcia. Przez diodę napięcie może podążać tylko w jedną stronę, dlatego należy na to bardzo uważać.

Działanie programu

PS.
Nie jestem elektronikiem, ani elektrykiem, więc wykonane połączenia między diodą a rezystorem w moim wykonaniu są okropne, ale wierzę że mi wybaczycie 🙂

Co to jest Arduino i jak rozpocząć przygodę z mikrokontrolerami?

Arduino jest platformą programistyczną dla systemów wbudowanych, dzięki której niewielkim nakładem pracy i umiejętności można zmusić urządzenie elektroniczne do działania według oczekiwań użytkownika. Programowanie zwykle jest kojarzone z komputerami, czy też telefonami komórkowymi, jednak od kilku lat jest coraz większe zainteresowanie tematem Internet of Things oraz systemami wbudowanymi, dlatego urządzenia pokroju Raspberry Pi czy też zgodne z Arduino zyskują popularność. Przede wszystkim popularność takich urządzeń wzrosła ze względu na ich niską cenę, ale również dlatego, że prosto się na nie pisze programy (w przypadku Arduino – język zbliżony do C++).

Arduino i moduły bluetooth

Arduino i moduły bluetooth

Dwa lata temu pisałem o tym jak za pomocą Raspberry Pi i modułu przekaźnikowego można sterować oświetleniem w domu, tym razem zaproponuje Wam całą serię projektów z Arduino dzięki którym mam nadzieję, zachęcę Was do eksperymentowania z nim i tworzenia swoich własnych niesamowitych urządzeń.

Co potrzebuję aby rozpocząć przygodę z Arduino?
Ja używam klona Arduino Uno R3 z ATMEGA328P, który jest bardzo tani, a dotychczas nie zdarzyło mi się, żeby jego możliwości były dla mnie niewystarczające.

Arduino Uno

Arduino Uno

Do zaprogramowania płytki z Arduino potrzebujemy oprogramowanie, które można pobrać ze strony producenta.

Zaopatrzyłem się również w moduł przekaźnikowy (taki sam jak w przypadku artykułu o Raspberry Pi), ponieważ dzięki niemu będę mógł sterować dopływem prądu aż do 8 urządzeń (można kupić mniejszy moduł, ale uważam, że w tym wypadku warto mieć zapas na wypadek bardziej wymagających projektów).

Moduł przekaźnikowy

Moduł przekaźnikowy

Nie można zapomnieć również o przewodach, którymi będziemy łączyli kolejne podzespoły do Arduino Uno. Ja wybrałem zestaw takich kabli, które z jednej strony mają wtyczkę męską a z drugiej żeńską, ponieważ dzięki takim przewodom podłączymy do Arduino większość modułów dostępnych na rynku.

To w sumie wystarczy, żeby zacząć przygodę z Arduino, ale nadal nie mamy możliwości sterować urządzeniem w inny sposób niż za pomocą kabla i konsoli szeregowej. Więc warto dokupić jakieś przyciski, może moduł komunikacyjny Bluetooth albo np. czujnik światła.

Moduł Bluetooth LE

Moduł Bluetooth LE

Projekty, które zostaną zrealizowane w ramach serii artykułów o Arduino:

Już niedługo pierwsze projekty, tymczasem czekam na propozycję projektów z wykorzystaniem Arduino, które chcielibyście, żeby pojawiły się na Poradniku Informatyka!

Sprawdzanie wolnych dni od pracy C#

Niemalże we wszystkich programach zarządzających pracownikami niezbędny jest algorytm sprawdzania czy w danym dniu jest dzień wolny, a co za tym idzie, można bardzo prosto wyliczyć ile dni pracujących było w określonym przedziale czasowym. Przydaje się to np. w trakcie wyliczania ilości pozostałego urlopu, ponieważ do urlopu nie wliczają się soboty, niedziele i święta.

Korzystając z zasobów internetu znalazłem i usprawniłem algorytm przeliczający święta aktualny dla daty publikacji tego artykułu (oczywiście po wprowadzeniu lub likwidacji jakiegoś święta w późniejszym terminie stanie się nieaktualny). Algorytm działa w przedziale od 1900 roku do aktualnej daty (o ile od 2016 nie zmieniono jakiegoś święta).

Funkcja IsDayOff zwraca true w przypadku, gdy podany dzień jest dniem wolnym, a false gdy nie jest wolny.

Funkcja GetNearestPreviousWorkDay zwraca najbliższy poprzedni dzień, który nie jest wolny od pracy.

Funkcja GetNearestNextWorkDay w przeciwieństwie do powyższej zwraca następny dzień, który nie jest wolny od pracy.

[csharp]
public static class DayOffCalculator
{
public static bool IsDayOff(DateTime date)
{
if (date.DayOfWeek == DayOfWeek.Saturday) return true;
if (date.DayOfWeek == DayOfWeek.Sunday) return true;
if (date.Month == 01 && date.Day == 01) return true; // Nowy Rok
if (date.Month == 01 && date.Day == 01 && (date.Year >= 1952 && date.Year <= 1960)) return true; // Trzech Króli if (date.Month == 05 && date.Day == 01) return true; // 1 maja if (date.Month == 05 && date.Day == 03 && (date.Year >= 1918 && date.Year <= 1950 || date.Year >= 1990)) return true; // 3 maja
if (date.Month == 07 && date.Day == 22 && (date.Year >= 1945 && date.Year <= 1989)) return true; // Narodowe Święto Odrodzenia Polski
if (date.Month == 08 && date.Day == 15 && (date.Year <= 1960 || date.Year >= 1989)) return true; // Wniebowzięcie Najświętszej Marii Panny, Święto Wojska Polskiego (rocznica “cudu nad Wisłą”)
if (date.Month == 11 && date.Day == 01) return true; // Dzień Wszystkich Świętych
if (date.Month == 11 && date.Day == 11 && (date.Year == 1937 || date.Year == 1938 || date.Year >= 1990)) return true; // Dzień Niepodległości
if (date.Month == 12 && date.Day == 25) return true; // Boże Narodzenie
if (date.Month == 12 && date.Day == 26) return true; // Boże Narodzenie
int a = date.Year % 19;
int b = date.Year % 4;
int c = date.Year % 7;
int d = (a * 19 + 24) % 30;
int e = (2 * b + 4 * c + 6 * d + 5) % 7;
if (d == 29 && e == 6) d -= 7;
if (d == 28 && e == 6 && a > 10) d -= 7;
DateTime Easter = new DateTime(date.Year, 3, 22).AddDays(d + e);
if (date.AddDays(-1) == Easter) return true; // Wielkanoc (poniedziałek)
if (date.AddDays(-60) == Easter) return true; // Boże Ciało
return false;
}

public static DateTime GetNearestPreviousWorkDay(DateTime changeDate)
{
for (int i = 0; i < 14; i++)
{
if (DayOffCalculator.IsDayOff(changeDate))
{
changeDate = changeDate.AddDays(-1);
}
else
{
break;
}
}
return changeDate;
}

public static DateTime GetNearestNextWorkDay(DateTime changeDate)
{
for (int i = 0; i < 14; i++)
{
if (DayOffCalculator.IsDayOff(changeDate))
{
changeDate = changeDate.AddDays(1);
}
else
{
break;
}
}
return changeDate;
}
}
[/csharp]

Kod jest na tyle prosty, że w bardzo łatwy sposób można go przenieść na język C++ lub Javę zmieniając bardzo niewiele parametrów. Czekam na komentarze, jeśli jeżeli o jakimś święcie zapomniałem i nie ująłem w kodzie.

Plague Inc. nietypowa gra strategiczna, która mnie wciągnęła

Uwielbiam gry strategiczne i gram w nie rzadziej niż bym w rzeczywistości chciał. Wynika to z tego, że większość dobrych strategii jest na PC, a zwykle jak siadam do komputera, to okazuje się, że jest dużo rzeczy do zrobienia i odpuszczam sobie granie. Jednak bardzo często mi się zdarza jechać komunikacją miejską lub pociągiem i jedyne co sensownego w tym czasie mogę zrobić to albo poczytać książkę, albo grać na komórce. Z tego też wynikło moje poszukiwanie dobrej gry strategicznej na Androida i muszę przyznać, że w końcu ją znalazłem.

Plague (1)

Plague Inc. jest grą strategiczną na platformy mobilne, w której twoim zadaniem jest kierować wirusem, bakterią, itp. tak żeby zarazić i zgładzić całą ludzkość. Każdy typ zarazy ma swoje nietypowe rodzaje mutacji, które mogą zwiększyć ryzyko infekcji, dotkliwość objawów lub śmiertelność. Aby ewoluować zarazę należy uzbierać odpowiednią ilość punktów DNA, których używa się jak waluty i kupuje określone cechy zarazy. Jednak wygrana nie jest taka prosta, ponieważ cały czas po piętach depczą nam naukowcy. Szukają oni leku na zarazę, a my możemy im przeszkadzać kupując odpowiednie modyfikacje DNA, które dają trochę czasu lub po prostu poprzez ich zabicie tą właśnie zarazą. Jednak należy pamiętać, że im mniej żywych nosicieli, tym mniejsza możliwość zarażania, więc trzeba tutaj na prawdę trochę po myśleć, żeby znaleźć złoty środek.

Plague (2)

Gra jest bardzo dobrze zbalansowana, dlatego w zasadzie od samego początku rozgrywki na najniższych poziomach trudności rozrywka jest zaskakująco wciągająca i nie nudzi. Z każdym następnym wytępieniem ludzkości dostajemy dostęp do kolejnych typów zarazy, co dodatkowo zachęca do dalszej rozgrywki. Dodatkowo utrudnieniem jest to, że każda zaraza ma swoje cechy szczególne, np. grzyby mają niską zaraźliwość przez co, na prawdę trudno ukończyć grę zabijając całą populację ludzi.

Plague (3)

Nie ma co ukrywać, że jest to gra free2play, więc musimy się spodziewać dużej ilości reklam i dość agresywnego zachęcania do kupna wersji premium. Pomimo to, nadal gram za darmo i nie mam z tym problemu, ponieważ jest dobrze wyważona a bez kupna premium nadal można w nią grać i nie stracić nic z rozrywki.

Plague (4)

Dotychczas grałem na komórce w jakieś 10 różnych strategii, na które poświęcałem średnio po kilka godzin gry i dopiero ta gra mnie usatysfakcjonowała i prawdopodobnie będę w nią grał jeszcze długo. Polecam każdemu.

Wersja dla systemu Android

Telefon z Androidem chodzi wolno? Mam na to sposób!

Wolne działanie systemu Android zwykle wynika z braku pamięci podręcznej, braku miejsca na dysku i dużej ilości działających aplikacji w tle, które z powodu ich złego zaprojektowania nie potrafią zakończyć swojego działania i ciągle wykorzystują zasoby komórki.

Rozwiązaniem tego problemu jest instalacja dodatkowej aplikacji, której zadaniem będzie oczyścić system i wyłączać zbędne usługi działające w tle. Taki zestaw funkcji oraz wiele więcej oferuje nam aplikacja o nazwie KingRoot. Jednak do swojego poprawnego działania wymaga zrootowania telefonu, czyli udostępnienia możliwości wykonywania pewnych operacji w systemie Android z uprawnieniami administratora (root). Kiedyś takie działanie mogło prowadzić do ograniczenia ochrony urządzenia przed zagrożeniami, lecz ten problem już dawno został rozwiązany właśnie za pomocą aplikacji KingRoot i jej podobnych.

  1. Pierwszym krokiem jest rootowanie telefonu, które opisałem w tym wpisie.
  2. Po uruchomieniu ponownym urządzenia telefon powinien mieć już roota, a dodatkowo zainstalowane będą takie aplikacje jak: KingRoot, One Cleaner, One Locker i Purify.
  3. Uruchamiamy aplikację KingRoot.
    KingRoot
  4. Po chwili widzimy wyliczony indeks systemu, czyli nota na jaką został oceniony system, gdy są jakieś problemy to klikamy na przycisk Continue, który przeniesie nas do rozwiązania problemu.
  5. Następnie warto kliknąć w przycisk Auto-start, w którym możemy wybrać, które aplikacje będą mogły się włączać, np. podczas startu systemu.
    Autostart
  6. Warto wyłączyć możliwość auto-startu dla nieużywanych aplikacji, ponieważ z pewnością przyspieszy to działanie urządzenia.
  7. Wracamy do głównego menu KingRoot i klikamy na Purify.
    Purify
  8. Tutaj widzimy procentową ocenę czystości urządzenia, gdy jest ona mniejsza niż 100% warto kliknąć w przycisk Boost, a aplikacja odtąd będzie regularnie oczyszczać system z niepotrzebnych usług działających w tle.
  9. Następnie przechodzimy do aplikacji OneCleaner, w której możemy oczyścić system ze zbędnych plików. Dzięki niej usuniemy zbędne pliki z urządzenia, oczyścimy pamięć RAM, czy usuniemy aplikacje preinstalowane na urządzeniu przez operatora. Nie będę opisywał jak należy wykonać czyszczenie urządzenia, ponieważ każdy musi wybrać pliki do usunięcia we własnym zakresie, a nie chcę sugerować złych wyborów.
    OneCleaner

Po wykonaniu tych działań telefon stanie się zauważalnie szybszy. Możecie mi wierzyć, ponieważ nikt mi za ten wpis nie zapłacił, a i tak recenzja jest bardzo pozytywna 😉