Mittwoch, 4. Dezember 2013

Weiter mit NXT-Python

Ich habe hier einmal ein sehr kleines und einfaches Beispiel für ein Programm geschrieben, dass die drei Motoren einmal um 360° nach vorne dreht. Dabei wird erst der Motor an Port A, dann der Motor an Port B und dann der Motor an Port C gedreht.

Hier einmal der Code mit allen erläuterungen:

#! -*- coding: utf8 -*-

""" (c) Hubble.Pixel """
""" Programm zum Testen des Lego Mindstorm NXT Bricks bei Gebrauch der Motoren an den Ports A/B/C. Debei muss immer sich gegangen werden, dass sich der NXT beim Model B des Raspberry Pis im unteren USB.Slot befindet/ beim Model A des Raspberry Pis am besten an einem angeschlosssenen USB-Hub angeschlossen ist und dass die .nxt-python - Datei richtig konfiguriert ist. """

import nxt # importiere das nxt-python-Modul

b = nxt.locator.find_one_brick() # initalisiere den Brick

portA = nxt.PORT_A # Port A initalisieren
portB = nxt.PORT_B # Port B initalisieren
portC = nxt.PORT_C # Port C initalisieren

vor = 100
zurueck = -100

All = 1 # Alle Motoren

motorA = nxt.motor.Motor(b, portA) # Motor A an Port A initalisieren
motorB = nxt.motor.Motor(b, portB) # Motor B an Port B initalisieren
motorC = nxt.motor.Motor(b, portC) # Motor C an Port C initalisieren

class EingabeFehler(Exception):
   print(Exception)

