Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sprytne porady i sztuczki cyklu Ekscytacje Maxa dotyczące kodowania (11)

Article Image
Nieżyjący już Stephen Hawkins napisał niesamowitą książkę zatytułowaną God Created the Integers: The Mathematical Breakthroughs That Changed History. Leży na półce w moim biurze. Pewnego dnia zamierzam ją przeczytać.
Powodem, dla którego ta książka przyszła mi do głowy, jest to, że wiele rzeczy w programowaniu C/C++ w ogóle, a programowanie dla Arduino w szczególności, to na najbardziej podstawowym poziomie liczby całkowite w takiej czy innej formie.
 

Wielka prawda, czy mały fałsz?

 
Rozważmy na przykład poziomy pinów LOW i HIGH. Jeśli zdefiniowaliśmy pin jako wyjście cyfrowe, możemy przypisać mu wartość LOW lub HIGH w następujący sposób:
 
digitalWrite(PinA, LOW);
digitalWrite(PinB, HIGH);
 
W świecie rzeczywistym, zakładając Arduino Uno, pojawią się one na pinie jako wartości odpowiednio 0 V i 5 V. Ale czy wiesz, że możemy osiągnąć dokładnie ten sam efekt używając 0 i 1? Na przykład:
 
digitalWrite(PinA, 0);
digitalWrite(PinB, 1);
 
Jak to możliwe? Cóż, gdyby powiedzieć prawdę, za kulisami („Nie zwracaj uwagi na tego człowieka za kurtyną”), twórcy Arduino, zaimplementowali coś w rodzaju instrukcji #define, aby zrównać słowa kluczowe LOW z 0 i HIGH z 1.
 
Znajomość tej ciekawostki otwiera drzwi do wielu rzeczy, gdy się nad tym zastanowimy. Na przykład, rozważmy następujący fragment kodu:
 
int tmpValue;


tmpValue = digitalRead(PinA);


if (tmpValue == HIGH)
{
// Zrób kilka rzeczy
}
 
Teraz wiemy, że możemy zastąpić HIGH liczbą 1 lub wynikiem wyrażenia całkowitoliczbowego, lub wartością całkowitą zwracaną przez funkcję, lub... lista jest długa.
 

Wszyscy mamy swoje prawdy

 
Jak słynnie mówi (lub śpiewa) Poncjusz Piłat w operze rockowej Jesus Christ Superstar z 1970 roku, z muzyką Andrew Lloyda Webbera i tekstami Tima Rice’a: „Ale czym jest prawda? Czy prawda jest niezmiennym prawem?
Oboje mamy prawdy – czy moja jest taka sama jak twoja?”. Wiem, co ma na myśli i za chwilę ty też będziesz wiedział.
 
W latach pięćdziesiątych XIX wieku angielski matematyk, filozof i logik George Boole (1815–1864), będący w dużej mierze samoukiem, opracował dział matematyki, który obecnie nazywamy algebrą Boole’a. Zamiarem Boole’a było wykorzystanie technik matematycznych do reprezentowania i testowania argumentów logicznych i filozoficznych. Niestety, znaczenie jego pracy nie zostało w pełni docenione aż do późnych lat trzydziestych XX wieku, kiedy to absolwent MIT, Claude Shannon, zrewolucjonizował elektronikę, przedstawiając pracę magisterską pokazującą, w jaki sposób algebra Boole’a oferuje idealny sposób reprezentowania logicznego działania systemów cyfrowych.
 
W przypadku Arduino mamy typ danych o nazwie bool (lub boolean). Zmiennym zadeklarowanym przy użyciu tego typu można przypisać wartości false lub true. Załóżmy, że zadeklarujemy zmienną typu boolean o nazwie tmpBool i przypiszemy jej wartość true lub false. Później możemy wykonać kilka testów, takich jak:
 
if (tmpBool == true)
{
// Zrób kilka rzeczy
}


if (tmpBool == false)
{
// Zrób kilka rzeczy
}
Aby przeczytać ten artykuł kup e-wydanie
Kup teraz
Firma:
Tematyka materiału: PROGRAMOWANIE ARDUINO, C/C++
AUTOR
Źródło
Elektronika dla Wszystkich wrzesień 2024
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Czujniki temperatury
1/10 Temperatura to
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
W tym numerze znajdziesz źródłową wersję artykułu publikowanego obok
Elektronika dla Wszystkich
wrzesień 2024
Elektronika dla Wszystkich
Przejrzyj i kup
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"