Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

ESP32 NodeMCU mit TM1838 Buttons

16.04.2020 (👁8169)

ESP32 NodeMCU mit 8 LED & KEY

 

Beschreibung:

Mit dieser Anwendung kann man ein Button Eingabe-Board an einer ESP32 nodeMCU  betreiben.

Mit dem Code Beispiel wird die Eingabeplatine so betrieben, dass beim Drücken eines Buttons die passende LED leuchtet

Beispiel Anwendung:

Betrieb einer Button-Platine / Modul an einem ESP32 nodeMCU Board

Bauteile:

Board: ESP32 nodeMCU DevBoard/DevKit

LED and Key : LED&KEY TM1638 Modul

Arduino IDE, Arduino

 

 

https://amzn.to/2wOkFBK    8-Bit LED + 8-Bit Digital Rohr +8- Bit Key TM1638 Modul + Kabel (5,72 Euro)

 

Laut Anleitung des TM1638 und ESP32 nodeMCU

Anschluss PINS ESP32 -> TM1638

G4->STB

G16->CLK

G17->DIO

GND->GND

3V3->VSS

Arduino IDE Code

Diese Code einfach in die Arduion IDE eingeben, den Code kompilieren und auf die ESP32 nodeMCU übertagen

#include "wiring_shift_mod.h"

#define CLOCK_TYPE CLOCK_INVERT

#define CLOCK_DELAY_US 1

const int strobe_pin =  4;

const int clock_pin  = 16;

const int data_pin   = 17;

void setup()

{

  pinMode(strobe_pin, OUTPUT);

  pinMode(clock_pin, OUTPUT);

  pinMode(data_pin, OUTPUT);

  sendCommand(0x8f);  // activate

  reset();

}

void loop()

{

  uint8_t buttons = readButtons();

  for(uint8_t position = 0; position < 8; position++)

  {

    uint8_t mask = 0x1 << position;

    setLed(buttons & mask ? 1 : 0, position);

  }

}

void sendCommand(uint8_t value)

{

  digitalWrite(strobe_pin, LOW);

  shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, value);

  digitalWrite(strobe_pin, HIGH);

}

void reset()

{

  sendCommand(0x40); // set auto increment mode

  digitalWrite(strobe_pin, LOW);

  shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, 0xc0);   // set starting address to 0

  for(uint8_t i = 0; i < 16; i++)

  {

    shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, 0x00);

  }

  digitalWrite(strobe_pin, HIGH);

}

uint8_t readButtons(void)

{

  uint8_t buttons = 0;

  digitalWrite(strobe_pin, LOW);

  shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, 0x42);

  pinMode(data_pin, INPUT);

  for (uint8_t i = 0; i < 4; i++)

  {

    uint8_t v = shiftInMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US) << i;

    buttons |= v;

  }

  pinMode(data_pin, OUTPUT);

  digitalWrite(strobe_pin, HIGH);

  return buttons;

}

void setLed(uint8_t valueuint8_t position)

{

  pinMode(data_pin, OUTPUT);

  sendCommand(0x44);

  digitalWrite(strobe_pin, LOW);

  shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, 0xC1 + (position << 1));

  shiftOutMod(data_pin, clock_pin, LSBFIRST, CLOCK_TYPE, CLOCK_DELAY_US, value);

  digitalWrite(strobe_pin, HIGH);

}

Link to GitHub MartyMacGyver

TM1638-demos-and-examples

https://github.com/MartyMacGyver/TM1638-demos-and-examples/blob/master/arduino/TM1638_buttons/TM1638_buttons.ino

 

Arduino IDE

 

 

Erweitern der Arduino Library

Damit die Zeile

#include "wiring_shift_mod.h"

Gelesen werden kann, muss man die Arduino Librarys erweitern.
hierzu geht man bei Arduino IDE Programm auf ->Menü->File->Preferences

Und öffnet den Pfad zu Sketchbook location

 

Arduino Library erweitern

 

Die Library-Dateien sind im Anhang

Wiring_shift_mod.cpp und wiring_shift_mod.h

Im Verzeichnis %Documents%\Arduino\libraries

 

Bezugsquellen:

https://amzn.to/3cfCZCA       3 Stück von AZDelivery 3 x ESP32 NodeMCU Module WLAN WiFi Development Board mit CP2102 (Nachfolgermodell zum ESP8266)  24,99 Euro

https://amzn.to/2wGkyYR     1x Stück: AZDelivery ESP32 NodeMCU Module WLAN WiFi Development Board mit CP2102 für 9,79 Euro

https://amzn.to/2KaC1eQ     AZDelivery HD44780 2004 LCD Display grün Bundle 4x20 Zeichen mit I2C Schnittstelle für Arduino

https://amzn.to/2wKzzJc       AZDelivery HD44780 2004 LCD Display Bundle 4x20 Zeichen mit I2C Schnittstelle für Arduino