vi bzw vim – der Editor aus der Hölle

23. Dezember 2008 von

Als erstes stelle ich mal meinen Lieblingseditor vor.
Den opensource Clon von vi, dem Editor aus der Hölle: vim – Abkürzung für Vi Improved.

vim ist quasi vollständig kompatibel zu vi und der beliebteste vi Clon, den es gibt. Deswegen meinen die meisten auch vim, wenn sie von vi reden. Darüber hinaus bietet vim noch viele zusätliche Funktionen.
Unter Linux ist der Befehl vi meistens mit dem Editor vim verknüpft, so dass man den vim läd, wenn man vi eingibt.

vi wurde 1976 entwickelt und gilt heute immer noch als einer der mächtigsten Texteditoren überhaupt (der einzige, der heran reicht ist wohl emacs).

vi und vim sind kommandozeilenbasiert, es gibt von vim jedoch auch eine Version mit grafischer Oberfläche (die jedoch nicht mehr kann). Dadurch ist es möglich vim komplett ohne Maus zu bedienen, was einen gewaltigen Geschwindigkeitsvorteil bringt.

vim gibt es für alle Betriebssysteme und kann eigentlich mit jedem anderen Editor mithalten.

Wer viel mit Textdateien arbeitet und seine Geschwindigkeit drastisch erhöhen möchte, dem empfiehlt es sich sehr, sich diesen Editor mal anzusehen.

Leider ist die Einarbeitungszeit recht hoch, doch die Zeit holt man später locker wieder raus.
Es ist wie beim 10-Finger schreiben, man wird erst etwas langsamer, weil man versuchen muss, die Tasten mit den richtigen Fingern zu drücken, aber später wird man dafür umso schneller.

Es gibt 3 Modi im vi: den Kommandomodus, den Einfügemodus und den Execution Modus. Normalerweise befindet man sich im Kommandomodus, wo man sehr viele Möglichkeiten hat sich im Text zu bewegen. Unter anderem:

  • Ein oder mehrere Zeichen nach vorne oder hinten
  • Eine oder mehrere Zeilen nach oben oder unten
  • Ein oder mehrere Wörter nach vor oder zurück (Wobei es zwei verschiedene definition von Wort gibt, einmal durch Leerzeichen getrennt und einmal durch Sonderzeichen sowie ,.() und ähnliches)
  • Vorwärts oder rückwärts zum nächsten (oder x-ten) vorkommen eines Zeichens
  • Springen zu einer Zeile (Zeilennummern kann man sich anzeigen lassen)
  • Springen zum Anfang oder Ende einer Zeile oder der Datei
  • ganze oder halbe Seiten hoch oder runter scrollen Für fast jeden dieser Befehle ist nur ein Tastendruck (und die eingabe für die Anzahl, wenn mehr als 1) nötig.

Darüber hinaus gibt es noch weitere Funktionen um Text zu kopieren, zu löschen einzufügen oder zu ändern (wobei man mit den oben genannten Bewegungsbefehlen angeben kann, wie bis wohin die Aktion gehen soll)
Fast allen Befehlen kann man eine Zahl vorranstellen, die angibt, wie oft der Befehl ausgeführt werden soll. Mit 5w kann man z.B. 5 Wörter weiter springen, mit 3dw die nächsten 3 Wörter löschen…

Die Befehle lassen sich (zumindest meistens) recht gut merken, da sie die Anfangsbuchstaben der jeweiligen englischen Befehle sind (d=delete, w=word, c=change …)

Es gibt verschiedene Möglichkeiten um in den Einfügemodus zu kommen (vor dem Cursor, hinter dem Cursor, am Anfang oder Ende der aktuellen Zeile), wo man dann wie gewohnt Text eingeben kann. Mit Escape kann man diesen dann wieder verlassen.

Der Execution Modus (kurz Ex-Modus) ist für komplexere Befehle und wird mit dem Doppelpunkt eingeleitet. Mit diesem kann man zum Beispiel Reguläre Ausdrücke über einen ganzen Text oder einen Textbereich laufen lassen. Er wird auch zum Öffnen, Speichern und Wechseln von Dokumenten gebraucht. Im Ex-Modus kann man auch Einstellungen ändern.

