Schlagwort-Archive: LCD

BitBastelei #536 – Alarmanlagen-Bedienpanel IP-Umrüstung mit ESP32

BitBastelei #536 - Alarmanlagen-Bedienpanel IP-Umrüstung mit ESP32

(2 GB) 00:20:56

2023-04-23 10:00 🛈

Vor einiger Zeit hatte ich das Bedienteil einer alten Alarmanlage und dessen Aufbau gezeigt. Schon damals war der Plan klar: Irgendwie eigene Meldungen anzeigen und in die Haussteuerung einbinden. Also fangen wir doch mal mit den einfachen Teilen an: LEDs, LCD und Schlüsselschalter. Die Tastenmatrix sieht komplizierter aus und kommt dann später dran.

Inhalt

  • 00:00 Das Bedienpanel
  • 01:56 Der Plan
  • 05:28 LEDs
  • 10:46 LCD
  • 15:58 Schlüsselschalter
  • 18:03 Zwischenfazit

Transparenz

Das gezeigte Gerät wurden selbst gekauft und bezahlt.

BitBastelei #458 – iMAX B6 Displaytausch & 3S-Akku laden

BitBastelei #458 - iMAX B6 Displaytausch & 3S-Akku laden

(2 GB) 00:21:14

2021-10-10 10:00 🛈

Wie war das mit den Hölzchen und Stöckchen? Eigentlich wollte ich nur „mal schnell“ den Akku meines DIY-Bohrschraubers laden. Da ich dessen BMS noch nicht gemessen habe sollte es der iMAX B6 richten, der dank Li-Ion-Einstellungen und Balancing dafür eigentlich perfekt geeignet ist. Dummerweise hat die berüchtigte Bastelkiste wieder zugeschlagen: Das Display ist defekt. Also gehen wir mal eine Runde reparieren.

Inhalt

  • 00:00 Intro
  • 00:10 Akkuanforderung
  • 00:51 Imax-Unfall
  • 05:15 Reparatur
  • 08:09 Lichtprobleme
  • 10:14 Mini-Funktionstest
  • 11:13 Balancing-Anschluss
  • 16:13 Akku laden
  • 18:49 Steckersicherung
  • 20:31 Fertig.

Fehler und Ergänzungen

  • 00:24 Leer im Sinne von ca. 3.5V/Zelle. Eigentlich noch einiges an Kapazität, bei hoher Last bricht die Spannung jedoch so weit ein, dass die Schutzbeschaltung anspricht

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #365 – Otter Screen Adapter: iPad-Ersatzdisplays als Monitor

BitBastelei #365 - Otter Screen Adapter: iPad-Ersatzdisplays als Monitor

(2 GB) 00:30:36

2019-12-29 11:00 🛈

Displayplatz ist meist beschränkt, insbesondere bei Mobilgeräten kann das schnell eng werden. Für etwa 100€ gibt es kleinere Zusatzdisplays, welche man neben Laptop & Co stellen kann. Einen solchen, portablen Monitor kann man aber auch selbst bauen: Mit einem iPad-Ersatzdisplay (9.7″, 2048×1536) und einer kleinen Adapterplatine hat man schnell ein Displayport-fähiges High-DPI-Display für unterwegs. Die nötige Platine hat Jan-Henrik designed und ist unter https://github.com/Jan–Henrik/OtterScreenAdapter zu finden.

BitBastelei #305 – EC-Karten-Terminal-Recycling: LCD&Keypad an ESP8266

BitBastelei #305 - EC-Karten-Terminal-Recycling: LCD&Keypad an ESP8266

(318 MB) 00:30:29

2018-10-21 10:00 🛈
Vor einiger Zeit hatte ich ein altes EC-Kartenterminal zerlegt und schon angemerkt, dass man viele der Bauteile recyclen kann. Dieses mal geht es um das Display sowie die Tastatur – eigentlich eine einfache Aufgabe. Eigentlich.

Links

Quellcode Testsoftware

#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.

BitBastelei #95 – Nexus7 LCD-Tausch

BitBastelei #95 - Nexus7 LCD-Tausch

(164 MB) 00:27:22

2014-05-11 10:00 🛈
Toll: Nexus 7 mit defektem Digitizer – nach einigen Versuchen das Glas vom LCD zu trennen gab es dann doch ein Komplettpaket.

Das Paket stammte von Displayengel.de (jedoch via Ebay gekauft).

Videoserie von JEG’s Garage

Entschuldigt die schlechte Tonqualität – Firmware der Kamera hatte einen Bug…