XHTML Strict i linki w nowej karcie za pomocą jquery

$('A[rel="external"]')
.click( function() {
window.open( $(this).attr('href') );
return false;
});</pre>
Open External Links In New Window
Oznaczenie zewnętrznych linków za pomocą css: <pre>a[target="_blank"] { padding-right: 18px; display: inline-block; line-height: 14px; background: url(new_window.png) center right no-repeat; }

Obrazek:
http://www.tarnaski.eu/blog/wp-content/themes/minyx2Lite/pix/new_window.png
http://www.tarnaski.eu/blog/znowu-lubimy-target_blank/

„Znajdź różnice” – implementacja gry na stronie www z javascript

znajdz_roznice

Przygotowałem kod javascript, z użyciem Jquery i Canvas, do wykonania gry „znajdź różnice” na dwóch obrazkach. Skrypt cechuje łatwość użycia z własnymi grafikami. Potrzeba jedynie przygotować 2 obrazki różniące się od siebie szczegółami (ważne: wymiary obu muszą być identyczne). W skrypcie konfigurujemy wszystkie opcje, w tym najważniejszą: tablicę punktów ze szczegółami do odkrycia (współrzędne X i Y liczone od lewego górnego rogu obrazka w pikselach). Ścieżki do obrazków definiujemy w kodzie CSS.

Całość umieściłem na portalu Github: https://github.com/virtmedia/spot_the_difference_html

Demo: http://test.vt0.pl/roznice/

Zapraszam do korzystania i dzielenia się uwagami.

Crash chrome po uruchomieniu – rozwiązanie

Z problemem spotkałem się na komputerach z zainstalowanym systemem Windows Vista.

Jeżeli przeglądarka Chrome wywala się od razu po włączeniu, a typowe metody (kasowanie profilu, reinstalacja przeglądarki) nie pomagają, proponuję sprawdzić 2 rzeczy:

-Skan systemu programem Malwarebytes;

-Odinstalowanie lub aktualizację programu Cyberlink YouCam.

Moduł Wifi ESP8266 – jak zacząć, niespodzianki

Zakupiłem ostatnio taki moduł Wifi:

esp8266

Link: http://www.ebay.com/itm/371152025256?_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Cena jednego to US $3.15

Jest to chyba najtańsza opcja wyposażenia naszych układów elektronicznych w komunikację poprzez Wifi. Domyślnie komunikacja przebiega poprzez port USART (3,3V) z wykorystaniem komend AT, ale sam układ ESP8266 pozwala się programować, dając nam możliwość wyeliminowania dodatkowego mikrokontrolera z wielu zadań.

Podłączenie.

Moduł posiada 2 rzędy po 4 piny. Nie jest więc przyjazny w podłączaniu do płytek stykowych. Tak więc można go podpiąć na kabelkach, lub z użyciem prostego adaptera, który można wykonać z kawałka płytki uniwersalnej (4×4 pady, bez połączeń), goldpinów i gniazd do nich:

OLYMPUS DIGITAL CAMERA

Oznaczenia pinów:

esp8266-pinout

Pin CH_PD należy podpiąć do VCC, a VCC do 3,3V. Pin RxD podpinamy do TxD, a pin TxD do RxD przejściówki UART. Ważne, aby nasza przejściówka pracowała na napięciu 3,3V, a nie 5V! Można to sprawdzić mierząc napięcie na linii TxD przejściówki w stanie spoczynku. Jeżeli nasz konwerter lub inny układ pracuje przy 5V TTL, to należy użyć takiego dzielnika z 2 rezystorów:

esp8266_divider

Komunikacja

Testy proponuję rozpocząć z użyciem komputera i Serial Monitora dołączonego do Arduino IDE. Jeżeli chcesz, możesz użyć innego, ale przydałoby się, aby posiadał takie funkcjonalności:

-Możliwość „wklepania” ciągu znaków „na sucho” przed wysłaniem,

-Możliwość zdefiniowania znaku końca linii

Parametry transmisji:

-8 bit, 1 bit stopu, brak bitu parzystości

Jaki baudrate? Tutaj sprawa jest ciekawa. W wielu opisach znajdziecie 57600, a czasami 115200. Jednak z modułami, które zamówiłem to nie działało. Dlatego trzeba sprawdzić doświadczalnie z baudrate 9600, 57600 i 115200. U mnie była to ta pierwsza wartość. Był to powód dużej frustracji. Jeżeli prawidłowo ustawimy parametry transmisji, po podpięciu modułu do zasilania powinien wysłać ciąg „śmieci”, z napisem „ready” na końcu. Jeżeli jest OK, możemy wysłać do niego pierwszą komendę AT:

AT+GMR

Wysłanie komendy musi zakończyć się znakami \n\r (NL+CR)!

