wtorek, 25 lipca 2023

Czy jestem pełnoletni?

Zamówiłem piwo bezalkoholowe(!) z Liska. Dostawca chciał zobaczyć mój dowód żeby sprawdzić czy mam 18 lat. A jakieś dwa miesiące temu taksówkarz zapytał mnie kiedy idę na emeryturę.

sobota, 15 lipca 2023

Panel do gry SimRail (aktualizacja: 20.02.2025)

Od kilku miesięcy gram w polski symulator kolejowy SimRail. Niedawno na forum gry trafiłem na post pokazujący panel sterowniczy zrobione przez jednego z użytkowników. Natchnął mnie on do zrobienia podobnego. Postanowiłem zastosować Arduino Due - ma ono dwie wady - cenę i wielkość, ale ma też kilka zalet:

  • ma dużo wyprowadzeń, a przycisków do obsługi jest stosunkowo dużo
  • może emulować klawiaturę bez wgrywania dodatkowych zewnętrznych plików
  • oprogramowanie jest bardzo proste
  • elektryczne połączenia również są bardzo proste

Powoli dodaję kolejne przyciski, więc przyjemność gry z nowym panelem wciąż wzrasta.

Sprzęt:

Kod programu:

#include <Keyboard.h>
int i = 0;
int j = 0;
int stanKlawisza[54] = {};

void setup() {
 for (int i = 2; i < 55; i++) {
  if (stanKlawisza[i] == NULL) {
   stanKlawisza[i] = HIGH;
  }
  pinMode(i, INPUT_PULLUP);
 }
 Keyboard.begin();
 pinMode(49, OUTPUT);
}

// https://www.arduino.cc/reference/en/language/functions/usb/keyboard/keyboardmodifiers/
void loop() {

 i = 23; // otwarcie drzwi lewych
 j = 31; // otwarcie drzwi prawych
 if (digitalRead(i) == LOW || digitalRead(j) == LOW) {

  Keyboard.press('g');
  delay(250);
  Keyboard.release('g');

  digitalWrite(49, HIGH); // zaświecenie kontrolki
 }
 i = 47; // zamknięcie drzwi
 if (digitalRead(i) == LOW) {
  digitalWrite(49, LOW); // wygaszenie kontrolki

  Keyboard.press(178);
  delay(1000);
  Keyboard.release(178);

  Keyboard.press('o');
  delay(50);
  Keyboard.release('o');

  Keyboard.press('k');
  delay(50);
  Keyboard.release('k');

  stanKlawisza[i] = HIGH;
 }

 klawisz(2, '=');
 klawisz(3, '1');

 klawisz(9, 179);  // Tab
 //klawisz(9, 178); // BACKSPACE
 klawisz(22, '-');
 klawisz(37, '\\');
 
 klawisz(28, 220); // NUM /
 klawisz(52, 218); // UP ARROW
 klawisz(29, 217); // DOWN ARROW
 klawisz(36, 221); // NUM *
 klawisz(44, 235); // NUM .
 klawisz(51, 226); // NUM 2
 klawisz(30, 230); // NUM 6
 klawisz(43, 232); // NUM 8
 
 klawisz(39, 'h');
 klawisz(23, 'i');
 klawisz(53, 'j');
 //klawisz(47, 'o');
 klawisz(31, 'p');
 klawisz(46, 'z');

 klawisz(27, 'A');
 klawisz(35, 'C');

 i = 45; // radio
 if (digitalRead(i) == LOW && stanKlawisza[i] == LOW) {
  // nadawanie
  Keyboard.press('`');
  delay(50);
 } else if (digitalRead(i) == LOW && stanKlawisza[i] == HIGH) {
  // poczatek nadawania
  Keyboard.press(128);
  delay(50);
  Keyboard.press('M');
  delay(50);
  Keyboard.release('M');
  delay(50);
  Keyboard.release(128);
  delay(50);
  Keyboard.press('`');
  delay(50);
  stanKlawisza[i] = LOW;
 } else if (digitalRead(i) == HIGH && stanKlawisza[i] == LOW) {
  // koniec nadawania
  Keyboard.release('`');
  delay(50);
  Keyboard.press(128);
  delay(50);
  Keyboard.press('M');
  delay(50);
  Keyboard.release('M');
  delay(50);
  Keyboard.release(128);
  delay(50);
  stanKlawisza[i] = HIGH;
 }

 /*
 i = 45; // hamulec - nastawnik czy nastawnik - hamulec
 if ((digitalRead(i) == LOW && stanKlawisza[i] == HIGH) || (digitalRead(i) == HIGH && stanKlawisza[i] == LOW)) {
  klawisz(4, 227); // NUM 3
  klawisz(5, 233); // NUM 9
  klawisz(7, 222); // NUM -
  klawisz(8, 223); // NUM +
  stanKlawisza[i] = LOW;
 }
 else if ((digitalRead(i) == LOW && stanKlawisza[i] == LOW) || (stanKlawisza[i] == HIGH)) {
*/
 klawisz(4, 222); // NUM -
 klawisz(5, 223); // NUM +
 klawisz(7, 227); // NUM 3
 klawisz(8, 233); // NUM 9
/*
  stanKlawisza[i] = HIGH;
 }
*/

 i = 38; // wesołe Pendolino
 if (digitalRead(i) == LOW && stanKlawisza[i] == HIGH) {
  Keyboard.press('h');
  delay(750);
  Keyboard.release('h');
  delay(250);
  Keyboard.press('j');
  delay(600);
  Keyboard.release('j');
  delay(300);
  Keyboard.press('h');
  delay(250);
  Keyboard.release('h');
  stanKlawisza[i] = HIGH;
 }
}


