Bladeren bron

Redesigned

Thomas Buck 10 jaren geleden
bovenliggende
commit
5295cc70fb

+ 16
- 54
input/index.md Bestand weergeven

6
 compat: home
6
 compat: home
7
 ---
7
 ---
8
 
8
 
9
-# Welcome
9
+<div style="width: 150px; height: 150px; float: right; border: 2px, solid, #000000; border-radius: 10px; background-image: url(http://www.gravatar.com/avatar/8d18fec40a74782052fb4c007d212475?s=150); margin-left: 2em; margin-bottom: 1em;"></div>
10
 
10
 
11
-I'm a 19 year old Information Engineering student from Germany, mostly building cool stuff with AVR microcontrollers.
11
+I'm a 19 year old Information Engineering student from Germany, mostly building stuff with AVR microcontrollers.
12
 All of my projects are released as [Free Software][fs] on my [GitHub Profile][gh], as well as on this Website. Have fun!
12
 All of my projects are released as [Free Software][fs] on my [GitHub Profile][gh], as well as on this Website. Have fun!
13
 
13
 
14
 It would be nice if you could use this [Amazon.de Affiliate Link][ama].
14
 It would be nice if you could use this [Amazon.de Affiliate Link][ama].
15
 
15
 
16
-<div style="margin-left: auto; margin-right: auto; margin-top: 1em; margin-bottom: 1em;">
17
-<iframe src="http://githubbadge.appspot.com/badge/xythobuz?a=0" style="border: 0;height: 110px;width: 200px;overflow: hidden;"></iframe>
18
-<div style="width: 150px; height: 150px; float: right; border: 2px, solid, #000000; border-radius: 10px; background-image: url(http://www.gravatar.com/avatar/8d18fec40a74782052fb4c007d212475?s=150)"></div>
19
-</div>
20
-
21
-[09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0][2]
22
-
23
-[46 DC EA D3 17 FE 45 D8 09 23 EB 97 E4 95 64 10 D4 CD B2 C2][3]
24
-
25
-<pre>
26
------BEGIN GEEK CODE BLOCK-----
27
-Version: 3.12
28
-GCS/E/MU d-(--)>--- s:++ a-- C++++>$ UBLX+++>++++$ P+ L+ !E--- W+++ N+ !o K--? !w--- !O M++ !V PS+++ PE-- Y+ PGP++ !t !5 !X !R tv-- b+ DI+ D+ G e h r y?*
29
-------END GEEK CODE BLOCK------
30
-</pre>
31
-
32
-<div style="width: 520px; max-width: 100%; margin-left: auto; margin-right: auto;">
33
-<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/xythobuz" data-widget-id="318732638158471170">Tweets by @xythobuz</a>
34
-<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
35
-</div>
36
-
37
- [1]: http://www.xythobuz.de/cubehook.php
38
- [2]: http://en.wikipedia.org/wiki/HD_DVD_encryption_key_controversy
39
- [3]: http://www.yalelawtech.org/trusted-computing-drm/46-dc-ea-d3-17-fe-45-d8-09-23-eb-97-e4-95-64-10-d4-cd-b2-c2/
40
- [fs]: http://www.gnu.org/philosophy/free-sw.html
41
- [gh]: https://github.com/xythobuz
42
- [ama]: http://www.amazon.de/?_encoding=UTF8&amp;camp=1638&amp;creative=19454&amp;linkCode=ur2&amp;site-redirect=de&amp;tag=xythobuzorg-21
43
-
44
-lang: de
45
-
46
-# Willkommen
47
-
48
-Hier findest du (immer mehr) Informationen zu Projekten von mir. Gerne höre ich Feedback über E-Mail. Viel Spaß!
49
-
50
-<div style="width: 400px; height: 110px; margin-left: auto; margin-right: auto; margin-top: 1em; margin-bottom: 1em;">
51
-<iframe src="http://githubbadge.appspot.com/badge/xythobuz?a=0" style="border: 0;height: 110px;width: 200px;overflow: hidden;"></iframe>
52
-<div style="width: 110px; height: 110px; float: right; border: 2px, solid, #000000; border-radius: 10px; background-image: url(http://www.gravatar.com/avatar/8d18fec40a74782052fb4c007d212475?s=110)"></div>
53
-</div>
54
-
55
-[09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0][2]
16
+### Recent Posts
56
 
17
 
57
-[46 DC EA D3 17 FE 45 D8 09 23 EB 97 E4 95 64 10 D4 CD B2 C2][3]
18
+<!--%
19
+from datetime import datetime
20
+posts = [p for p in pages if "post" in p] # get all blog post pages
21
+posts.sort(key=lambda p: p.get("date"), reverse=True) # sort post pages by date
22
+for p in posts[0:4]:
23
+    date = datetime.strptime(p.date, "%Y-%m-%d").strftime("%B %d, %Y")
24
+    print "  * **[%s](%s)** - %s" % (p.post, p.url, date) # markdown list item
25
+%-->
26
+  * **[more...](blog.html)**
58
 
27
 
59
-<pre>
60
------BEGIN GEEK CODE BLOCK-----
61
-Version: 3.12
62
-GCS/E/MU d-(--)>--- s:++ a-- C++++>$ UBLX+++>++++$ P+ L+ !E--- W+++ N+ !o K--? !w--- !O M++ !V PS+++ PE-- Y+ PGP++ !t !5 !X !R tv-- b+ DI+ D+ G e h r y?*
63
-------END GEEK CODE BLOCK------
64
-</pre>
28
+### Tweets
65
 
29
 
