ich bin der Andreas und Arduino Neuling. Ich würde gerne mit dem Arduino eine LCD-Anzeige realisieren.
Arduino Mega 2560 und zweizeiliges LCD-Shield ist vorhanden.
Es gibt 16 LED´s die ein "Wort" anzeigen. Diese werden über einen 4 Stelligen Schalter (0-9,a-f) gesteuert werden.
Ich möchte diese 16 LEDs (also dessen Spannung 0 oder 3,3 Volt) an 16 Eingänge am MEGA 2560 einspeisen und abfragen.
Am LCD würde ich gerne von rechts nach links den jeweiligen Status (0 oder1) ausgeben und angezeigt bekommen.
Es sollte dann am LCD so aussehen (siehe angehängtes Bild):
0000000000000000
..4...|..3...|..2...|..1..
Ich kann alles verdrahten aber nicht programmieren.
Vielleicht gibt es ja irgendwo ein fertiges Sketch.
danke, das ging ja schnell.
Nützt mir aber nichts. Wie gesagt ich kann löten aber nicht programmieren.
Ich brauch ein fertiges Programm.
Und wenn das fünf Weissbier und einen Schweinsbraten kosten soll, dann ist es eben so
du musst nur mit einer zum LCD passenden Lib das Display zum laufen bekommen. Es liegen eigentlich immer Bsp. dabei.
Wenn das klappt änderst du in der gezeigten Funktion das Serial zu lcd oder wie der Klassenname eben dann heißt ab.
Serial.print >> lcd.print
Dann nur noch den cursor immer neu auf Anfang setzen.
Sollte relativ schnell funktionieren.
Wie gesagt, ich habe weder Ahnung vom programmieren, noch weiss ich wo ich was anschliessen muss.
Nochmal ich kann nicht programmieren.
Ich kann nach Anleitung die Eingänge an vorgegebene Pins anschliessen, ich kann einen Sketch auf den Arduino hochladen und dann eigentlich nur zuschaun obs geht.
/*
Doc_Arduino - german Arduino Forum
IDE 1.8.12
avr-gcc 9.2.0
Arduino Mega2560
dd.mm.2020
*/
const byte ANZAHL_PINS = 16; // Anzahl der Eingangspins
const byte ersterPin = 22; // ab welchen Pin gehts los?
byte pin[ANZAHL_PINS];
void setup(void)
{
Serial.begin(9600);
Serial.println("\nStart");
for (byte i = 0; i < ANZAHL_PINS; ++i)
{
pin[i] = ersterPin + i; // Pinnummern einsortieren
pinMode(pin[i], INPUT_PULLUP); // und konfigurieren
}
}
void loop(void)
{
// Pin nacheinander einlesen und ausgeben in einem Rutsch
for (byte i = 0; i < ANZAHL_PINS; ++i)
{
Serial.print( digitalRead(pin[i]) );
}
// neue Zeile wegen Seriellen Monitor
Serial.println();
// bremst loop, sonst kann man schlecht lesen
delay(100);
}
lcd bringste selbst zum laufen und änderst das wie gesagt ab. Und sage jetzt nicht nochmal "ich habe weder Ahnung vom programmieren". Das ist jetzt nur noch anpassen. Verstehen lernen, abändern.
Vielleicht habe ich das lcd auch bewusst weggelassen ... ??? 'grübel'
doc hats ja bis auf 4 Zeilen fix und fertig gemacht.
Jetzt liegt es an dir ... du brauchst jetzt erst mal eines der HelloWorld Beispiele für das LCD.
Das musst du schaffen, denn nur du hast die Hardware vor dir liegen.
dein LCD sollte mit der Standard Lib der IDE im 4Bit Mode laufen.
IDE > Datei > Beispiele > LiquidCrystal > HelloWorld
Link im Kommentar lesen und die Pins entsprechend deiner Verkabelung konfigurieren.
macht genau was im Code steht. Würde nichts anderes erwarten!
jetzt änderst du noch im loop die for auf:
lcd.setCursor(0, 0);
for (byte i = 0; i < ANZAHL_PINS; ++i)
{
byte result = digitalRead(pin[i]); // in eine zwischenvariable einlesen damit verlässlich auf der Seriellen und am LCD der gleiche Werte angezeigt wird
Serial.print( result );
lcd.print(result)
}