vim verfügt zusätzlich (neben anderen Modi) über einen visuellen Modus, mit dem mann sehr schnell Text markieren kann, um ihn dann zu kopieren oder zu ersetzen (oder ähnliches).

Ein weiterer Vorteil von vi ist der schnelle Umgang mit sehr großen Dateien. So läd vi eine 100MB Textdatei in 5-10 Sekunden – aber komplett, so dass man in Bruchteilen von Sekunden an jede beliebige Stelle der Datei springen kann (versucht das mal mit anderen Editoren… der Windowseditor Notepad weigert sich sogar solch große Dateien zu öffnen)

Weitere Features des vim:

  • Tabs (Reiter)
  • Bearbeiten von Dateien direkt auf einem FTP-Server
  • Session Management
  • Setzen von Markierungen im Text und schnelles Springen dorthin (bis zu 26)
  • Mehrere (26) Register zur Zwischenablage von Text
  • Aufzeichnen von Befehlsfogen um diese zu wiederholen
  • Syntaxhighlighting für fast alle Programmier- und Beschreibungssprachen
  • Definieren von eigenen Tastenkombinationen
  • Bearbeiten von mehreren Dateien gleichzeitig, die man nacheinander durchgehen kann und/oder horizontal oder vertikal (auch mehrfach) splitten kann
  • Autovervollständigung von Wörtern, die schon im Text vorkommen
  • Wiederholen des letzten Befehls mit Punkt (.) (oft sehr praktisch)
  • Anzeige von Unterschieden (diff) zweier Dateien (z.B. zum Vergleich zweier Versionen)
  • automatische oder manuelle Definition von Faltungen. Das heißt eine gewisse Anzahl von Zeilen (z.B. eine ganze Funktion) auf eine Zeile reduzieren (ausblenden)

Darüber hinaus gibt es noch spezielle Funktionen für Programmierer wie z.B.

  • Springe zur korrespondierenden Klammer
  • Markiere (automatisch) korrespondierenede Klammern
  • Springe zur nächten/vorherigen Funktion
  • Springe zur Deklaration einer Variablen
  • Autocomplete dateiübergreifend (sucht in includierten Dateien) als Plugin
  • Aufruf von make aus vi heraus. Bei Fehlern kann man dann immer zum nächsten Fehler springen.

vim kann über Plugins noch erweitert werden (z.B. Syntaxhighlighting für weitere Sprachen, Tools für bestimmte Programme/Sprachen…). Es gibt über 2000 Plugins. So gibt es z.B. auch ein komplettes Toolset für LaTeX.

Wer vim einmal ausprobiert hat und gefallen an der Bedienung gefunden hat, den könnte auch das Firefox Add-On Vimperator interessieren. Mit diesem kann man den Firefox mit (fast) genau den gleichen Tastenkombinationen bedienen wie vim. Man braucht quasi keine Maus mehr um mit dem Firefox zu surfen. Wer vim beherrscht hat sich ziemlich schnell in den Vimperator eingearbeitet.

Für Linuxuser gibt es auch noch die grafische Oberfläche wmii, die anders als KDE oder Gnome komplett über die Tastatur bedienbar ist. Auch hier sind die Befehle an vim angelehnt. wmii ist bei fast jeder Distribution dabei und braucht nur über den jeweiligen Paketmanager installiert zu werden.

Debian und Ubuntu User aufgepasst: standardmäßig wird eine kleinere Version des vim (vim.tiny) installiert, dem viele Funktionen fehlen. Mit apt-get kann man aber den richtigen vim installieren. Bei anderen Distributionen kann dies auch der Fall sein (am besten im Paketmanager nachschauen).

Übrigens: “In the middle of evil theres vi”

In der Kategorie vim Tipps werde ich immer mal wieder praktische Tipps und Tricks zu vim veröffentlichen.

Hier ein paar Videos, die einige der Features von vim zeigen.

