(710 MB) 03:11:16
2018-12-16 12:30 🛈Wie geht es dem i3? Was ist alles neu? Und warum steht auf der Kiste da was von „Ender“?
Meine Lieblingsbeschäftigung :)
(710 MB) 03:11:16
2018-12-16 12:30 🛈Wie geht es dem i3? Was ist alles neu? Und warum steht auf der Kiste da was von „Ender“?
(1012 MB) 00:20:19
2018-12-09 11:00 🛈Oszilloskope sind tolle Werkzeuge, aber was mache ich mit dem „alten“ 10MHz Analogmodell? Zum Wegwerfen zu schade, also benutzen wir doch einfach als Vektoranzeige für Logos o.Ä. Nicht unbedingt eine große Hilfe im Arbeitsalltag, aber auf jeden Fall ein toller Hingucker.
(362 MB) 00:23:35
2018-12-02 11:00 🛈Wenn man Daten drahtlos übertragen möchte ist mit den üblichen Funkmodulen für Arduino & Co meist nach wenigen hundert Metern Schluss. Zwar gibt es mit Handymodulen einfache Möglichkeiten, jedoch ist hierzu eine entsprechende Datenkarte samt Vertrag notwendig. An dieser Stelle kommt die proprietäre Modulationsart „LoRa“ (Long Range) ins Spiel: Hiermit können draußen im frei Nutzbaren 868MHz-Bereich Strecken von mehreren Kilometern überbrückt werden. Wem das nicht reicht kann auf LoraWAN zurückgreifen. Hierbei betreiben Freiwillige und Firmen LoRa-Empfänger, welche empfangene Datenpakete ins Internet weiterleiten.
Ardunio-Library
https://github.com/matthijskooijman/arduino-lmic
LoRa-Videos von Andreas Spiess (EN)
https://www.youtube.com/watch?v=hMOwbNUpDQA&list=PL3XBzmAj53Rkkogh-lti58h_GkhzU1n7U
TheThingsNetwork
https://thethingsnetwork.org
Hamnetdb (Funkstrecken simulieren)
https://hamnetdb.net/map.cgi
RMOnline (Funkausbreitung simulieren)
http://www.ve2dbe.com/rmonline.html
(144 MB) 00:32:35
2018-11-25 11:00 🛈Die Arduino IDE dürfte nahezu jeder kennen, der mit Mikrocontrollern herumspielt. Ich selbst nutze in meinem Videos jedoch immer wieder auch PlatformIO auf Basis von VSCode. Daimmer mal wieder Fragen zur Einrichtung aufkamen also mal ein schneller Blick auf die Unterschiede, Installation und Funktionen.
(382 MB) 00:21:50
2018-11-18 11:00 🛈
(490 MB) 00:22:16
2018-11-11 11:00 🛈
(615 MB) 00:24:55
2018-11-04 11:00 🛈Achtung: Arbeiten am Stromnetz sollten nicht durch Personen ohne die nötigen Kenntnisse und Fähigkeiten durchgeführt werden. Durch Fehler kann man sich und andere in Lebensgefahr bringen.
(384 MB) 00:14:19
2018-10-28 11:00 🛈Folgende Links zeigen Produkte, welche im Video verwendet wurden. Es handelt sich um Affiliate-Links, der angegebene Shop kann Käufe über diesen Link zurückverfolgen, ich erhalte hierdurch eine Werbekostenerstattung. Die angegebenen Preise beziehen sich auf meine Rechnung, diese können z.B. durch Anpassungen der Shops, Währungsschwankungen & Co. inzwischen abweichen.
(257 MB) 00:15:40
2018-10-24 13:45 🛈Das FPS-gestotter ist natürlich nur zur Demonstration des Problems und hat keinesfalls etwas damit zu tun, dass etwas mit der genutzten Kamera nicht stimmte 😉
Review mit weiteren Daten sowie den Ecken und Kanten: https://www.youtube.com/watch?v=0MuKRRq4xfc
(318 MB) 00:30:29
2018-10-21 10:00 🛈#include <Arduino.h> #include <SPI.h> #include <MCP23S17.h> #include <Wire.h> #include <LiquidCrystal_PCF8574.h> extern "C" { #include "user_interface.h" } const char* kbdmap = "K##.0CRE321MSO654FTe987U"; const char* cmdmap = " +-*/"; #define ROWS 4 #define COLS 6 LiquidCrystal_PCF8574 lcd(0x27); MCP gpio(0, 15); int8_t last = 0; String num1, num2; byte cmd = 0; void setPinMode(void) { uint16_t out = 0xFFFF; out <<= (ROWS); gpio.pinMode(out); gpio.pullupMode(out); gpio.inputInvert(out); out = ~out; gpio.digitalWrite(out); } void startLCD(void) { int error; Serial.println("LCD..."); Wire.begin(D1, D2); Wire.beginTransmission(0x27); error = Wire.endTransmission(); Serial.print("Return: "); Serial.print(error); if (error == 0) { Serial.println(": LCD found."); } else { Serial.println(": LCD not found."); } lcd.begin(20, 2); // initialize the lcd lcd.home(); lcd.clear(); lcd.print("BitBa // POS-Matrix"); } void setup() { Serial.begin(115200); Serial.print("\nInit..."); gpio.begin(); setPinMode(); Serial.println("OK"); startLCD(); } int8_t checkKeys(void) { byte row, col; int input; for(row = 0; row < ROWS; row++) { gpio.digitalWrite(row, LOW); delay(1); input = gpio.digitalRead(); gpio.digitalWrite(row, HIGH); for(col=0; col < COLS; col++) { if(input & (1<<(ROWS + col))) { return (byte)(COLS * row + col); } } } return -1; } void loop() { int8_t input = checkKeys(); int8_t check = 0xFF; float result = num2.toFloat(); bool change = false; if(result == 0) result = num1.toFloat(); if(input < (COLS*ROWS) && input >= 0 && last != input) { Serial.print(input); Serial.print(": "); last = input; if(input >= 0) { check = kbdmap[input]; Serial.print(check); }else{ check = 0xFF; } Serial.println(); delay(15); //Poor maker debounce }else{ check = 0xFF; } if(check != 0xFF) { switch(check) { //K##.0CRE321MSO654FTe987U case 'K': cmd = 4; change = true; break; case 'R': cmd = 3; change = true; break; case 'S': cmd = 2; change = true; break; case 'T': cmd = 1; change = true; break; case 'C': cmd = 0; num1 = ""; num2 = ""; change = true; break; case 'U': cmd = 0; num2 = ""; change = true; break; case 'F': if(cmd == 0) { if(num1.length() > 0) num1.remove(num1.length()-1); }else{ if(num2.length() > 0) num2.remove(num2.length()-1); } change = true; break; case '#': switch(cmd) { case 1: result = num1.toFloat() + num2.toFloat(); break; case 2: result = num1.toFloat() - num2.toFloat(); break; case 3: result = num1.toFloat() * num2.toFloat(); break; case 4: result = num1.toFloat() / num2.toFloat(); break; } cmd = 0; num1 = result; num2 = ""; change = true; break; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if(cmd == 0) { num1 += (char)check; }else{ num2 += (char)check; } change = true; } if(change) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(num1); if(cmd > 0) { lcd.setCursor(18, 0); lcd.print(" "); lcd.print(cmdmap[cmd]); lcd.setCursor(0, 1); lcd.print(num2); } } } }
Hinweis: Der bei 19:40 gezeigter GPIO-Expander wurde mir seinerzeit von ICStation.com zur Verfügung gestellt.