Auf Github gibt es viele Templates für die .gitignore Datei. Für das Erstellen einer .gitignore Datei kann aber auch die Webseite von gitignore.io verwendet werden.
Auf dem Raspberry Pi kann man aber auch eine Shell Funktion installieren, dann geht es noch einfacher. Dazu einfach diese Funktion einmal auf der Kommandozeile aufrufen: … „.gitignore mal etwas anders“ weiterlesen
Für den Urlaub: Free WLAN Wifi-Scanner mit LED anzeige mit Wemo (ESP8266)
Wer noch für den Urlaub einen freien Wifi-Finder braucht, kann einen Wemo (ESP8266) verwenden, es muss ja nicht immer ein Raspberry Pi sein. Einfach dieses kleinen c Programm mit der Arduino IDO in den Wemo flashen, und mit 5 Volt an einem USB Port mit Strom versorgen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
/* * Wifi Finder der alle fünf Sekunden die Wifis scannt und für jedes freie WLan einmal kurz die LED anschaltet. * * Thomas Wenzlaff (c) 2019 www.wenzlaff.info */ #include "ESP8266WiFi.h" void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); pinMode(LED_BUILTIN, OUTPUT); Serial.println("Setup durchgeführt"); printMacAddress(); } void loop() { Serial.println("Starte den Scann nach WIFI ..."); digitalWrite(LED_BUILTIN, LOW); const int n = WiFi.scanNetworks(); Serial.println("OK, Scann durchgeführt"); if (n == 0) Serial.println("Keine Netzwerke gefunden"); else { Serial.print(n); Serial.println(" Netzwerk gefunden"); for (int i = 0; i < n; ++i) { Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(" dBm)"); Serial.print(" Verschlüsselung: "); printEncryptionType(WiFi.encryptionType(i)); delay(10); } } Serial.println(""); digitalWrite(LED_BUILTIN, HIGH); delay(5000); } void printEncryptionType(int thisType) { switch (thisType) { case ENC_TYPE_WEP: Serial.println("WEP"); break; case ENC_TYPE_TKIP: Serial.println("WPA"); break; case ENC_TYPE_CCMP: Serial.println("WPA2"); break; case ENC_TYPE_NONE: Serial.println("Keine"); digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); break; case ENC_TYPE_AUTO: Serial.println("Auto"); break; } } void printMacAddress() { byte mac[6]; WiFi.macAddress(mac); Serial.print("MAC: "); Serial.print(mac[5], HEX); Serial.print(":"); Serial.print(mac[4], HEX); Serial.print(":"); Serial.print(mac[3], HEX); Serial.print(":"); Serial.print(mac[2], HEX); Serial.print(":"); Serial.print(mac[1], HEX); Serial.print(":"); Serial.println(mac[0], HEX); } |
Der Sketch verwendet nur 266424 Bytes (25%) des Programmspeicherplatzes. Das Maximum sind 1044464 Bytes. Globale Variablen verwenden 27124 Bytes (33%) des dynamischen Speichers, 54796 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
Hier noch ein kleines 26 Sekunden Video um zu sehen wie der Scanner mit dem obigen Programm läuft:
Auf der Seriellen Konsolen werden übrigens die Daten auch ausgegeben, z.B.
Aktuellste Version mono auf dem Raspberry Pi installieren für C# Programme (Visual C#)
Installiert man mono mit sudo apt install mono-complete ist mono zwar in 30 Minuten installiert, aber nicht in der aktuellsten Version, sondern in Version 4.6.2.
Aktuell ist aber 5.18.1 wie auf der mono Seite zu sehen. Die Installation ist aber auch schnell gemacht, Key, Certificate und Repo laden: „Aktuellste Version mono auf dem Raspberry Pi installieren für C# Programme (Visual C#)“ weiterlesen
Quick-Howto: Erzeugung von Makefiles mit cmake auf dem Raspberry Pi
Wir wollen nun mal auf dem Raspberry Pi ein C Programm mit dem Make-Tool cmake auf dem Pi compilieren und linken.
Gemäß Wikipedia ist CMake (cross-platform make) eine plattformunabhängiges Programmierwerkzeug für die Entwicklung und Erstellung von Software.
Dazu erstellen wir ein neues Verzeichnis und legen dort die Builddatei CMakeLists.txt an und führen cmake aus.
Also 1. ein Verzeichnis anlegen und dahin wechseln
1 2 |
mkdir cmake-beispiel cd cmake-beispiel |
2. Erstellen einer C Beispiel Datei start.c mit folgenden Inhalt:
1 2 3 4 5 6 |
#include <stdio.h> int main() { printf("Hallo Thomas, cmake ist cool!"); return 0; } |
3. Erstellen einer CMakeLists.txt Datei. Achtung Groß und Kleinschreibung genau so. Mit folgenden Inhalt:
1 |
add_executable(startthomas start.c) |
Diese Anweisung besagt, das die start.c compiliert werden soll und das das Programm dann startthomas heißen soll.
4. Nun können wir das Projekt konfigurieren mit cmake .
5. Das Projekt übersetzen mit make
6. Nun können wir das erzeugte Programm startthomas ausführen ./startthomas
Hier das Ergebnis: „Quick-Howto: Erzeugung von Makefiles mit cmake auf dem Raspberry Pi“ weiterlesen
Quick-HowTo: Aktuellste cmake Version 3.13.4 auf dem Raspberry Pi selbst compilieren und linken
Im Debian Repo liegt für cmake nicht die neueste Version. Für ein Projekt brauche ich aber cmake mind. 3.13. Deshalb hier eine Anleitung wie die neueste Version von cmake selbst erstellt und installiert werden kann.
Deshalb erst mal die evl. installierte Version von cmake ausgeben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cmake --version # Ergebnis cmake version 3.7.2 # Ok, wir müssen uns die aktuelle Version holen und selbest compilieren. # Das dauert auf dem Pi aber ca. eine Stunde. mkdir Download-cmake cd Download-cmake # Gewünschte Version von https://cmake.org/files/ holen, in diesem Beispiel 3.13.4 wget https://cmake.org/files/v3.4/cmake-3.13.4.tar.gz # Archive entpacken tar -xvzf cmake-3.13.4.tar.gz # In das Verz. wechseln cd cmake-3.13.4/ # Konfigurieren sudo ./bootstrap # make und install ... eine Stunde später ... sudo make sudo make install # Nun checken wir die Intallation cmake --version # Ergebnis # cmake version 3.13.4 |
Schöner C/C++ Code mit clang-format in 10 Minuten
Wie kann C/C++/Java … Quellcode auf dem Raspberry Pi headless formatiert und hübscher gemacht werden. Mit dem clang-format Programm das auch in Visual Studio, Emacs, Vim ua. Programme integriert werden kann. Das ist auch in Projekten sehr wichtig, um gleiche formatierungen für alle Projektmitglieder zu nutzen. Auch klappt es dann besser mit dem compare!
Das ist schnell installiert mit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo apt-get install clang-format # Test ob es läuft und in welcher Version clang-format -version # Ergebnis: # clang-format version 3.8.1-24+rpi1 (tags/RELEASE_381/final) # Aufruf mit Ausgabe über Konsole, wir formatieren im Google Style möglich währe aber auch noc # LLVM, Chromium, Mozilla, WebKit: clang-format -style=Google programm-4.cpp # Aufruf mit Ausgbe in neue Datei: clang-format -style=Google programm-4.cpp > programm-4-format.cpp # Aufruf mit Ausgbe in der gleichen Datei, der wohl häufigste Anwendungsfall: clang-format -style=Google -i programm-4.cpp |
Ok, dann noch hier die ganze Anleitung: „Schöner C/C++ Code mit clang-format in 10 Minuten“ weiterlesen
In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2
In der ersten Lektion haben wir in 15 Minuten gesehen wie wir checken können ob C++ auf dem Raspberry Pi installiert ist und haben unser 1. eigenes C++ Programm auf dem Pi mit der Kommandozeile erstellt, compiliert und ausgeführt.
Nun wollen wir auf dem Pi, in 15 Minuten die erste Klasse erstellen, da wir ja Objektorientiert programmieren wollen. Dazu erstellen wir mit dem vi ein einfache Klasse zum ausgeben der Temperatur des Pi.
Wir nennen die Klasse Temperatur
. Damit wir nicht alles in einer Datei haben, erstellen wir für jedes Objekt eine eigene Datei. Also zuerst die Deklaration in der Temperatur.h
:
„In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2“ weiterlesen
In 15 Minuten zum eigenen C++ Programm auf dem Raspberry Pi Zero W – Teil 1
C++ läuft auf dem Raspberry Pi 🙂
Hier mal eine Anleitung um in 15 Minuten das 1. C++ Programm zu schreiben. Das geht auch gut auf einen Raspberry Pi Zero W für 10 Euro. Es muss ja nicht immer Java und Desktop sein. So kommen Erinnerungen an die guten alten Zeiten hoch.
Also, wir checken auf der Konsole, ob und welcher C++ Compiler installiert ist mit
1 2 3 4 5 6 7 |
g++ --version # Ergebnis # g++ (Raspbian 6.3.0-18+rpi1) 6.3.0 20170516 # Copyright (C) 2016 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
Ok, dann kann es ja los gehen.
1 2 3 4 5 6 7 8 |
# Wir legen ein neues Verzeichnis an und wechseln da hin cd ~ mkdir cpp-programmieren cd cpp-programmieren # Wir legen eine neue Datei an mit dem vi das muss sein vi programm-1.cpp # mit diesem Inhalt: |
und speichern die Datei mit „esc: wq„.
Wir können mal eben checken ob die Datei richtig angelegt wurde mit
1 2 3 4 5 6 7 8 9 10 11 12 |
cat programm-1.cpp # Ergebnis: #include <iostream> using namespace std; // (c) 2018 Thomas Wenzlaff // programm-1.cpp int main() { cout << "www.wenzlaff.de\n"; return 0; } |
Jetzt können wir die erste C++ Datei schon compilieren mit
1 2 3 4 5 6 7 8 9 10 11 12 |
g++ -o start-prg-1 programm-1.cpp # mit der Option -o geben wir den Zielprogrammnamen an # nach 10 Sekunden wird kein Fehler angezeigt # Nun checken wir ob das Programm mit namen start-prg-1 vorhanden ist mit ls -la # Ergenbis: # -rwxr-xr-x 1 pi pi 8940 Jan 8 03:03 start-prg-1 # Nun können wir unser erstes C++ Programm starten mit ./start-prg-1 # Ergebnis: www.wenzlaff.de |
Wir haben nun in 15 Minuten getestet, ob der C++ compiler vorhanden ist und Dateien compilieren kann.
Im Teil 2 werden wir richtig OO!
Arduino Nano Programm und Video: Anzeige der 100 am meisten verwendeten Wörter in Englisch
Dies Programm zeigt die 100 am meisten verwendeten englischen Wörte an. Diese 100 Wörter machen die Hälfte alles geschriebenen in Englisch aus. Allein die ersten 25 Wörter aus der Liste, sind schon ein Drittel alles gedruckten in englisch.
Hier C++ Programm mit der Wortliste und einen Fortschrittsbalken, unter Verwendung der U8gLib. „Arduino Nano Programm und Video: Anzeige der 100 am meisten verwendeten Wörter in Englisch“ weiterlesen
Video DIY USB Passwort Generator mit Attiny 85
Vor ein paar Tagen hatte ich schon mal den ATTINY 85 vorgestellt.
Das ist ein cooles Teil mit USB und das für 1 Euro. Er emuliert eine Tastatur (HID).
Also mal ein weiteres Programm, für folgendes Problem. Wer lange und komplizierte Passwörter verwendet, hat mit unter keine Lust, sie immer wieder einzugeben. Das ist auch fehleranfällig. Oder man möchte jemand anderes an seinen Rechner lassen, und ihn nicht das Passwort geben. Also gibt man den Generator weiter.
Wir erstellen also ein Programm, das das Passwort automatisch an den Rechner sendet. Man muss dann natürlich auf das Teil aufpassen, das es nicht in falsche Hände kommt. Wir senden nur einmal, das gespeicherte Passwort. Hier mal ein 45 Sekunden Demo Video:
Hier das C-Programm, es ist ein sehr einfaches Programm mit ein paar Zeilen: „Video DIY USB Passwort Generator mit Attiny 85“ weiterlesen