66
-<div style="width: 520px; max-width: 100%; margin-left: auto; margin-right: auto;">
67
-<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/xythobuz" data-widget-id="318732638158471170">Tweets by @xythobuz</a>
30
+<div style="width: 100%; margin-left: auto; margin-right: auto;">
31
+<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/xythobuz" data-widget-id="318732638158471170" data-chrome="noheader nofooter">Tweets by @xythobuz</a>
68
 <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
32
 <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
69
 </div>
33
 </div>
70
 
34
 
71
  [1]: http://www.xythobuz.de/cubehook.php
35
  [1]: http://www.xythobuz.de/cubehook.php
72
- [2]: http://en.wikipedia.org/wiki/HD_DVD_encryption_key_controversy
73
- [3]: http://www.yalelawtech.org/trusted-computing-drm/46-dc-ea-d3-17-fe-45-d8-09-23-eb-97-e4-95-64-10-d4-cd-b2-c2/
74
  [fs]: http://www.gnu.org/philosophy/free-sw.html
36
  [fs]: http://www.gnu.org/philosophy/free-sw.html
75
  [gh]: https://github.com/xythobuz
37
  [gh]: https://github.com/xythobuz
76
- [ama]: http://www.amazon.de/?_encoding=UTF8&amp;camp=1638&amp;creative=19454&amp;linkCode=ur2&amp;site-redirect=de&amp;tag=xythobuzorg-21
38
+ [ama]: http://www.amazon.de/?_encoding=UTF8&amp;camp=1638&amp;creative=19454&amp;linkCode=ur2&amp;site-redirect=de&amp;tag=xythobuzorg-21

+ 1
- 16
input/projects/hardware.md Bestand weergeven

4
 compat: hw
4
 compat: hw
5
 ---
5
 ---
6
 
6
 
7
-# {{ page.title }}
8
-
9
-These are my mostly hardware-related projects and articles.
10
-
11
-<!--%
12
-mpages = [p for p in pages if p.get("parent", "") == "hardware" and p.lang == "en"]
13
-mpages.sort(key=lambda p: int(p["position"]))
14
-for p in mpages:
15
-    print "  * **[%s](%s)**" % (p.title, p.url) # markdown list item
16
-%-->
17
-
18
-lang: de
19
-
20
-# {{ page.title }}
21
-
22
-Dies sind meine Projekte, deren Schwerpunkt eher im Bereich Hardware liegen.
7
+### {{ page.title }}
23
 
8
 
24
 <!--%
9
 <!--%
25
 mpages = [p for p in pages if p.get("parent", "") == "hardware" and p.lang == "en"]
10
 mpages = [p for p in pages if p.get("parent", "") == "hardware" and p.lang == "en"]

+ 2
- 2
input/projects/hardware/ledmatrix.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 This is a school project: an 8x10 LED matrix. The circuit is based on [this][1], only the resistor values and transistors were changed. Take two of these and add a AtTiny2313 and voilà, you get this:
16
 This is a school project: an 8x10 LED matrix. The circuit is based on [this][1], only the resistor values and transistors were changed. Take two of these and add a AtTiny2313 and voilà, you get this:
17
 
17
 
26
 
26
 
27
 lang: de
27
 lang: de
28
 
28
 
29
-# {{ page.title_de }}
29
+### {{ page.title_de }}
30
 
30
 
31
 Hier ein kleines Schulprojekt: Eine 8x10 LED Matrix. Die Schaltung basiert [hierauf][1], nur die Widerstandswerte und Transistoren wurden der Matrix entsprechend verändert. Diese Schaltung 2x aufbauen und an einen AtTiny2313 anschliessen und schon kommt das dabei heraus:
31
 Hier ein kleines Schulprojekt: Eine 8x10 LED Matrix. Die Schaltung basiert [hierauf][1], nur die Widerstandswerte und Transistoren wurden der Matrix entsprechend verändert. Diese Schaltung 2x aufbauen und an einen AtTiny2313 anschliessen und schon kommt das dabei heraus:
32
 
32
 

+ 2
- 2
input/projects/hardware/serialdebug.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 A 8x5 LED Matrix controlled by an AtTiny2313 which communicates via a FT232R with a PC. Received characters are displayed by the matrix. This is useful for debugging serial applications.
16
 A 8x5 LED Matrix controlled by an AtTiny2313 which communicates via a FT232R with a PC. Received characters are displayed by the matrix. This is useful for debugging serial applications.
17
 
17
 
31
 
31
 
32
 lang: de
32
 lang: de
33
 
33
 
34
-# {{ page.title_de }}
34
+### {{ page.title_de }}
35
 
35
 
36
 Eine 8x5 LED Matrix an einem AtTiny2313, welcher über einen FT232R mit einem Computer kommuniziert. Empfangene Zeichen werden auf der LED Matrix angezeigt. Dies ist hilfreich beim Debuggen von Computerprogrammen, welche mit einer seriellen Schnittstelle kommunizieren.
36
 Eine 8x5 LED Matrix an einem AtTiny2313, welcher über einen FT232R mit einem Computer kommuniziert. Empfangene Zeichen werden auf der LED Matrix angezeigt. Dies ist hilfreich beim Debuggen von Computerprogrammen, welche mit einer seriellen Schnittstelle kommunizieren.
37
 
37
 

+ 2
- 2
input/projects/hardware/ssop28.md Bestand weergeven

10
 reddit: true
10
 reddit: true
11
 ---
11
 ---
12
 
12
 
13
-# {{ page.title }}
13
+### {{ page.title }}
14
 
14
 
15
 This is a small PCB to use a SSOP28 SMT IC in a Breadboard or similar with 1" (2,54mm) pin-distance:
15
 This is a small PCB to use a SSOP28 SMT IC in a Breadboard or similar with 1" (2,54mm) pin-distance:
16
 
16
 
23
 
23
 
24
 lang: de
24
 lang: de
25
 
25
 
26
-# {{ page.title_de }}
26
+### {{ page.title_de }}
27
 
27
 
28
 Hier das Layout eines SSOP28 - DIL Adapters:
28
 Hier das Layout eines SSOP28 - DIL Adapters:
29
 
29
 

+ 2
- 2
input/projects/hardware/xyrobot.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# {{ page.title }}
15
+### {{ page.title }}
16
 
16
 
17
 This is my robot project. A self-made PCB with an AtMega2560 controls everything. The robot has a [Bluetooth module][1], a [Gameboy Camera][2] and my [RAM module][3]. I bought the [RN-KeyLCD][4] and the [RN-VN2][5] from [Roboternetz][6].
17
 This is my robot project. A self-made PCB with an AtMega2560 controls everything. The robot has a [Bluetooth module][1], a [Gameboy Camera][2] and my [RAM module][3]. I bought the [RN-KeyLCD][4] and the [RN-VN2][5] from [Roboternetz][6].
18
 
18
 
79
 
79
 
80
 lang: de
80
 lang: de
81
 
81
 
82
-# {{ page.title_de }}
82
+### {{ page.title_de }}
83
 
83
 
84
 Dies ist mein kleines Roboterprojekt. Eine eigene Platine mit einem AtMega2560 steuert den Roboter. Angeschlossen sind unter anderem mein [Bluetooth Modul][1], eine [Gameboy Kamera][2] und mein [RAM Modul][3]. Vom [Roboternetz][4] stammen das [RN-KeyLCD][5] und der [RN-VN2 Motortreiber][6].
84
 Dies ist mein kleines Roboterprojekt. Eine eigene Platine mit einem AtMega2560 steuert den Roboter. Angeschlossen sind unter anderem mein [Bluetooth Modul][1], eine [Gameboy Kamera][2] und mein [RAM Modul][3]. Vom [Roboternetz][4] stammen das [RN-KeyLCD][5] und der [RN-VN2 Motortreiber][6].
85
 
85
 

+ 4
- 4
input/projects/hardware/xyrobot/bluetooth.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 Here's the Layout of a BTM-222 Bluetooth PCB, following the [Roboternetz Guidelines Mini Format][1]. The circuit comes from [Robotfreak][2], but is basically the minimal circuit described in the [datasheet (370kB)][3].
16
 Here's the Layout of a BTM-222 Bluetooth PCB, following the [Roboternetz Guidelines Mini Format][1]. The circuit comes from [Robotfreak][2], but is basically the minimal circuit described in the [datasheet (370kB)][3].
17
 
17
 
35
 
35
 
36
 Soldering the standard parts should be no problem. You should use a find soldering iron to connect each pin of the BTM-222, one after another. A 31mm long piece of wire can be used as antenna.
36
 Soldering the standard parts should be no problem. You should use a find soldering iron to connect each pin of the BTM-222, one after another. A 31mm long piece of wire can be used as antenna.
37
 
37
 
38
-## Interfacing the BTM-222
38
+### Interfacing the BTM-222
39
 
39
 
40
 Before using the BTM-222 you have to configure it. You can change the speed, data format, name, PIN and some other things. You have to connect the hardware serial interface of the BTM-222 to a PC and issue the AT-Commands documented in the datasheet. It is very important to use only '\r' as Line-End-Character. Using '\n' or "\r\n" will result in error messages from the module.
40
 Before using the BTM-222 you have to configure it. You can change the speed, data format, name, PIN and some other things. You have to connect the hardware serial interface of the BTM-222 to a PC and issue the AT-Commands documented in the datasheet. It is very important to use only '\r' as Line-End-Character. Using '\n' or "\r\n" will result in error messages from the module.
41
 
41
 
54
 
54
 
55
 lang: de
55
 lang: de
56
 
56
 
57
-# {{ page.title_de }}
57
+### {{ page.title_de }}
58
 
58
 
59
 Hier das Layout einer Adapterplatine für den BTM-222 Bluetooth IC im [Roboternetz Mini Format][1]. Die Schaltung stammt von [Robotfreak][2], entspricht aber im Prinzip der Minimalbeschaltung aus dem [Datenblatt][3].
59
 Hier das Layout einer Adapterplatine für den BTM-222 Bluetooth IC im [Roboternetz Mini Format][1]. Die Schaltung stammt von [Robotfreak][2], entspricht aber im Prinzip der Minimalbeschaltung aus dem [Datenblatt][3].
60
 
60
 
78
 
78
 
79
 Das löten der Standard-Bauteile sollte kein Problem darstellen. Beim BTM-222 empfiehlt es sich, mit einem feinen Lötkolben jeden Pin einzeln anzulöten. Als Antenne kann ein 3,1cm langer Draht verwendet werden.
79
 Das löten der Standard-Bauteile sollte kein Problem darstellen. Beim BTM-222 empfiehlt es sich, mit einem feinen Lötkolben jeden Pin einzeln anzulöten. Als Antenne kann ein 3,1cm langer Draht verwendet werden.
80
 
80
 
81
-## Ansteuerung des BTM-222
81
+### Ansteuerung des BTM-222
82
 
82
 
83
 Vor der ersten Verwendung muss das BTM-222 Modul konfiguriert werden. Dort werden Geschwindigkeit, Format, Name, PIN und weitere Einstellungen getroffen. Dabei muss das Modul per Hardware-Schnittstelle an einen Computer angeschlossen werden. Nun können die im Datenblatt dokumentierten AT Befehle eingegeben werden. Sehr wichtig hierbei ist, dass das Modul als Zeilenendzeichen nur '\r' erwartet. Wird '\n' oder "\r\n" verwendet quittiert das Modul jegliche Eingabe mit Error.
