Programmierung HD44780 an MCP23017

Hallo Leute,

ich bin Neuling in der Arduino Welt und bräuchte Hilfe für ein Programm. Anbei ist der Schaltplan für meinen vorliegenden Aufbau. An einem Arduino UNO R3 ist ein MCP23017 und daran ein HD44780 angeschlossen. Wie ist es nun möglich das ich auf meinem Display z.B. "Hello World" schreiben kann? Ohne das MCP23017 würde ich es wahrscheinlich hinbekomme denn über die google Suche findet man genügend Anleitungen. Leider ist bei mir das MCP23017 dazwischen geschaltet und somit habe ich es bis jetzt nur gschafft, dass das Display aufleuchtet.

include <Wire.h>
#include "Adafruit_MCP23017.h"

Adafruit_MCP23017 mcp;
  
void setup() {  
  mcp.begin();      // use default address 0
  for (int i=1;i<8;i++)
  {
    mcp.pinMode(i, OUTPUT);
  }
}

void loop() {
}

Kann mir jemand dabei helfen?

Arduino.pdf (598 KB)

Gibt es einen speziellen Grund, warum das Display unbedingt an den MCP23017soll?

Gruß Tommy

Tommy56:
Gibt es einen speziellen Grund, warum das Display unbedingt an den MCP23017soll?

Gruß Tommy

Ich habe es so vorgesetzt bekommen. Ich hätte es ohne gemacht, aber so ist der Stand mit dem ich arbeiten muss.

Das Problem ist, man muss so z.B. die Liquid Crystal Library umschreiben oder etwa sähnliches suchen.

Ich habes sowas auch schon mit dem MCP23017 gemacht.

Auf jedenfall so wie Du Dir das vorstellst wird das erstmal nix, es sei denn du willst den Treiber für das Display neu erfinden. Wenn Du ahnung von Librarys und programmieren hast sollte das aber klappen.

Ich schau mal ob ich ein einfaches Beispiel finde.

Da wollte Dich aber einer ärgern :wink:

Dann solltest Du in 3 Etappen vorgehen:

  1. Lerne den MCP23017 anzusteuern
  2. Schaue Dir die Ansteuerung des LCD vom Arduino aus an
  3. Schließe das Display am MCP23017 an und gib diese Ansteuerung auf diesem aus.

Wenn jemand solche Aufgaben stellt, dann gehe ich mit hoher Wahrscheinlichkeit davon aus, dass der hier und in den anderen einschlägigen Foren mitliest.
Es bringt Dir also überhaupt nichts, wenn Dir jemand anderes die Aufgabe löst. Wir können Dich lediglich bei der Fehlersuche begleiten.

Gruß Tommy

So..

hier wäre eine Library für den 23008, mit nem bisschen Glück ist die kompatibel.

Tommy56:
Wenn jemand solche Aufgaben stellt, dann gehe ich mit hoher Wahrscheinlichkeit davon aus, dass der hier und in den anderen einschlägigen Foren mitliest.

Es ist für die Arbeit am Institut. Ich bin da HiWi. Also keine Aufgabe die bewertet wird. Wir haben einen Temperatursensor mit angeschlossen und wollen im Endeffekt auf dem Display die gemessene Temperatur ablesen. Zusammengebaut hat es der Elektriker vom Institut.

Dann schmeißt den MCP23017 raus oder nutzt ihn einfach nicht. Für einen Temperatursensor (welchen?) und ein LCD reicht der UNO immer aus.

Gruß Tommy

Ich hab mal etwas probiert, und zwar habe ich in der originalen LiquidCrystal Library alle "Pinmode", "digitalWrite"durch MCP.pinMode und MCP.Digitalwrite ersetzt.. das war eine 5 Minuten Sache.

Im Prinzip kann man die wie die Originale LiquidCrystal benutzen.

Anstatt der Arduino Pins benutzt man die MCP Pinangaben:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Da ich es nicht testen kann, keine Ahnung.. das war nur die Quick&Dirty Idee.

Fehler keine Gewähr :smiley: EDIT: Datei neu geuppt, war nen Fehler für Globale MCP Variable drin.

LiquidCrystalMCP.zip (24 KB)

Von Adafruit gibt es ein LCD-Shield, was den MCP23017 benutzt. Die Library solltest du auch für dein LCD nutzbar machen können: Overview | RGB LCD Shield | Adafruit Learning System

Die gängigen I2C-LCD-Adapter basieren auf dem PCF8574. Entsprechend exzellent ist die Unterstützung durch Libraries. Falls du irgendeine Chance hast auf einen solchen Adapter zu wechseln, dann mache das.

Theseus:
Die Library solltest du auch für dein LCD nutzbar machen können:

Danke, damit läuft es super.

Mein Dank gilt auch allen anderen die hier unterstützt haben.

Tommy56:
Für einen Temperatursensor (welchen?)

Wir nutzen einen novasens 2050