Find es schade, dass Markierungen, Faltungen und einige andere coole Dinge auf keinem der Videos zu sehen sind. Trotzdem teilweise recht beeindruckend. Das beste Video hab ich mal eingebunden:

YouTube Preview Image

(Link: http://youtube.com/watch?v=BE37aawMBZs)
http://youtube.com/watch?v=pCiVCiku3cM
http://youtube.com/watch?v=IMC9PtXwCtI
Bei Youtube gibts noch mehr Videos.

Siehe auch: Linkliste zu vim

Linkliste zu Handy Displays

23. Dezember 2008 von

Hier einige Seiten, Artikel und Diskussionen rund um die Ansteuerung von Handydisplays.
Vor allem Nokia 6100 und Siemens S65

Siemens S65:

Nokia 6100:

Nokia 3310:

Linkliste zum Funkmodul RFM12

23. Dezember 2008 von

Infos, Codebeispiele und Projekte zum Funkmodul RFM12
Das RFM12 433MHz Funkmodul ist ein recht leistungsfähiges Modul mit SPI-Schnittstelle. Da es sehr günstig ist, gibt es auch schon einige Leute, die sich damit beschäftigt haben.

Es gibt das Funkmodul auch mit 868MHz sowie nur als Empfänger (RFM01) oder Sender (RFM02). Darüber hinaus gibt es auch Varianten mit anderem Layout (RFM12B) und mehr Leistung (RFM12BP)

Infos:

Projekte:

Codebeispiele:

Eagle-Layouts:

Bezugsquellen:

Sonstiges:

USB Modul

23. Dezember 2008 von

Ein kleines USB Modul um in Tests schnell und einfach USB-Funktionalität hinzuzufügen

USB Modul mit Grlößenvergleich

USB Modul mit Grlößenvergleich

Ein USB Modul, das einen FT232BL mit kompletter Beschaltung und USB Buchse auf 4 Pins (VCC, GND, TxD, RxD) herausführt.
Dieses Modul kann man schnell und einfach in Testaufbauten integrieren um sein Projekt schon im Test mit USB betreiben zu können.
Hier die Bauteilliste (mit Reichelt Bestellnummern).

Hier die EAGLE-Dateien.

Testboard mit USB Modul von der Seite

Testboard mit USB Modul von der Seite

Pimp my Testboard

23. Dezember 2008 von

Ich habe mir ein Steckbrett von Pollin gekauft um dort meine Testaufbauten zu machen.

Testboard mit Aufbau

Testboard mit Aufbau

Ich finde so ein Steckbrett extrem praktisch, da man seine Ideen dort erstmal ausprobieren kann ohne etwas zu löten. Wenn alles klappt,kann man sich mit einer Lochrsterplatine oder sogar einem geätzten Board das Teil zusammen bauen.

Auch zum Fehlerfinden ist ein solches Board gut geeignet, da man sehr schnell etwas ändern oder ausprobieren kann.

Allerdings fand ich es immer ziemlich umständlich die Stromkabel rauszuziehen und wieder reinzustecken um den µC neu zu starten oder etwas zu ändern, daher habe ich mir einen Schalter zwischen die Stromversorgung und das Board gelötet und ihn mit Heißkleber auf dem Board fixiert.

Außerdem habe ich eine grüne LED an einen Vorwiderstand gelötet und direkt hinter der Stromversorgung an VCC und GND gesteckt, so dass ich immer direkt sehe ob der Strom nun an ist oder nicht.

Ausschnitt der Stromversorgung

Ausschnitt der Stromversorgung

Des weiteren fand ich es ziemlich unpraktisch auf dem Board, dass GND und VCC in der Mitte getrennt sind, da habe ich kleine Drahtbrücken drinn, so dass ich mich da nie mehr drum kümmern muss.
Für die Stromversorgung habe ich einen 4xAA Batteriehalter mit selbstklebenden “Klettpads” neben die Stromversorgungsanschlüsse geklebt, so dass man sie auch abziehen kann. Zusätzlich habe ich einen Hohlstecker mit Kabeln an die Stromanschlüsse geklemmt, so dass ich auch ein Netzteil anschließen kann.
Schließlich habe ich die Unterseiten der Stromanschlüsse mit Heißkleber isoliert, weil mir andauernd diese Gumminoppen, die als Abstandshalter fungieren immer abfallen.

Erweitereungsmöglichkeiten:

  • Ich würde demnächst gerne ein Board in eine Box einbauen, so dass man es leicht transportieren kann
  • Wenn genug Platz ist wären ein paar Fächer für Kabel recht praktisch

Testboard mit USB Modul von der Seite

Testboard mit USB Modul von der Seite

Farbwechsel Lampe

23. Dezember 2008 von

Eine programmierbare Lampe aus 3 LED’s und einem ATTiny2313.

Farbwechsellampe

Farbwechsellampe

Ein Bekannter, dem ich von meinen µC Projekten erzähl habe bat mich einmal ihm seine Farbwechellampe zu tunen. Die Lampe bestand aus 3 verschiedenfarbigen hellen LEDs, die sich hinter einer strukturierten durchsichtigen Plexiglasabdeckung befanden. Schaltete man die Lampe ein, so gingen die LED’s in einer vorprogrammierten Reihenfolge an bzw aus und man konnte ein Muster aus den Farben sehen.

Er bat mich nun, die Lampe selber anzusteuern und zwar so, dass er selbst bestimmen konnte, in welcher Reihenfolge die Farben kommen.

Mit 3 Tastern und einem ATTiny2313 (mit 1MHz) habe ich nun folgendes realisiert

Man kann insgesammt 5 Sequenzen mit jeweils bis zu 10 Farbkombinationen Einstellen, die im EEPROM gespeichert werden und im laufenden Betrieb gewechselt werden können.

Praktischerweise lief die Lampe mit 4 AA Batterien, so dass die Stromversorung genau passte.

Die Taster sind SET, UP und DOWN. Hält man beim Anschalten SET gedrückt, so kommt man in den Setupmodus (ist etwas ungünstig gelöst, in der nächsten Version wird das besser).

Im Setupmodus wird nun die erste Sequenz immer wieder schnell abgespielt. Mit UP und DOWN kann man die Sequenzen wechseln, welche jeweils abgespielt werden.

Farbwechsellampe geöffnet

Farbwechsellampe geöffnet

Mit SET kan man die aktuelle Sequenz ändern. Die erste Farbkombination wird angezeigt und man kann nun mit UP und DOWN die Farbkombination ändern. Mit SET kommt man zur nächsten Farbkombination. Wählt man “alle LED’s aus”, so wird die Sequenz gespeichert. Das gleiche passiert nach 10 Farbkombinationen.
Durch Aus- und wieder Anschalten kommt man in den Betriebsmodus. Dort wird die erste Sequenz in der Art abgespielt, das die erste Farbkombination per PWM eingeblendet wird. Ein Wechsel zu nächsten findet statt indem zuerst die fehlenden Farben der nächsten Farbkombination eingeblendet werden und dann die überschüssigen Farben ausgeblendet, so dass nie alle LEDs gleichzeitig aus sind.

Mit den UP und DOWN Tasten kann man nun die Sequenzen wechseln.

Quelltext und andere Infos kommen (vielleicht) noch (bei Bedarf: Mail an mich oder einen Kommentar schreiben).

Verbesserungsmöglichkeiten, die in der nächsten Version wohl einfließen werden sind:

  • Besserer Wechsel in den Setupmodus
  • Schnellere (interne) Taktrate (da die LED beim Dimmen flackern)
  • Eine Anzeige, welche Sequenz gerade abgespielt wird (kleine LEDs oder 7 Segmentanzeige)

LCD Thermometer

23. Dezember 2008 von

Ein LCD Thermometer mit Temperaturwiderständen, einem 2×16 Zeichen Display und einem ATMega8

LCD Thermometer im Betrieb

LCD Thermometer im Betrieb

Das Thermometer kann Innen- und Aussentemperatur anzeigen. Als Sensoren habe ich einen KTY 81-221 Temperaturwiderstand mit einem 2,2K Widerstand zu einem Spannungsteiler verbaut. Der Ausgang des Teilers kommt an den ADC-Eingang des ATMega8.

Das Gehäuse ist der Deckel einer Rocher-Verpackung (ca. 8×15 cm) auf eine (ausgeschnittene) Rückwand eines Fotorahmens geklebt.

  • Hier die Pinbelegung
  • C-Sourcecode Dazu wird eine kleine ADC-Bibliothek benötigt:  adc.h und adc.c
  • Die lcd.h ist die Bibliothek von Peter Fleury (http://jump.to/fleury)
  • Hier die EAGLE-Schaltung VORSICHT: Ich weis nicht ob die Teile, die ich benutzt habe passen. Wer sich darauf basierend eine Platine ätzen möchte sollte vorher nochmal die Bauteile durchgehen. Es soll nur die Verdrahtung gezeigt werden.
  • Hier die Teileliste mit Reichelt Bestellnummern.
Das Display an ein Flachbandkabel gelötet

Das Display an ein Flachbandkabel gelötet

Für weitere Fragen oder Anregungen mailt mir einfach.
Mögliche Erweiterungen wären:

  • Speicherung von Min/Max Werten (vielleicht auch über Tage/Wochen/Monate)
  • Serielle Schnittstelle zur Übertragung der Werte an den Computer (eventuell grafische Darstellung)
  • Display Hintergrundbeleuchtung
Das Display im Betrieb

Das Display im Betrieb

Binäruhr

23. Dezember 2008 von

Eine Uhr, die die Zeit in BCD darstellt. Mit LED’s und ATMega16

Binäruhr von vorne

Binäruhr von vorne

Dies ist also mein erstes Projekt: eine Binäruhr.
Mit einem ATMega16 werden 20 LEDs angesteuert die die Uhrzeit als 6 BCDs (Binärcodierte Dezimalzahl) darstellen. Zehnerstunden, Einerstunden, Zehnerminuten, Einerminuten, Zehnersekunden und Einersekunden.
Des weiteren ist ein Wecker eingebaut.
Es sind 5 Taster nebeneinander eingebaut. Mit folgenden Funktionen:

  • Uhr stellen
  • Wecker stellen
  • Stunden erhöhen
  • Minuten erhöhen
  • Wecker an/aus

Der Poti ist zur Dimmung der LED’s gedacht. Alle Massen der LED’s gehen über den Poti, und der erst zur eigentlichen Masse. Leider funktioniert das nicht so richtig, deswegen mache ich das vielleicht bei der nächsten Version mit (software) PWM.
Leider habe ich für meine erste Version noch kein Gehäuse, deswegen habe ich einen Papp-Ständer aus einem Stück Karton gebastelt

Zum Nachbau:

C-Sourcecode
Pinbelegung

Binäruhr von hinten

Binäruhr von hinten

Ob ich noch eine Eagle-Schaltung anfertige weis ich noch nicht. (habe aber eine für die nächste Version)
Für weitere Fragen oder Anregungen mailt mir einfach.

Die nächste Version wird auch ist schon geplant. Dafür habe ich alle Bauteile sowie ein Alu-Gehäuse bereits hier. Auch ein Eagle-Schaltbild und geätzte Platinen habe ich schon. Die Software wird noch ein wenig verändert. Die Uhr soll genauer werden (durch bessere Berechnung der Sekunden) und die Dimmung der LED’s soll durch PWM erfolgen.

Das Projekt liegt wegen Zeitmangels momentan auf Eis.

Herzlich Willkommen!

23. Dezember 2008 von

Ich habe meine Website zugunsten dieses Blogs aufgegeben.

Ich habe mich lange nicht um die Website gekümmert. Ich hoffe das funktioniert beim Blog besser.

Ich werde nach und nach alle Artikel der HP auch hier einbringen.


Bloggeramt.de frisch gebloggt Blogverzeichnis - Blog Verzeichnis bloggerei.de