83
 Vor der ersten Verwendung muss das BTM-222 Modul konfiguriert werden. Dort werden Geschwindigkeit, Format, Name, PIN und weitere Einstellungen getroffen. Dabei muss das Modul per Hardware-Schnittstelle an einen Computer angeschlossen werden. Nun können die im Datenblatt dokumentierten AT Befehle eingegeben werden. Sehr wichtig hierbei ist, dass das Modul als Zeilenendzeichen nur '\r' erwartet. Wird '\n' oder "\r\n" verwendet quittiert das Modul jegliche Eingabe mit Error.
84
 
84
 

+ 2
- 2
input/projects/hardware/xyrobot/k6x4008.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# {{ page.title }}
15
+### {{ page.title }}
16
 
16
 
17
 [![Photo 1][1]][2]
17
 [![Photo 1][1]][2]
18
 
18
 
31
 
31
 
32
 lang: de
32
 lang: de
33
 
33
 
34
-# {{ page.title_de }}
34
+### {{ page.title_de }}
35
 
35
 
36
 [![Photo 1][1]][2]
36
 [![Photo 1][1]][2]
37
 
37
 

+ 2
- 2
input/projects/hardware/xyrobot/rremote.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 rRemote is a addin for Casio fx9860G calculators written in C. It allows you to send data over the 3-Pin serial port.
16
 rRemote is a addin for Casio fx9860G calculators written in C. It allows you to send data over the 3-Pin serial port.
17
 
17
 
27
 
27
 
28
 lang: de
28
 lang: de
29
 
29
 
30
-# {{ page.title_de }}
30
+### {{ page.title_de }}
31
 
31
 
32
 rRemote ist ein Addin für Casio fx9860G-Serie Taschenrechner. Es ermöglicht die serielle Kommunikation mit beliebigen Geräten über den 3-Pin Anschluss.
32
 rRemote ist ein Addin für Casio fx9860G-Serie Taschenrechner. Es ermöglicht die serielle Kommunikation mit beliebigen Geräten über den 3-Pin Anschluss.
33
 Zum Download wird das gesamte Projekt für das [offizielle Casio SDK angeboten. Dieses kann kostenlos von Casio bezogen werden][1]. Die Parameter für die serielle Schnittstelle können im Quellcode geändert werden, genauso wie die Daten die gesendet werden sollen. Das sollte mit passablen C Kentnissen möglich sein.
33
 Zum Download wird das gesamte Projekt für das [offizielle Casio SDK angeboten. Dieses kann kostenlos von Casio bezogen werden][1]. Die Parameter für die serielle Schnittstelle können im Quellcode geändert werden, genauso wie die Daten die gesendet werden sollen. Das sollte mit passablen C Kentnissen möglich sein.

+ 2
- 2
input/projects/hardware/xyrobot/xyrobotremote.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# {{ page.title }}
15
+### {{ page.title }}
16
 
16
 
17
 xyRobotRemote is a Cross-Platform Java GUI App. It controls the [xyRobot][1].
17
 xyRobotRemote is a Cross-Platform Java GUI App. It controls the [xyRobot][1].
18
 
18
 
41
 
41
 
42
 lang: de
42
 lang: de
43
 
43
 
44
-# {{ page.title_de }}
44
+### {{ page.title_de }}
45
 
45
 
46
 xyRobotRemote ist eine Cross-Plattform Java GUI App. Sie dient der Fernsteuerung des [xyRobot][1] Roboters.
46
 xyRobotRemote ist eine Cross-Plattform Java GUI App. Sie dient der Fernsteuerung des [xyRobot][1] Roboters.
47
 
47
 

+ 1
- 16
input/projects/software.md Bestand weergeven

4
 compat: sw
4
 compat: sw
5
 ---
5
 ---
6
 
6
 
7
-# {{ page.title }}
8
-
9
-These are my mostly software-related projects and articles.
10
-
11
-<!--%
12
-mpages = [p for p in pages if p.get("parent", "") == "software" and p.lang == "en"]
13
-mpages.sort(key=lambda p: int(p["position"]))
14
-for p in mpages:
15
-    print "  * **[%s](%s)**" % (p.title, p.url) # markdown list item
16
-%-->
17
-
18
-lang: de
19
-
20
-# {{ page.title }}
21
-
22
-Dies sind meine Projekte, deren Schwerpunkt eher im Bereich Software liegen.
7
+### {{ page.title }}
23
 
8
 
24
 <!--%
9
 <!--%
25
 mpages = [p for p in pages if p.get("parent", "") == "software" and p.lang == "en"]
10
 mpages = [p for p in pages if p.get("parent", "") == "software" and p.lang == "en"]

+ 2
- 2
input/projects/software/avrserial.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# {{ page.title }}
15
+### {{ page.title }}
16
 
16
 
17
 The avrSerial Library enables interrupt-driven UART communication on all available UART modules. Each module has it's own receive and transmit buffer. XON/XOFF Flow Control for the receiving end can be enabled. At the moment, the following AtMega types are supported:
17
 The avrSerial Library enables interrupt-driven UART communication on all available UART modules. Each module has it's own receive and transmit buffer. XON/XOFF Flow Control for the receiving end can be enabled. At the moment, the following AtMega types are supported:
18
 
18
 
43
 
43
 
44
 lang: de
44
 lang: de
45
 
45
 
46
-# {{ page.title_de }}
46
+### {{ page.title_de }}
47
 
47
 
