74HC595 w Eagle – opisy pinów „po ludzku”

Przedstawiam grafikę z etykietami pinów takimi, do jakich się przyzwyczaiłem z protokołu SPI:
74hc595

Opis tekstem:

  • 9 QH* – MISO
  • 10 SCL – /RESET (aktywowany stanem niskim; jeżeli nie używasz, podepnij do VCC)
  • 11 SCK – CLK
  • 12 RCK – LATCH /CS (zbocze na tym pinie powoduje przepisanie stanu rejestru na wyjścia)
  • 13 G – /OE (ustaw stan niski, jeżeli chcesz żeby wyjścia działały; można podpiąć na stałe do GND)
  • 14 SER – MOSI

 

Kilka wskazówek przy tworzeniu stron WWW

1. Dodaj znacznik

<meta name="viewport" content="width=device-width, initial-scale=1" />

aby przeglądarka wiedziała, jak wyświetlić stronę w urządzeniach mobilnych.
2. Dodaj sekcje w arkuszu stylów CSS, aby usprawnić wyświetlanie na mniejszych ekranach:

@media screen and (max-width: 800px) {
    #conrtainer 
            width: 100%;
        
}

3. Dodaj powiązanie ze stroną Google plus

<link href="https://plus.google.com/113761537454505774372" rel="publisher" />

4. Jeżeli aktualizujesz pliki css lub js, zaktualizuj linki do nich, aby przeglądarka pobrała je ponownie:

<script src="js/scripts.js?v=2" type="text/javascript"></script>

5. Użyj przekierowania adresu z „bez www” na „z www.” w swoim pliku .htaccess:

RewriteCond %{HTTP_HOST} !^www.twoja-strona.pl
RewriteRule ^(.*)$ http://www.twoja-strona.pl/$1 [R=301,L]

6. Jeżeli używasz mod_rewrite i jednocześnie weryfikacji w Google Webmasters za pomocą pliku .html, dodaj do .htaccess:

RewriteCond %{REQUEST_URI} !google
RewriteRule ^([a-z0-9\-]+)\.html$ index.php?s=$1 [L]

7. Nie zapomnij o znacznikach meta keywords, description itd.
8. Sprawdź pod tym adresem, czy Twoja strona jest wykrywana przez Google jako mobilna, jeżeli nie, to popraw ją (Pkt 1,2).
9. Dodaj ikonkę (favicon) do swojej strony:

<link rel="shortcut icon" href="favicon.ico" />
[code]
10. Sprawdź stronę walidatorem, aby mieć pewność że kod jest poprawny.
11. Stwórz plik robots.txt, który nie będzie blokował Google dostępu do plików CSS oraz JS. Pamiętaj przy tym, aby niechcący nie ujawnić wrażliwych danych np. takim wpisem:
[code]
User-agent: googlebot
Disallow: haselka.txt

12. Aby uniknąć listowania zawartości folderów przez Apache, czyli np. takiego widoku:
indexof
Wstawiaj do każdego folderu pusty plik o nazwie index.html
13. Stwórz mapę witryny w pliku sitemap.xml

Jak zrobić piksel konwersji / piksel śledzący?

Potrzebujemy hostingu z serwerem Apache (na innych mogą być potrzebne zmiany dot. pliku .htaccess) i PHP. PHP powinien mieć dostępną bibliotekę GD. Dodatkowo musimy móc korzystać z mod_rewrite.

1.Przygotowujemy obrazek wielkości 1x1px o nazwie 1.jpg.

2.Tworzymy katalog na serwerze i umieszczamy tam obrazek oraz następujące pliki:

-.htaccess – za pomoca mod_rewrite ukryje za wywołaniem obrazka image.jpg nasz kod w pliku index.php, opcjonalnie przekazując parametr w postaci liczby, np. image20.jpg wywoła nam skrypt index.php?i=20

RewriteEngine On
RewriteBase /t
RewriteRule ^image([0-9]+).jpg$ index.php?i=$1 [L]
RewriteRule ^image.jpg$ index.php [L]

-index.php – kod odpowiedzialny za odebranie i zapisanie do pliku statystyki.csv danych uzyskanych przez serwer dot. użytkownika, a następnie wysłaniu obrazka jpg.

//Data, id usera, IP, REFERER, user agent,host,remote_host
//';'.$_SERVER['REMOTE_HOST'].
$zapis = date('d.m.y H:i:s').';'.$_GET['i'].';'.$_SERVER['REMOTE_ADDR'].';'.$_SERVER['HTTP_REFERER'].';"'.$_SERVER['HTTP_USER_AGENT'].'";'.$_SERVER['HTTP_HOST'].';'.$_SERVER['REMOTE_HOST']."\n";
$plik = fopen("statystyki.csv","a");
fputs($plik, $zapis);
fclose($plik);
$image = imagecreatefromjpeg('1.jpg');
header('Content-Type: image/jpeg');
imagejpeg($image, null, 100);
?>

Umieszczamy także pusty plik tekstowy o nazwie statystyki.csv, z uprawnieniami do zapisu. W terminalu linuksowym wyglądałoby to tak:

touch statystyki.csv && chmod 777 statystyki.csv

Dodatkowo dla wygody przeglądania zapisów wejść można wrzucić taki skrypt:

<!doctype html>
<html lang="pl">
<head>
	<meta charset="UTF-8">
	<title>Podgląd statystyk wejścia</title>
	<style style="text/css">
		.hoverTable{
		width:100%; 
		border-collapse:collapse; 
		}
		.hoverTable td{ 
		padding:7px; border:#4e95f4 1px solid;
		}
		/* Define the default color for all the table rows */
		.hoverTable tr{
		background: #b8d1f3;
		}
		/* Define the hover highlight color for the table row */
		.hoverTable tr:hover {
		background-color: #ffff99;
		}
	</style>
</head>
<body>
<a href="statystyki.csv">Pobierz plik CSV</a>
	<?php
		echo "<table class=\"hoverTable\">\n\n";
		$f = fopen("statystyki.csv", "r");
		while (($line = fgetcsv($f,0,";")) !== false) {
			echo "<tr>";
			foreach ($line as $cell) {
                echo "<td>" . htmlspecialchars($cell) . "</td>";
			}
			echo "</tr>\n";
		}
		fclose($f);
	echo "\n</table>";?>
</body>
</html>

Całość w paczce zip można pobrać tutaj: piksel_konwersji.zip

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.