def drehen(Grad=None, Richtung=None, Motor=None):
   """Funktion zum drehen von den Motoren nacheinander (erst A, dann B und dann C)"""
   if (Richtung != None) and (Richtung == vor):
      richtung = int(Richtung)
   elif (Richtung != None) and (Richtung == zurueck):
      richtung = int(Richtung)
   else:
      raise EingabeFehler("Keine definierte Richtung, versuche entweder vor oder zurueck!")

   if (Grad != None) and (Grad > 0):
      """setzt den Wert, um den der Motor gedreht hat auf die angegebene Zahl"""
      grad = int(Grad)
   elif (Grad != None) and (Grad < 0):
      """falls der Wert, um den der Motor gedreht werden soll kleiner also Null ist, wird ein Fehler
      ausgespuckt"""
      raise EingabeFehler("Keine Gradangabe groesser als 0 angegeben!")
   elif (Grad != None) and (Grad == 0):
      """falls der Wert, um den der Motor gedreht werden soll gleich Null ist, wird ein Fehler ausgespuckt""
      raise EingabeFehler("Keine Gradangabe groesser als 0 angegeben!")
   else:
      raise EingabeFehler("Keine Gradangabe vorhanden, waehle bitte eine Angabe groesser als 0!")
      """wenn gar nichts angegeben wird, soll ebenfalls eine Fehlermeldung ausgegeben werden"""

   if (Motor != None) and (Motor == "motorA"):
      motorA.turn( richtung, grad)
      """vom nxt-Modul mitgeliferte Funktion zum drehen eines Motors (komplett (ohne Zuweisungen wie
      motor = motor.Motor.etc): nxt.motor.Motor( nxt.locator.find_one_brick(), nxt.PORT_A).turn( Richtung,
      Grad) )"""
   elif (Motor != None) and (Motor == "motorB"):
      motorB.turn( richtung, grad)
      """vom nxt-Modul mitgeliferte Funktion zum drehen eines Motors (komplett (ohne Zuweisungen wie
      motor = motor.Motor.etc): nxt.motor.Motor( nxt.locator.find_one_brick(), nxt.PORT_B).turn( Richtung,
      Grad) )"""
   elif (Motor != None) and (Motor == "motorC"):
      motorC.turn( richtung, grad)
      """vom nxt-Modul mitgeliferte Funktion zum drehen eines Motors (komplett (ohne Zuweisungen wie
      motor = motor.Motor.etc): nxt.motor.Motor( nxt.locator.find_one_brick(), nxt.PORT_C).turn( Richtung,
      Grad) )"""
   elif (Motor != None) and (Motor == All):
      """bei Eingabe von "All" werden alle Motoren gedreht, nacheinander"""
      motorA.turn( richtung, grad)
      motorB.turn( richtung, grad)
      motorC.turn( richtung, grad)
   else:
      raise EingabeFehler("Kein Motorport ausgewaehlt, nutze entweder motorA, motorB, motorC oder All!")
      """wenn kein Port oder All ausgewählt wurde, wird eine Fehlermeldung ausgegeben"""

drehen(360, vor, All)
"""startet einmal die Funktion drehen(). Dabei wird jeder Motor ("All") einmal um 360 Grad ("360") nach vorne ("vor" [-> entspricht dem Wert 100]) gedreht."""

Eigentlich sind alle Kommentare mit # eingeleitet, allerdings kann das Blogger nicht ganz so gut anzeigen, wegen den Zeilenumbrüchen, deswegen habe ich mehrzeilige Kommentare verwendet, eingeleitet mit """ und beendet auch wieder mit """.

Ich habe im ganzen Python-Dokument einmal eine Klasse "EingabeFehler" erstellt, die eigentlich den jeweiligen Fehler in der Kommandoleiste ausgeben sollte, allerdings hat das "print(Exception)" nicht immer funktioniert und deswegen müsste man einmal nachgucken, was falsch ist. Ich arbeite eigentlich nicht so oft mit Fehlern/ Fehlermeldungen (außer bei C++ mit cerr) und finde deswegen keine bessere Lösung :/

Bei mir auf meinem Raspberry Pi funktioniert das Programm auch nur, wenn ich es mit
sudo python Test.py
im Terminal aufrufe. Dazu hatte ich ja schon beim letzten Mal etwas gesagt (beim Einrichten von NXT-Python).

Anhand diesem, sehr einfachen, Beispiel kann man auch schon etwas eigenes, kreatives machen. Zum Beispiel kann man den Roboter in einem Viereck rollen lassen (erfordert ein Bisschen Know-How mit dem Drehen).
Wenn man so etwas einfaches bereits gemacht hat, oder dann damit fertig ist, werde ich beim nächsten Mal ein etwas schweres Beispiel mit Sensoren oder ähnlichem machen.

Ein gutes Beispiel ist ein Roboter, der mit einer konstanten Geschwindigkeit fährt und um wenige Millimeter vor einer Wand stehen bleiben soll. Dabei kann man noch Sachen wie Breite von Fußleisten einfließen lassen oder sich es etwas schwieriger machen, indem man Beispielsweise sagt, dass der Roboter gleichmäßig Bremsen soll (eine gleichmäßig beschleunigte Bewegung in negativer Richtung).

So, das wars ersteinmal für heute,
Mit Pixeligen Grüßen,
Hubbel

Mittwoch, 27. November 2013

Anfang mit NXT-Python Teil II

Noch eine kleine Anmerkung und eine kleine Aufmerksamkeit.
Hier einmal meine .nxt-python-Datei in meinem "/home" Verzeichnis und in dem des "root":
[Brick]
name = NXT
host = 00:16:53:15:27:5A
strict = 1
method = usb = True, Bluetooth = False, fantomusb = False, fantombt = False 
Wer so eine ähnliche Einstellung hat kann sich das gerne zu Nutzen machen.

Pixelige Grüße,
~Hubble

Anfang mit NXT-Python

Also, wie fängt man mit nxt-python an?

Ich zeige es hier nur am Bespiel Raspberry Pi, da ich das bei Windows oder anderem noch nicht ausprobiert habe. Allerdings meine ich zu wissen, dass die Installation nicht viel anders ist als bei Linux (Debian) selbst.
Zuerst muss man natürlich seinen Raspberry Pi einstellen, dafür gibt es genug Tutorials, in einem Video oder in einem Post, deswegen möchte ich jetzt noch nicht so genau darauf eingehen.

Aber wenn man seinen Raspberry Pi startet, gibt es ein paar wichtige Sachen zu beachten. Man sollte entweder als Root, Pi oder als anderer User eingeloggt sein, der mindestens die gleichen Rechte wie der User Pi hat. Anders hat das Programmieren und übertragen der Daten nicht funktioniert.
Als erstest sollte man mit
sudo apt-get update && sudo apt-get upgrade
die Pakete auf dem Raspberry Pi updaten. Man sollte am besten auch RPi-update nutzen, wenn man das zugehörige Paket dazu hat. Danach kann man mit
sudo apt-get install python-nxt
das Paket installieren, was wir nutzen wollen. Dabei wird automatisch danach gefragt, ob man das wirklich installieren will und zeigt auch alle Pakete, die installiert werden müssen, damit man nxt-python nutzen kann.

Danach erstellen wir einige Dateien. Erst einmal nutzen wir diese Kommandos:
groupadd lego
gpasswd -a pi lego Dabei wird "pi" entweder durch root oder den Usernamen ersetzt (bei Pi einfach so belassen!)
usermod -a -G lego pi Dabei wird "pi" entweder durch root oder den Usernamen ersetzt (bei Pi einfach so belassen!)
Danach erstellen wir eine Rules-Datei namens /etc/udev/rules.d/70-lego.rules per

sudo leafpad /etc/udev/rules.d/70-lego.rules
Da fügen wir dann den folgenden Text ein, der Informationen für das Paket enthällt:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0694", GROUP="lego", MODE="0660"
Danach müssen wir den Raspberry Pi oder udev rebooten, also neustarten. Dann könnt ihr euren Raspberry Pi mit eurem NXT Brick verbinden, und zwar (es funktioniert bei mit nur(!)) am unteren USB-Slot. Dann müsst ihr ihn anmachen und es folgen noch ein paar Sachen.

Wenn ihr nun in Python 2.7.x normal im Terminal per
python
und in einem zweiten Terminal per
sudo python
startet. Dann nutzt ihr in den vorhanden Python-Interpretern folgende Befehle:
import nxt
nxt.locator.nake_config()
diese erstellen in den Verzeichnissen des Users "root" und eures eine Datei names .nxt-python. Manchmal findet man sie nicht, dann müsst ihr bei "Versteckte Dateien anzeigen" ein Häkchen setzten.
In diesen müsst ihr dann unbedingt aufpassen, was ihr schreibt!

Die normale Vorlage, die erstellt wird sieht folgendermaßen aus:
[Brick]
name = MyNXT
host = 54:32:59:92:F9:39
strict = 0
method = usb=True, bluetooth=False, fantomusb=True
Diese müsst ihr ändern. Der Name ist, wenn ihr auf den NXT Brick die Firmware ladet (immer) nur NXT. Der "host" fängt bei mir jedenfalls immer mit 00:16 an. Wenn ihr den NXT anhabt, dann könnt ihr die Details angucken und seht da als ID das, was ihr dort eingeben müsst, aber immer nach vier Stellen einen Doppelpunkt! Ganz wichtig. "strict" habe ich eigentlich immer auf 1 gesetzt, bei 0 hat es ein-zwei mal Probleme gegeben.
Nun zu "method" das beschreibt die Methode, mit der der Brick angesprochen werden soll, so habe ich das jedenfalls verstanden und hoffe das ist richtig =D
Da gibt es noch erweitere Methoden. Mein Bereich dort sieht wie folgt aus:
method = usb = True, Bluetooth = False, fantomusb = False, fantombt = False
Da ich nur über USB verbinden kann, kein Bluetooth-Adapter vorhanden, ist usb=True und Bluetooth=False. Dann kommt fantomusb=False. Das besagt, da es für Linux und insbesondere für den Raspberry Pi keine von Lego gestellten Fantom-Treiber gibt, muss man auf etwas anderes zugreifen, also hier USB. fantombt=False wäre eine Verbindung über Bluetooth über den Fantom-Treiber, das genauso nicht funktioniert. Deswegen sind diese beiden auf False gesetzt.

Wenn man das geschafft hat, sollte man vorsichtshalber einmal den Raspberry Pi neustarten und man kann dann die, leider, wenigen Beispiele testen. Ich möchte selbst ein paar, besser detailierte Beispiele schreiben, die dann auch kommentiert sind, mit Tipps und Erklärungen.

Pixelige Grüße,
~Hubble

Freitag, 22. November 2013

Einstieg in NXT-Python

Nun gehts los mit dem Python-Modul "nxt-python".

Warum nutze ich das Modul? Es gibt ja schließlich viele Programmier Sprachen und Module, mit denen man den NXT programmieren kann?
Ich habe mir auch einmal die anderen (nicht alle) Alternativen angeguckt, wobei mir viele gefallen haben.
Ich habe mir unteranderem leJOS angeguckt, da wir dass auch noch irgendwann in der Schule nutzen wollen. Da ich selbst nicht so der große Fan von Java bin, habe ich mich aber dagegen entschieden, mit Java auf meinen NXT einzureden, denn ich fand, dass es irgendwo wohl interessantere Alternativen geben würde.
Ich habe mir auch Tutorials und Berichte zu pbLua durchgelesen. Ich finde die Programmiersprache Lua zwar ganz nett, aber irgendwie nur, weil ich die in Minecraft in Verbindung mit Tekkit genutzt habe um meine Türen zu verschließen. Außerdem verfüge ich über kein weiteres Wissen bezüglich Lua und finde, vorallem da Lua nicht sehr gängig ist, auch das Programmieren in Lua nicht so toll.
Auch NXC (Not eXactly C) hat es mir noch nicht so ganz angetan, und auch nxtOSEK und die dazugehörige C++ Programmierung hat mich noch nicht ganz überzeugt "dort hin zuwechseln". Im übertragenen Sinne jedenfalls.

Deswegen nutze ich nxt-python. Und zwar auf meinem Raspberry Pi. Ich werde die Serie "nxt-python" damit starten, wie ihr euren NXT Brick anschließt und alle passenden Komponenten installiert. Auch die Einrichtung der Datei mit den nötigen Daten zur Verbindung mit dem NXT werde ich erklären. Leider gibt es nicht so richtig viele Tutorials zu dem Thema im Internet und deswegen muss man ohne Vorkenntnisse viel ausprobieren.
Aber wenn man es erst einmal geschafft hat, dann bereitet das geschaffte Ausprobieren gute Laune und macht Lust auf mehr.

Also, bis auf weiteres:
LG
~Hubble

Donnerstag, 14. November 2013

Also: Warum alles mit Linux ( -> Raspberry Pi) ?

Nun gut. Ich mag auch Windows und nutze es auch, allerdings hauptsächlich zum spielen und zum Nutzen des Internets. Was ich an Windows nicht mag, ist die Speicherverwaltung. Ich habe in meinem Computer eine 1 TB Festplatte eingebaut, von der Windows (nur die Systempartition) fast 400 GB brauchen, obwohl ich nicht viel installiert habe, was Speicherplatz benötigt. ich habe dann noch eine Partition für meine eigenen Dateien.
Meine Datein, die auf D:\ abgelegt sind, haben weniger als 100 GB an Größe, obwohl ich die schon seit knapp 6 Jahren ansammel.
Was ich auch sehr schlimm finde ist, dass ich sehr oft Viren gehabt habe. Bei einem Computerspiel, das ich habe gibt es Unmengen an Mods und Modpacks, die zum Teil mit Viren vollgestopft sind.
Da kommt wieder der Vorteil von Linux / Mac OS (X) zu Tage. Es gibt zwar bestimmt irgendwelche Viren (Trojaner etc.) aber die sind so rar, denn es lohnt sich nicht sehr, Viren dafür zu programmieren, da der Großteil von Haushalten und Firmen immer noch mit Windows arbeitet.

Ich spiele auch noch kaum und deswegen steige ich immer mehr auf Linux um. Vorallem, da ich halt fast alles mit meinem Raspberry Pi programmiere bzw. rumbaue.
Ich finde das "kleine" Betriebssystem vollkommen ausreichend und wem es nicht gefällt, der kann alles mögliche nachinstallieren. Auch das Aufgebot an GPIO Pins finde ich sehr gut, denn dann hat man einen funktionierenden Computer mit Erweiterungsmöglichkeiten, was ich bei den meisten (also ich hab es bisher noch bei keinen gängigen) Mainboards gesehen, dass man weitere Sachen daran anschließen kann.
Somit kann man an einen Raspberry Pi viele unterschiedliche Dinge anschließen, wenn man Lust dazu hat.

Jetzt will ich mal auf die Sachen zurückkommen, von denen ich beim letzten Mal gesagt habe, dass ich mal alles aufschreiben will, dass ich sehr interessant finde. Hier mal Lieblingssachen von Kickstarter:
-Micro Python (http://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers?ref=category)
-ATtiny ISP (http://www.kickstarter.com/projects/rullywowr/attiny85-isp-shrink-your-arduino-projects-with-eas?ref=category)
-UDOO Single Board Computer (http://www.kickstarter.com/projects/435742530/udoo-android-linux-arduino-in-a-tiny-single-board?ref=category)
-Microduino (http://www.kickstarter.com/projects/microduino/microduino-arduino-in-your-pocket-small-stackable?ref=card)
-iSketchnote (http://www.kickstarter.com/projects/1663146472/isketchnote-from-pen-and-paper-to-your-ipad?ref=card)
-Digispark Dev Board (http://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board?ref=category)
-projectQ Unique Motherboard (http://www.kickstarter.com/projects/quo/projectq-run-any-os-the-unique-motherboard?ref=category)
Diese Sachen haben mich sehr interessiert, vorallem, da sie wirklich sinnvoll sind, nicht wie manch andere projekte. Hier steht nicht alles, was ich gut finde, da vieles nicht ganz so toll ist oder da manches, was mich interessieren könnte, noch nicht so ausgereift ist, wie ich es gerne hätte.
Ich habe hier auch nur Sachen aus dem Bereich Technology aufgelistet, denn ich bin hauptsächlich dort unterwegs und habe in den anderen Kategorieren noch nichts gefunden, was mich wirklich richtig dazu bringen würde, es mir möglicherweise einmal anzuschaffen.

Ich kann aber sehr erfreut sagen, dass Plattformen wie Kickstarter sehr gut sind. Denn viele Entwickler haben nicht genügend Geld oder Know-How, um Projekte zu starten und zu etablieren. Kickstarter beispielsweise hilft ihnen, indem die "Entwickler" ihre oft sehr kreativen, wenn auch nicht immer sinnvollen Ideen präsentieren können und damit Geld sammeln können. Dieses können sie dann wiederum nutzen um die Arbeit voranzutreiben, durch einstellen von Leuten mit dem Wissen zum Beispiel.

Das wars dann auch wieder für heute ;)
Mit pixeligen Grüßen,
~Hubble

Mittwoch, 13. November 2013

Heute will ich mal auflisten, was ich in den nächsten Wochen hier hauptsächlich schreibe.

Also erst einmal werde ich mich mit dem nxt-python Modul für Python beschäftigen, mit dem ich viel mache. Dazu nutze ich zwei sehr interessante Bücher mit in meinen Augen sehr guten Bauanleitungen, und zwar Lego Roboter // Lego Roboter II von Laurens Valk. Der Autor zeigt unter anderem den Grundeinstieg in die Lego Robotik, leider aber an der mitgelieferten Software, die in meinen Augen etwas kindisch wirkt. Er bringt einem zwar auch komplexere Sachen, wie bsp. Variablennutzung oder den Sinn der Datenleitungen auf sehr einfache Art und Weise bei, aber das ist eher etwas für Schulen, insbesonders dort den Informatikunterricht. Ich mag lieber die "richtige" Programmierung mit Tastatur und Editor, deswegen nutze ich fast nur die Bauanleitungen. Es gibt zwar im Internet sehr viele andere Bauanleitungen, aber ich bin mir noch nicht ganz sicher, ob ich welche davon nehmen werde.
Auf jeden Fall sind manche Projekte einen Blick wert:
-ein 3D-Laser Scanner (http://philohome.com/scan3dlaser/scan3dlaser.htm)
-ein Joystick (http://philohome.com/nxtjoystick/joystick.htm)
-die HiTechnic - Bauanleitungen (http://www.hitechnic.com/models)
-Die Roboter von Tiled Twister (http://tiltedtwister.com/robots.html)
Es gibt eine Menge von tollen Robotern da draussen, die zum einen sehr gut programmiert sind, zum anderen aber auch sehr tolle, nicht unbedingt von Lego vertriebene Sensoren und Aktoren bzw. Zusatzmaterial (bsp. Prototypeboard, etc.), besitzen, die ihnen viele weitere Möglichkeiten des Handelns geben.
Ich selbst habe auch einen Sensor, der von HiTechnic (http://www.hitechnic.com/) hergestellte Beschleunigungssensor, mit dem man sehr spannende Dinge machen kann, näheres dazu später.

Und da komme ich wieder auf das Python-Modul nxt-python zu sprechen. Im Quellcode findet man unter anderem die Befehle für alle möglichen Sensoren usw. Natürlich nicht für alle, da es von sehr vielen irmen sehr viel Zusatzmaterial gibt. Auch sind noch nicht alle Sachen getestet worden, da man sehr arm sein würde, wenn man alle Teile besitzen würde.
Ich überlege selbst noch, ob ich mir ein Prototype-Board holen soll oder nicht, mit dem ich dann viele spannende Dinge anstellen kann, aber auf jeden Fall werde ich mir zu Weihnachten mehrere Anschlusskabel und Buchsen (ich meine es sind modifizierte RJ-12 Stecker/Buchsen) wünschen, die ich nutzen möchte, um auch mal die Sensoren und Motoren nur an meinen Raspberry Pi, mit dem ich das auch alles mache, anzuschließen.
Dazu hat Dexter Industries (http://www.dexterindustries.com/) ein paar Beispiele, die sie mit Code veröffentlicht haben (Sprache Python). Es sind die gleichen Leute, die auch das "grandiose" BrickPi Shield für den Raspberry Pi "gekrowedfounded", also über Kickstarter finanziert, haben.
Ich würde es auch sehr gerne haben, allerdings finde ich es in Anbetracht vieler, so schon freier und kostenloser Tools abstossend, denn es ist mit knapp 70 $ sehr teuer, jedenfalls für einen Schüler.

So, jetzt werde ich aber ersteinmal aufhören, denn was ich noch schreiben will, dass werde ich morgen tun. Ich möchte nämlich auch einmal erläutern, warum ich alles, und wirklich alles elektronisches mit meinem Raspberry Pi mache. Mal vorweg: Ich gehe auch auf den Vorteil von Linux in der Sache ein.
Und ich schaue, dass ich alles, was ich sehr interessant finde, auflisten kann. Besonders, da ich noch nicht ganz schlüssig bin, was ich mir zu Weihnachten alles wünschen soll.

Mit Pixeligen Grüßen,
~Hubble

Donnerstag, 7. November 2013

Mal so gesagt: Der Tag war schon etwas anstrengend.

Ja, auch ich habe leider keine Ferien mehr und muss wieder dem harten Trott des Lebens folgen. Nachdem ich vor den Herbstferien meine beiden ersten Klausuren geschrieben habe, habe ich heute eine zurückbekommen. Das war die Englischklausur zum Thema Analyse von Reden mit Sprachlichen Mitteln und auch eine Aufgabe zum Bewerten war dabei.
Ich dachte mir, dass diese Klausur besser gelaufen sei als meine andere Klausur, in Deutsch, in der wir das Thema Liebeslyrik hatten und dazu ein Gedicht analysieren mussten. Auch hier sollten wir wieder auf Rhetorische bzw. Sprachliche Mittel eingehen und diese heraus- und beschreiben.
Lange Rede, gar kein Sinn: Jedenfalls hatte ich in Englisch ein besseres Gefühl als in Deutsch. Und dann schaute ich in meine Arbeit, sah mir vorher noch einmal alle an, die ihr Heft schon hatten, die meisten hatten einen sehr erschrockenen Blick aufgesetzt, und dachte mir dann schon im Hinterkopf, dass die Klausur wohl doch nicht so klasse ausfallen wird, wie ich es mir erhofft hatte. Ende vom Lied: eine 3- mit einem fehlenden Punkt zur glatten drei.

Nachdem die beiden Englischstunden dann vorrüber waren war meine Laune fast schon etwas im Keller, weil ich nicht wenig mit dem Gedanken gespielt habe, Englisch möglicherweise im Abitur zu nehmen (Anmerkung: Da wo ich wohne braucht man nur vier Abiturfächer, davon sind zwei Leistungskurse). Ich hoffe mal, dass ich das irgendwie noch so hinbekomme, entweder in Englisch plötzlich aus dem Boden zu schiessen oder einfach etwas anderes (es bleibt nur noch Deutsch, da ich Mathe als LK-Fach wählen werde) mit ins Abitur zu nehmen.

Danach hatten wir erst zwei Stunden Geschichte, dann eine Informatik und noch eine Chemie.
Geschichte war nicht sonderlich aufregend, da wir eine Gruppenarbeit gemacht haben und dann noch über ein gemeinsames Fazit gesprochen haben.
Bei Informatik sieht die Sache dann schon etwas anders aus. Ich habe in meinem letzten und ersten Beitrag ja schon einmal erwähnt, dass ich in der Schule Informatik haben, wo ich unter anderem schon etwas über Python gelernt habe. Jedenfalls lernen wir die ganze Oberstufe hindurch Java mit der Umgebung BlueJ. Das ist eine freie Software, die man nutzen kann, um mit den Java-Modulen (heissen die bei Java auch "Module"? Ich kenn Module halt eher von Python) zum Beispiel ein eigenes Fenster zu erstellen, wo man malen kann, oder Gegenstände, wir haben eine Kugel genutzt, "rollen" lassen kann.
Im Moment lernen wir die Basics zu Klassen, also Attribute, Konstruktor usw. Da ich das schon von Python kenne, habe ich zwar einen kleinen Vorteil gegenüber den anderen, dafür fühle ich mich zum Teil sehr unterfordert, was mir auch etwas Leid tut, da unser Lehrer den Unterricht sehr toll gestaltet. Ein großes Lob dazu an dieser Stelle!
Trotzdem ist Programmieren immer noch besser, als das Thema Office-Anwendungen, wie wir das im ersten Jahr Informatik gemacht haben, zugegeben, da waren wir auch alle noch kleine, unwissende Schüler :)
Auch das Programmieren der Lego Mindstorms NXT Roboter hat mich zwar sehr interessiert und angeregt, allerdings finde ich die dazugehörige Umgebung sehr kindisch. Deshalb bin ich froh, dass ich mitlerweile ein Modul für Python gefunden habe, womit ich mit meinem eigenen Lego Roboter interagieren kann, was sehr viel Spass macht.
Beispielsweise habe ich mir mal einen Berührungssensor an den Lego-Roboter angeschlossen, um auf meinem Raspberry Pi mit dem extra für den Pi entworfenen, freien und modbaren Minecraft-Spiels zu interagieren.
Aber später mehr. Ich werde schließlich noch darauf eingehen, wie wo und was ich damit machen werde und dass ich vielleicht auch einmal alle beide Sachen noch um an die GPIO-Steckleiste angeschlossenen, elektronischen Gerätschaften zu kommunizieren.

Zurück zur Schule: Nachdem der Informatikunterricht aus war, habe ich mit meinem Lehrer, wie immer, noch ein kleines Pläuschen gehalten und ihm von meinen gefundenen, zum testen einladenen Gerätschaften zu erzählen.
Ich muss dazu sagen, dass ich mich viel in Foren aller Art herumtreibe und auch auf Kickstarter (http://www.kickstarter.com/) immer neue Dinge finde, die ich einmal ausprobieren möchte, um vielleicht auch mal darüber zu schreiben? Wer weiß...
Danach bin ich zu unseren Chemies-Versuche-Raum gegangen, wo wir dann auch Unterricht hatten. Ich muss sagen, dass ich Chemie immer ganz toll und aufregend fande, ich dachte immer Chemie sei so wie der Zaubertränkeunterricht bei Harry Potter. Ist in Wirklichkeit zwar nicht so, aber trotzdem ganz spannend.
Ich wollte immer mal Elektronenformeln zeichen, diese meist Sechsecke wo jede Ecke ein anderes Element steht und so weiter. Das lernen wir nämlich gerade. Das ist echt sehr interessant.

Dann hatte ich Schule aus, auch wenn nicht für lange, heute hatte ich von halb fünf bis sechs noch Schulsport, was eigentlich das anstrengenste war. Aber wir haben Basketball gespielt, was ich ja selbst spiele und es hat echt Spass gemacht, aber ich bin mit einer der einzigen die das richtig können und unser Lehrer achte leider nicht so ganz genau auf Regelverstöße und das macht einigen Spass, dann mal gerne den Fuß stehen zu lassen oder so etwas in der Art.
Zum Glück war meine Mannschaft recht gut und am Ende haben wir, zwar sehr knapp, aber gewonnen.
Nachdem ich vom Sport wiedergekommen bin und in der Zeit wo ich davor zu Hause war, habe ich für die morgige Matheklausur gelernt. Ich hoffe mal, dass die gut wird. Ich bin zwar einer der einzigen in meinem Kurs, die das gut können und endlich weiterkommen möchte, aber wir machen noch etwas vom letzten Jahr, was ich selbst schon zum Großteil kann und eigentlich für nicht mehr nötig zu lernen halte, denn unsere Parallelkurse sind alle schon um LKW-Längen weiter.

Jetzt höre ich hier auch auf zu schreiben, denn ich bin langsam müde und will nicht übermüdet morgen in der Klausur sitzen.

Mit pixeligen Grüßen,
~Hubble

Mittwoch, 6. November 2013

Mein erster Post O.o

Mhmm, was soll ich sagen?
Beispielsweise wieso möchte ich bloggen? Wieso, weshalb, warum, wer nicht fragt, bleib dumm xD

Also, zu Anfang: Ich schreibe gerne. Was? Alles mögliche, nicht speziell etwas, sondern von allem ein Bisschen.

Vielleicht sollte ich mich ersteinmal vorstellen.
Also ich bin 15 Jahre alt und gehe aufs Gymnasium, 10. Klasse. Meine Hobbys sind Programmieren, Basketball spielen und lesen.
Was programmiere ich so? Am liebsten Python 2.x /3.x, aber ich kann auch ein bisschen von HTML und C++, obwohl ich HTML so gut wie nie benutze. Mittlerweile nutzen wir in der Schule auch noch Java.

Auf Python bin ich eigentlich durch den Informatikunterricht unserer Schule gekommen. Wir haben ein bisschen mit dem Python-modul "turtle" bzw. "xturtle" herumgespielt und ganz einfache Sachen programmiert, wie zum Beispiel das Haus vom Nikolaus oder geometrische Figuren. Da ich das als ziemlich langweilig empfunden habe, habe ich mir im örtlichen Buchhandel ein Einsteigerbuch für Python angeguckt und mir das dann auch zu Weihnachten gewünscht.
Das Buch war nicht sonderlich außergewöhnlich oder spannend, aber dennoch eine gute Einführung in Programmieren und eine perfekte Sache für jemanden, der zwar gerade mal eine Maus und eine Tastatur benutzen konnte, aber dennoch Interesse zeigte und das auch umsetzte.
Als ich mit dem Buch fertig war, habe ich gleich zugeschlagen und mir erhofft, mit einem sehr gut bewertetem Handbuch neue Eindrücke zu finden und Python weiter zu lernen. Das hat auch sehr gut geklappt und mitlerweile bin ich in darin, meiner Meinung nach, auch ganz gut bewandert und kenne mich schon mit einigen Sachen aus, auch wenn nicht mit allen.
Ich habe vor nicht allzu langer Zeit etwas entdeckt, dass mir dann so richtig Lust auf Python gemacht hat. Es ist klein, hat die Maße einer Kreditkarte und war von meinem Informmatiklehrer schon fast vergöttert.
Es nannte sich Raspberry Pi und ich war hin und weg. Ich bestellte mir sofort einen, der leider fast einen Monat unterwegs war, und sammelte zu meinem Geburtstag genug Zeug zusammen, um ihn zu betreiben.
Mitlerweile verfüge ich über zwei Stück, von dem ich einen benutze, um unteranderem mit meinem Lego Mindstorms NXT 2.0 zu kommunizieren.
Den Raspberry Pi will auch dazu nutzen, um von der Schule oder irgendwo anders darauf zuzugreien, quasi ein kleiner Webserver für Hausaufgaben oder so.
Mit dem anderen habe ich schon eine Menge gemacht, ich habe unter anderem viele (kostenlose) Bücher über diesen erstaunlichen Mini-Computer gewälzt und programmiert, was das Zeugs hällt.
Deswegen wird auf meinem Blog auch viel geschrieben werden, was ich so programmiere, wenn ich etwas mache, dass man downloaden kann (wen es interessiert), dann werde ich das auch hier machen. Vielleicht stell ich auch mal Python-Module oder so vor, mit denen man sehr erstaunliche Sachen machen kann.

Natürlich werde ich auch mal was aus meinem Leben "posten" oder was mir gerade so in den Sinn kommt, und was ich aufschreiben will.
Leider werde ich ersteinmal keine Sachen zu C++ oder einer anderen Programmiersprache schreiben, da ich mich im Moment an ein Projekt fixiere und ich C++ noch lerne (HTML auch ab und zu).
Mehr dazu später.

Ich werde später noch weiteres zu mir und dem, was kommt schreiben, aber für jetzt bin ich fertig.

Mit pixeligen Grüßen,
~Hubble