48
 Die avrSerial Library ermöglicht Interruptgesteuerte UART kommunikation mit allen verfügbaren UART Modulen. Jedes Modul hat einen eigenen Sende- und Empfangspuffer. XON/XOFF Flow Control kann auf Empfangsseite aktiviert werden. Unterstützt werden momentan folgende AtMega Typen:
48
 Die avrSerial Library ermöglicht Interruptgesteuerte UART kommunikation mit allen verfügbaren UART Modulen. Jedes Modul hat einen eigenen Sende- und Empfangspuffer. XON/XOFF Flow Control kann auf Empfangsseite aktiviert werden. Unterstützt werden momentan folgende AtMega Typen:
49
 
49
 

+ 2
- 2
input/projects/software/c250.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# Mio C220 / C250 Unlock
14
+### Mio C220 / C250 Unlock
15
 
15
 
16
 In short:
16
 In short:
17
 
17
 
28
 
28
 
29
 lang: de
29
 lang: de
30
 
30
 
31
-# Mio C220 / C250 Unlock
31
+### Mio C220 / C250 Unlock
32
 
32
 
33
 Das Mio C250 oder C220 (eins für Amerika, eins für Europa) ist ein Navigationsgerät dessen Software auf Windows CE 5.0 basiert.
33
 Das Mio C250 oder C220 (eins für Amerika, eins für Europa) ist ein Navigationsgerät dessen Software auf Windows CE 5.0 basiert.
34
 Das weckt natürlich Hoffnungen, das Gerät in einen PDA verwandeln zu können. Aber leider ist Windows nur in einer Core Version installiert.
34
 Das weckt natürlich Hoffnungen, das Gerät in einen PDA verwandeln zu können. Aber leider ist Windows nur in einer Core Version installiert.

+ 1
- 1
input/projects/software/nas.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 1.  root Access (by Jayare)
16
 1.  root Access (by Jayare)
17
     *   Install the device like a normal user would
17
     *   Install the device like a normal user would

+ 2
- 2
input/projects/software/serialhelper.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# {{ page.title }}
15
+### {{ page.title }}
16
 
16
 
17
 SerialHelper is a Cross-Platform (Windows, Unix systems) Command Line Utility allowing read and write access to serial ports. Additionally, it can list the available serial ports.
17
 SerialHelper is a Cross-Platform (Windows, Unix systems) Command Line Utility allowing read and write access to serial ports. Additionally, it can list the available serial ports.
18
 
18
 
49
 
49
 
50
 lang: de
50
 lang: de
51
 
51
 
52
-# {{ page.title_de }}
52
+### {{ page.title_de }}
53
 
53
 
54
 SerialHelper ist ein Cross Plattform (Windows, Unix Systeme) Kommandozeilen Programm welches den Zugriff auf serielle Ports ermöglicht. Ausserdem können vorhandene serielle Ports aufgelistet werden.
54
 SerialHelper ist ein Cross Plattform (Windows, Unix Systeme) Kommandozeilen Programm welches den Zugriff auf serielle Ports ermöglicht. Ausserdem können vorhandene serielle Ports aufgelistet werden.
55
 
55
 

+ 3
- 3
input/projects/software/ultimatenotifier.md Bestand weergeven

11
 print: true
11
 print: true
12
 ---
12
 ---
13
 
13
 
14
-# {{ page.title }}
14
+### {{ page.title }}
15
 
15
 
16
 The service [Ultimate Notifier][1] allows you to send Push-Notification to your iPhone easily. Based on this, you can write shell scripts that are executed regularly via cron. This could inform you about a changed public IP. To do this, save this script somewhere:
16
 The service [Ultimate Notifier][1] allows you to send Push-Notification to your iPhone easily. Based on this, you can write shell scripts that are executed regularly via cron. This could inform you about a changed public IP. To do this, save this script somewhere:
17
 
17
 
41
 
41
 
42
 <pre>crontab -e</pre>
42
 <pre>crontab -e</pre>
43
 
43
 
44
->You can add a cronfile entry. To execute the script every 30 minutes, use this:
44
+You can add a cronfile entry. To execute the script every 30 minutes, use this:
45
 
45
 
46
 <pre>*/30 * * * * /Users/anon/bin/ipnotify.sh</pre>
46
 <pre>*/30 * * * * /Users/anon/bin/ipnotify.sh</pre>
47
 
47
 
121
 
121
 
122
 lang: de
122
 lang: de
123
 
123
 
124
-# {{ page.title_de }}
124
+### {{ page.title_de }}
125
 
125
 
126
 Der Dienst [Ultimate Notifier][1] erlaubt es relativ problemlos, zum Beispiel mittels curl Push-Notifications an ein iPhone zu senden. Darauf basierend können Shell Skripte geschrieben werden, welche regelmäßig als Cron-Job gestartet werden. So kann man sich zum Beispiel über eine geänderte Public IP informieren lassen. Dafür muss dieses Skript irgendwo gespeichert werden:
126
 Der Dienst [Ultimate Notifier][1] erlaubt es relativ problemlos, zum Beispiel mittels curl Push-Notifications an ein iPhone zu senden. Darauf basierend können Shell Skripte geschrieben werden, welche regelmäßig als Cron-Job gestartet werden. So kann man sich zum Beispiel über eine geänderte Public IP informieren lassen. Dafür muss dieses Skript irgendwo gespeichert werden:
127
 
127
 

+ 2
- 2
input/projects/software/yasab.md Bestand weergeven

12
 print: true
12
 print: true
13
 ---
13
 ---
14
 
14
 
15
-# YASAB - Yet another simple AVR Bootloader
15
+### YASAB - Yet another simple AVR Bootloader
16
 
16
 