void klawisz(int i, int l) {
 if (digitalRead(i) == LOW && stanKlawisza[i] == HIGH) {
  Keyboard.press(l);
  delay(50);
  stanKlawisza[i] = LOW;
 }
 if (digitalRead(i) == HIGH && stanKlawisza[i] == LOW) {
  Keyboard.release(l);
  delay(50);
  stanKlawisza[i] = HIGH;
 }
}

czwartek, 23 marca 2023

Moneta z Ogniem

Na Facebooku trafiłem na ofertę sprzedaży monety z Józefem Kurasiem "Ogniem". Sportretowana osoba została opisana dwoma zdaniami, drugie mówiło skąd wziął się jej pseudonim, a pierwsze było następujące: "Kuraś był żołnierzem Armii Krajowej. Żył w latach 1915-1947.". I tyle.

Zostawiłem następujący komentarz:

Powiedzieć, ze Kuraś był w AK to nic nie powiedzieć. Rzeczywiście w '43 r. wstąpił do AK, ale jeszcze w tym samym roku został skazany na karę śmierci za samowolne opuszczenie obozu co spowodowało śmierć dwóch partyzantów. Wyrok co prawda unieważniono w kolejnym roku, ale Kuraś był już wtedy w AL gdzie prowadził działania propagandowe przeciwko AK. W '45 r. pomógł Armii Czerwonej przejść przez góry i podporządkował swój oddział Rosjanom. Na ich polecenie zaczął tworzyć struktury Milicji. W marcu został szefem Urzędu Bezpieczeństwa Publicznego w Nowym Targu. Ale już w kwietniu zdezerterował i przeszedł do podziemia gdzie działał na własną rękę mordując Polaków, Słowaków i Żydów z powodów zarówno politycznych jak i rabunkowych.

Wiki: W 1990 nowotarski oddział Światowego Związku Żołnierzy Armii Krajowej wydał oświadczenie w którym czytamy: Nie mamy nic wspólnego z „Ogniem” i jego pogrobowcami. Uważamy, że zamiast uczestniczyć w uroczystościach ku czci „Ognia” należałoby odprawić żałobne nabożeństwo w intencji jego ofiar, a jest ich 430.

piątek, 10 lutego 2023

Podwyższenie dopuszczalnej prędkości na obszarze zabudowanym nie dla wszystkich



Podwyższenie dopuszczalnej prędkości na obszarze zabudowanym nie dotyczy wszystkich pojazdów, a dokładniej mogą z niego skorzystać tylko niektóre.

Rozporządzenie Ministrów Infrastruktury oraz Spraw Wewnętrznych i Administracji z dnia 31 lipca 2002 r. w sprawie znaków i sygnałów drogowych:

§ 27. 3. Znak B-33, określający dopuszczalną prędkość większą niż 50 km/h, umieszczony na obszarze zabudowanym, dotyczy samochodu osobowego, motocykla i samochodu ciężarowego o dopuszczalnej masie całkowitej nieprzekraczającej 3,5 t, z wyjątkiem:

1) pojazdu przewożącego towary niebezpieczne;

2) pojazdu z urządzeniem wystającym do przodu więcej niż 1,5 m od siedzenia kierującego, o którym mowa w art. 20 ust. 6 pkt 2 ustawy;

3) pojazdu holującego pojazd silnikowy, o którym mowa w art. 31 ust. 1 pkt 1 ustawy;

4) motocykla, którym przewozi się dziecko w wieku do lat 7, o którym mowa w art. 20 ust. 6 pkt 3 ustawy;

5) samochodu ciężarowego przewożącego osoby poza kabiną kierowcy, o którym mowa w art. 63 ust. 2 pkt 4 ustawy.

środa, 25 stycznia 2023

Z jakich krajów kupować monety - krótki poradnik

  • aluminiowe - z Albanii
  • srebrne - z Argentyny
  • złote - z Australii
  • miedziane - z Kuby
  • niklowe - z Nikaragui
  • platynowe - z Portugalii

Aktualizacja 6.03.2023:
Jaka wtopa. Argentyna to Ar, a nie Ag, które należy do Antigua i Barbuda