Jeżeli wszystko jest OK, powinniśmy dostać w odpowiedzi wersję firmware, na której pracuje nasz moduł.

Atmel Studio – wgrywanie programu do Atxmega256A3BU poprzez Flip

źródło: http://www.avrfreaks.net/forum/atmel-studio-61-evk1100-dfu-usb-programming

Klikamy w Menu Tools -> External Tools i uzupełniamy pola:
Title:

FLIP

Command:

C:\Program Files (x86)\Atmel\Flip 3.4.7\bin\Batchisp.exe

Arguments:

-device atxmega256a3bu -hardware usb -operation erase f memory flash blankcheck loadbuffer "$(TargetPath)" program verify start reset 0

Initial directory:

$(TargetDir)

Zaznaczamy opcję „Use Output window”
Klikamy OK.

as6_flip

Najlepiej dodać sobie tak utworzony skrót do paska narzędzi. Menu View -> Toolbars -> Customize…
Przechodzimy na zakładkę Commands, wybieramy pole Toolbar, z listy rozwijanej preferowany przez nas pasek narzędzi.
Klikamy przycisk „Add Command…” i szukamy w kategorii Tools pozycji „External Command 1”

Trzeba pamiętać, że przed załadowaniem programu musimy ręcznie uruchomić bootloader poprzez zwarcie odpowiedniego pinu do masy i reset mikrokontrolera.

Niestety nie ma możliwości, aby Atmel Studio sam przekazywał w parametrach wywołania programu Flip typ mikroprocesora.

Debouncing przycisków – pomiary

Odnośnie drgań styków, ich filtrowania itd. powstało dużo dyskusji, teorii i kłótni. Nie chcę się wypowiadać w tej kwestii, po prostu zamieszczę kilka zrzutów z oscyloskopu.

Schemat testowy:
schemat

Użyty przycisk to mały, dwukońcówkowy tact-switch jak ten:
Tact_Switch_INT-1101_

A oto pomiary:
R=470Ω, C niepodłączony:
sw1

R=470Ω, C=100nF:
sw1_100n

R=2Ω, C niepodłączony:
sw1_2a

R=2Ω, C=100nF:
sw1_2a

Przy analizie wykresów proszę pamiętać o różnych podstawach czasu oraz napięciach. Starałem się je tak wyskalować, aby „drgania” były jak najlepiej widoczne do analizy.

Sensor dotykowy na AVR, udało się bez Qtouch library

IMAG0328W końcu udało mi się zmusić AVR’ki do odczytu dotykowych przycisków. Biblioteka Atmel Qtouch kusiła, ale za nic nie byłem wstanie jej rozgryźć, a o rozmiarze nie wspomnę. Poczytałem trochę teorii, znalazłem jakieś przykłady i udało się. Pierwszym efektem jest ten moduł. Jak działa w praktyce:

Jak działa w teorii:
Płytki czujników dotyku działają jak kondensatory, ładowane przez rezystor. Mikroprocesor ładuje ten układ RC, mierząc czas. Ponieważ R jest stałe, czas ładowania jest zależny od pojemności. Pojemność zmienia się gdy przykładamy palec – staje się on dielektrykiem. Aby układ działał, należy zadbać o kilka elementów:
-Pojemność takiego „kondensatora” jest bardzo mała. Aby wydłużyć czas ładowania, stosuje się rezystory o dużej wartości (ja użyłem z braku innych 10M, lepsze byłyby około 2-5M om).
-Jeden sensor wymaga jednego pinu do odczytu, i jednego do ładowania, z tym że ten drugi może obsługiwać jednocześnie wiele czujników.
-Czasy są tu bardzo niewielkie; nie ma po co używać funkcji opóźniających; sam obrót pętli pomiarowej jest wystarczająco długi.
-Zmiany pojemności są także niewielkie, dlatego ważne jest aby ta zmiana po przyłożeniu palca była możliwie duża. Dlatego płytki mają powierzchnię w postaci siatki, aby zmniejszyć ich własną pojemność. Wbrew intuicji, im większe pola sensorów, tym niekoniecznie lepiej.
-W takich układach bardzo ważne jest zastosowanie jak najkrótszych ścieżek, aby zmniejszyć szkodliwe pojemności.
-Ważne jest też wylanie dookoła masy, która będzie ekranować zakłócenia i stanowić drugą elektrodę kondensatora.
-Jak wynika z powyższego opisu, pomiar nie polega na wykryciu pojemności ludzkiego ciała względem ziemi, ani niczego takiego. Palec człowieka jest dielektrykiem w polu elektrycznym kondensatora utworzonego z pola czujnika i pobliskiego pola masy.

Download:

Tiny13_2x_touch_sources_firmware

tiny13_2x_touch