17
 YASAB is a simple AVR Bootloader, written in C for the [AVR libc][1]. A PC Program sends the data to be programmed with a simple protocol via UART to the AVR. If the bootloader was compiled for the ATmega168, 128x or 256x, it will listen on both USART0 and USART1 for serial communication attempts. [The most recent source code can be found in the Github Repository][2]. The Upload software can easily be used in place of avrdude in makefiles.
17
 YASAB is a simple AVR Bootloader, written in C for the [AVR libc][1]. A PC Program sends the data to be programmed with a simple protocol via UART to the AVR. If the bootloader was compiled for the ATmega168, 128x or 256x, it will listen on both USART0 and USART1 for serial communication attempts. [The most recent source code can be found in the Github Repository][2]. The Upload software can easily be used in place of avrdude in makefiles.
18
 
18
 
46
 
46
 
47
 lang: de
47
 lang: de
48
 
48
 
49
-# YASAB - Yet another simple AVR Bootloader
49
+### YASAB - Yet another simple AVR Bootloader
50
 
50
 
51
 YASAB ist ein einfacher AVR Bootloader, geschrieben in C für die [AVR libc][1]. Von einem PC-Programm aus werden die Daten über ein simples Protokoll per UART an den AVR gesendet. Wurde der Bootloader für den ATmega168, 128x oder 256x kompiliert, wird sowohl auf USART0 als auch auf USART1 Daten erwartet. [Der aktuellste Quellcode findet sich stets im Github Repository][2]. Die Upload Software kann einfach statt avrdude oder ähnlichem in makefiles eingebaut werden.
51
 YASAB ist ein einfacher AVR Bootloader, geschrieben in C für die [AVR libc][1]. Von einem PC-Programm aus werden die Daten über ein simples Protokoll per UART an den AVR gesendet. Wurde der Bootloader für den ATmega168, 128x oder 256x kompiliert, wird sowohl auf USART0 als auch auf USART1 Daten erwartet. [Der aktuellste Quellcode findet sich stets im Github Repository][2]. Die Upload Software kann einfach statt avrdude oder ähnlichem in makefiles eingebaut werden.
52
 
52
 

+ 1
- 1
input/reviews/tex_beetle.md Bestand weergeven

4
 flattr: true
4
 flattr: true
5
 ---
5
 ---
6
 
6
 
7
-# {{ page.title }}
7
+### {{ page.title }}
8
 
8
 
9
 On June 5th I ordered the [Tex Beetle][texbeetle] from [MechanicalKeyboards.com][shop]. It shipped one day later and after about two weeks I received a notification from the German customs office. Including import sales tax and shipping, I had to pay 160 Euros.
9
 On June 5th I ordered the [Tex Beetle][texbeetle] from [MechanicalKeyboards.com][shop]. It shipped one day later and after about two weeks I received a notification from the German customs office. Including import sales tax and shipping, I had to pay 160 Euros.
10
 
10
 

+ 2
- 2
input/unlisted/404.md Bestand weergeven

1
 title: 404
1
 title: 404
2
 ---
2
 ---
3
 
3
 
4
-# {{ page.title }}
4
+### {{ page.title }}
5
 
5
 
6
-## Page not found!
6
+### Page not found!
7
 
7
 
8
 These are not the Droids you are looking for!
8
 These are not the Droids you are looking for!

input/projects/software/avrnetstack.md → input/unlisted/avrnetstack.md Bestand weergeven


+ 1
- 1
input/unlisted/language.md Bestand weergeven

2
 parent: none
2
 parent: none
3
 ---
3
 ---
4
 
4
 
5
-# {{ page.title }}
5
+### {{ page.title }}
6
 
6
 
7
 You should only reach this page if your Javascript is disabled, and you clicked on the Language link. To reach the german version of an article, just add .de before .html in the URL bar.
7
 You should only reach this page if your Javascript is disabled, and you clicked on the Language link. To reach the german version of an article, just add .de before .html in the URL bar.

input/projects/hardware/xycontrol.md → input/unlisted/xycontrol.md Bestand weergeven


+ 32
- 83
page.html Bestand weergeven

9
     <link rel="author" href="xythobuz@xythobuz.de">
9
     <link rel="author" href="xythobuz@xythobuz.de">
10
     <link rel="shortcut icon" href="img/favicon.ico">
10
     <link rel="shortcut icon" href="img/favicon.ico">
11
     <link rel="alternate" type="application/rss+xml" title="Blog" href="rss.xml">
11
     <link rel="alternate" type="application/rss+xml" title="Blog" href="rss.xml">
12
+    <link type="text/css" rel="stylesheet" href="css/style.css" />
12
     <link type="text/css" rel="stylesheet" href="css/sh_bright.min.css" />
13
     <link type="text/css" rel="stylesheet" href="css/sh_bright.min.css" />
13
-    <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" media="screen" />
14
-    <link rel="stylesheet" href="css/bootstrap-responsive.min.css" type="text/css" media="screen" />
15
-    <link rel="stylesheet" href="css/gh-fork-ribbon.css" />
16
-    <link href='http://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'>
14
+    <link type="text/css" rel="stylesheet" href="css/gh-fork-ribbon.css" />
15
+    <link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=Droid+Sans:400,700">
17
     <script type="text/javascript" src="js/sh_main.js"></script>
16
     <script type="text/javascript" src="js/sh_main.js"></script>
18
-    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
19
-    <script type="text/javascript" src="js/bootstrap.min.js"></script>
20
     <!--%
17
     <!--%
21
         if page.get("flattr", "false") == "true":
18
         if page.get("flattr", "false") == "true":
22
             print "<script type='text/javascript'>"
19
             print "<script type='text/javascript'>"
33
             print "</script>"
30
             print "</script>"
34
     %-->
31
     %-->
35
 </head>
32
 </head>
36
-<body onload="sh_highlightDocument('/js/sh/', '.min.js');" style="font-size: 1.1em; font-family: 'Droid Sans', sans-serif;">
33
+<body onload="sh_highlightDocument('/js/sh/', '.min.js');">
37
     <!--%
34
     <!--%
38
         if page.get("github", "") != "":
35
         if page.get("github", "") != "":
39
             # GitHub Fork-Me Ribbon
36
             # GitHub Fork-Me Ribbon
42
             print page.github
39
             print page.github
43
             print '">Fork me on GitHub</a></div></div>'
40
             print '">Fork me on GitHub</a></div></div>'
44
     %-->
41
     %-->
45
-    <div class="navbar navbar-fixed-top">
46
-        <div class="navbar-inner">
47
-            <ul class="nav">
48
-                <!--%
49
-                    mpages = [p for p in pages if p.get("parent", "") == "main" and p.lang == "en"]
50
-                    mpages.sort(key=lambda p: int(p["position"]))
51
-                    entry = '<li><a href="%s">%s</a></li>'
52
-                    newEntry = '<li class="dropdown"><a href="%s" class="dropdown-toggle" data-toggle="dropdown">%s<b class="caret"></b></a><ul class="dropdown-menu">'
53
-                    newEntry2 = '<li class="dropdown-submenu"><a href="%s" class="dropdown-toggle disabled" data-toggle="dropdown">%s</a><ul class="dropdown-menu">'
54
-                    for p in mpages:
55
-                        sub = [r for r in pages if r.get("parent", "") == p.url.replace("/", "").replace(".html", "") and r.lang == "en"]
56
-                        sub.sort(key=lambda r: int(r["position"]))
57
-                        if len(sub) > 0:
58
-                            print(newEntry % (htmlspecialchars(p["url"]), htmlspecialchars(p["title"])))
59
-                            for r in sub:
60
-                                subsub = [s for s in pages if s.get("parent", "") == r.url.replace("/", "").replace(".html", "") and s.lang == "en"]
61
-                                subsub.sort(key = lambda s: int(s["position"]))
62
-                                if len(subsub) > 0:
63
-                                    print(newEntry2 % (htmlspecialchars(r["url"]), htmlspecialchars(r["title"])))
64
-                                    for s in subsub:
65
-                                        print(entry % (htmlspecialchars(s["url"]), htmlspecialchars(s["title"])))
66
-                                    print("</ul>")
67
-                                else:
68
-                                    print(entry % (htmlspecialchars(r["url"]), htmlspecialchars(r["title"])))
69
-                            print("</ul>")
70
-                        else:
71
-                            print(entry % (htmlspecialchars(p["url"]), htmlspecialchars(p["title"])))
72
-                %-->
73
-                <li class="divider-vertical"></li>
74
-                <li><a href="http://xythobuz.de/lastmusic">♫</a></li>
75
-                <!--%
76
-                        tmp = [p for p in page["lang_links"].iteritems()]
77
-                        if len(tmp) > 1:
78
-                            print '<li class="divider-vertical"></li>'
79
-                            print '<li class="dropdown"><a href="language.html" class="dropdown-toggle" data-toggle="dropdown">Language<b class="caret"></b></a><ul class="dropdown-menu">'
80
-                            print " ".join(["<li><a href='%s'>%s</a></li>" % (url, lang) for lang, url in page["lang_links"].iteritems()]).replace(">en<", ">English<").replace(">de<", ">Deutsch<")
81
-                            print "</ul></li>"
82
-                            print ''
83
-                %-->
84
-                <li class="divider-vertical"></li>
85
-                <script type="text/javascript">
86
-                    function sitesearch(curobj) {
87
-                        curobj.q.value = "site:xythobuz.de " + curobj.r.value
88
-                    }
89
-                </script>
90
-                <form class="navbar-search" action="http://www.google.com/search" method="get" onSubmit="sitesearch(this)">
91
-                    <input name="q" type="hidden" />
92
-                    <input name="r" type="text" class="search-query span2" placeholder="Search..." />
93
-                </form>
94
-            </ul>
95
-        </div>
42
+    <div id="nav">
43
+        <ul>
44
+            <li id="home"><a href="index.html">xythobuz.de</a></li>
45
+            <!--%
46
+                mpages = [p for p in pages if p.get("parent", "") == "main" and p.lang == "en"]
47
+                mpages.sort(key=lambda p: int(p["position"]))
48
+                entry = '<li><a href="%s">%s</a></li>'
49
+                for p in mpages[1:]:
50
+                    print(entry % (htmlspecialchars(p["url"]), htmlspecialchars(p["title"])))
51
+            %-->
52
+            <li><a href="http://xythobuz.de/lastmusic">♫</a></li>
53
+            <!--%
54
+                #tmp = [p for p in page["lang_links"].iteritems()]
55
+                #if len(tmp) > 1:
56
+                    #print '<li class="dropdown"><a href="language.html" class="dropdown-toggle" data-toggle="dropdown">Language<b class="caret"></b></a><ul class="dropdown-menu">'
57
+                    #print " ".join(["<li><a href='%s'>%s</a></li>" % (url, lang) for lang, url in page["lang_links"].iteritems()]).replace(">en<", ">English<").replace(">de<", ">Deutsch<")
58
+                    #print "</ul></li>"
59
+            %-->
60
+        </ul>
96
     </div>
61
     </div>
97
-
98
-    <div style="width: 75%; margin-left: auto; margin-right: auto; padding-top: 50px;">
62
+    <div style="width: 75%; margin-left: auto; margin-right: auto;">
99
         {{ __content__ }}
63
         {{ __content__ }}
100
         <!--%
64
         <!--%
101
             import sys
65
             import sys
102
 
66
 
103
-            # Horizontal Line and Centered DIV
67
+            # Centered DIV
104
             if page.get("flattr", "false") == "true" or page.get("twitter", "") != "" or page.get("reddit", "") != "" or page.get("github", "") != "" or page.get("print", "false") == "true":
68
             if page.get("flattr", "false") == "true" or page.get("twitter", "") != "" or page.get("reddit", "") != "" or page.get("github", "") != "" or page.get("print", "false") == "true":
105
-                print '<hr>'
106
-                print '<div style="text-align: center;">'
69
+                print '<div style="margin-top: 1em; text-align: center;">'
107
 
70
 
108
             # Print and PDF Buttons
71
             # Print and PDF Buttons
109
             if page.get("print", "false") == "true":
72
             if page.get("print", "false") == "true":
164
             if page.get("flattr", "false") == "true" or page.get("twitter", "") != "" or page.get("reddit", "") != "" or page.get("github", "") != "" or page.get("print", "false") == "true":
127
             if page.get("flattr", "false") == "true" or page.get("twitter", "") != "" or page.get("reddit", "") != "" or page.get("github", "") != "" or page.get("print", "false") == "true":
165
                 print '</div>'
128
                 print '</div>'
166
 
129
 
167
-            if page.get("comments", "false") != "true":
168
-                print '<hr>'
169
-
170
             # Disqus Comments
130
             # Disqus Comments
171
             if page.get("comments", "false") == "true":
131
             if page.get("comments", "false") == "true":
172
-                print '<hr><div id="disqus_thread"></div>'
132
+                print '<div id="disqus_thread"></div>'
173
                 print '<script type="text/javascript">'
133
                 print '<script type="text/javascript">'
174
                 print 'var disqus_shortname = "xythobuz";'
134
                 print 'var disqus_shortname = "xythobuz";'
175
                 print '(function() {'
135
                 print '(function() {'
185
         %-->
145
         %-->
186
     </div>
146
     </div>
187
 
147
 
188
-    <div style="color: gray; text-align: center;">
189
-        Made with <a href="http://bitbucket.org/obensonne/poole">Poole</a>, <a href="http://twitter.github.io/bootstrap/index.html">Bootstrap</a> and <a href="http://shjs.sourceforge.net">SHJS</a>
148
+    <div id="footer">
149
+        <a href="http://bitbucket.org/obensonne/poole">Poole</a>
150
+        &middot;
151
+        <a href="http://shjs.sourceforge.net">SHJS</a>
190
         &middot;
152
         &middot;
191
-        Licensed as <a href="http://creativecommons.org/licenses/by/3.0">CC-BY</a>
153
+        <a href="http://creativecommons.org/licenses/by/3.0">CC-BY</a>
192
     </div>
154
     </div>
193
     <img src="http://xythobuz.de/stats/count.php?img" alt="Analytics">
155
     <img src="http://xythobuz.de/stats/count.php?img" alt="Analytics">
194
     <script src="http://gitforked.com/api/1.1/button.js" type="text/javascript"></script>
156
     <script src="http://gitforked.com/api/1.1/button.js" type="text/javascript"></script>
195
-    <script type="text/javascript">
196
-        var _gaq = _gaq || [];
197
-        _gaq.push(['_setAccount', 'UA-39163591-1']);
198
-        _gaq.push(['_setDomainName', 'xythobuz.org']);
199
-        _gaq.push(['_setAllowLinker', true]);
200
-        _gaq.push(['_trackPageview']);
201
-        setTimeout("_gaq.push(['_trackEvent', '30_seconds', 'read'])", 30000);
202
-        (function() {
203
-            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
204
-            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
205
-            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
206
-        })();
207
-    </script>
208
 </body>
157
 </body>
209
 </html>
158
 </html>

+ 0
- 9
static/css/bootstrap-responsive.min.css
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 0
- 9
static/css/bootstrap.min.css
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 61
- 0
static/css/style.css Bestand weergeven

1
+body {
2
+    font-size: 1.2em;
3
+    font-family: 'Droid Sans', sans-serif;
4
+}
5
+
6
+#nav ul {
7
+    list-style-type: none;
8
+}
9
+
10
+#nav ul li {
11
+    display: inline;
12
+    margin-right: 0.5em;
13
+}
14
+
15
+#home {
16
+    font-size: 2.5em;
17
+    margin-right: 0.5em;
18
+}
19
+
20
+#nav a:link {
21
+    color: black;
22
+    font-weight: bold;
23
+    text-decoration: none;
24
+}
25
+
26
+#nav a:visited {
27
+    color: black;
28
+    font-weight: bold;
29
+    text-decoration: none;
30
+}
31
+
32
+pre {
33
+    max-height: 300px;
34
+    overflow: scroll;
35
+    font-size: 0.9em;
36
+    padding: 10px;
37
+    margin: 1em;
38
+    border-style: solid;
39
+    border-width: 2px;
40
+    border-color: orange;
41
+    border-radius: 10px;
42
+}
43
+
44
+iframe[id^='twitter-widget-'] {
45
+    width: 100%;
46
+}
47
+
48
+#footer {
49
+    color: gray;
50
+    text-align: center;
51
+    margin-top: 1em;
52
+    font-size: small;
53
+}
54
+
55
+#footer a:link {
56
+    color: gray;
57
+}
58
+
59
+#footer a:visited {
60
+    color: gray;
61
+}

+ 0
- 6
static/js/bootstrap.min.js
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


Laden…
Annuleren
Opslaan