• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Arduino mit digital Inputs

Offline
#1 Automatix
Hallo zusammen,

Als Ich dieses Projekt entdeckt habe, war ich echt begeistert hiervon und habe mich gleich an das Aufbauen auf einer Versuchsplatine gemacht.
Allerdings habe ich nicht die vorgeschlagenen Komponenten sondern noch folgende im Fundus gehabt:

Arduino Mega 2560
LCD Display
Versuchsplatine
ausreichend Taster für digitale Eingänge

Das Display habe ich mittlerweile zum laufen gebracht.

Allerdings habe ich noch nicht geschafft die Taster welche im Original über den Analogwert kommen auf ganz normale digitale Eingänge zu legen.
Wenn ich nicht komplett daneben liege, sollte dies ja im Reiter "LCD_Keypad_Reader.ccp" passieren, oder?
Allerdings sind meine Programmierkenntnisse in diesem Bereich recht schwach.
Könnt ihr mir hierbei weiterhelfen?

Grüße aus Oberfranken
Automatix
Offline
#2 flow
Moin,

was spräche denn dagegen das ähnlich umzusetzen, wie bei den KeypadShields? Sprich alle Taster über Widerstände parallel an einen Analogen Eingang?

MfG
flow
Offline
#3 Automatix
Die Sache mit den analogen Eingängen überzeugt mich nicht so wirklich.
Denn hier wurde ja schon an einigen stellen beschrieben, das es immer wieder Probleme gibt aufgrund von unterschiedlichen Übergangswiederständen.
Daher würde ich gerne auf die analogen Eingänge verzichten und es digital lösen.
Offline
#4 hspeedy
Okay, also aus eigener Erfahrung kann ich sagen, dass ich schon jede Menge Projekte mit solchen Keypads realisiert habe. Da ich nie die Shields verbaue, habe ich mir die Keypads immer selber gebaut. Diese funktionieren problemlos - dies gilt auch für die auf den Shields verbauten Keypads. Die leichten Schwankungen in den digital gelesenen Werten kann man im Code ja leicht berücksichtigen. Man muss ja nur den eigentlichen Wert für einen Key ermitteln und kann dann die Abfrage so programmieren, dass hier ein Bereich für jede Taste hinterlegt wird. Falls Du ein Platinenlayout oder den Schaltplan dafür haben möchtest, veröffentlich ich den hier gerne.
Offline
#5 Automatix
Ich glaube ein kleiner Plan für das Breadbord würde mir schon mahl ziemlich viel weiterhelfen.
Offline
#6 hspeedy
Okay, ich habe ihn als PDF erzeugt. Muss mal schauen wie ich hier den Anhang bereitstellen kann.

Link zum Schaltplan
Offline
#7 KidsOfAllAges
Digitale Eingänge sind ganz einfach im Arduino:

in der Setup() Funktion:
int bounceTime = 100; // ms f. quick and dirty debounce
//x = Pin Nummer
pinMode(x, INPUT_PULLUP);

Dann in der Funktion, wo Du die Eingänge auslesen willst:


if (digitalRead (x) == LOW)
{
delay(bounceTime); // quick and dirty debounce
if (digitalRead (x) == LOW)
{//irgendwas passiert}
}

Das ist jetzt mit der Brechstange programmiert, funktioniert aber. Ich persönlich sehe aber auch keinen Grund, es nicht über den analogen Pin mit Widerständen zu lösen.
kids-of-all-ages.de

Motion Control Rental, Sales & Service
Timelapse Slider, Pan &Tilt, Controller

Offizieller Distributor von
Dynamic Perception, eMotimo, Rhino Camera Gear, TBox Systems
& Berkey System

Wir sind Partner der Teltec AG

Offline
#8 niko_at
@hspeedy

Ich befürchte, dass sich in Deinem Schaltplan meiner Meinung nach ein Fehler eingeschlichen hat.
Ich weiß zwar nicht wie es nach J1 weitergeht, aber:
J1.1 liegt bei Dir auf VDD (+5V)
J1.2 liegt auf GND (0V)
J1.3 sollte demnach wohl die vom S1 bis S5 gedrückten Zustand abhängige analoge Spannung ergeben, die
    vom analogen Input des Arduino ausgewertet werden soll.
   
Laut diesem Schaltplan ist die Spannung an J1.3 bein nichtgedrückten Tasten undefiniert (hochohmig - "hängt in der Luft")
R1  liegt parallel zur Versorgungsspannung VDD + GND und damit für die Spannung an J1.3 unwirksam.
Bei Drücken eines Tasters liegt dann immer VDD an J1.3 (bei S1 direkt, S2 über 330 Ohm u.s.w)

Fazit: Keine Taste gedrückt => eingelesener Wert über analogen Eingang: undefiniert - möglicherweise floating
      egal welche Taste gedrückt wird => Wert um die 1023 (=max Wert für +5V) eingelesen
     
Warscheinlich sollte es wie folgt aussehen:

J1.1 : geht zum analogen Eingang des Arduinos
J1.2 : VDD (+5V)
J1.3 : GNG (0V)

Kein Taster: liefert dann ca. 1023
S1 gedrückt: liefert ca. 0
S2 bis S5 Werte dazwischen

Ich hoffe, ich hab hier nichts übersehen oder falsch interpretiert, ansonsten kurze Info!
Beste Grüße
Offline
#9 hspeedy
Stimmt natürlich! Völlig richtig erkannt. Das passiert wenn man das mal schnell aus einem großen Projekt rauskopieren will und dann
schnell zurecht bastelt. Ich habe den Plan korrigiert. Jetzt sollte er stimmen und passt auch wieder zu den von mir verwendeten Keypads.
Hoffe ich zumindest.
Der Link zeigt nun also den korrekten Plan an :-)
Offline
#10 niko_at
eine kleine Änderung ist noch notwendig, sonst macht sich der Timer "selbständig":
R1 auf die andere Seite von S1 als pullup für AD0, sonst hängt der Eingang in der Luft und AD0 liest keinen stabilen, fixen Wert!
Beste Grüsse

Gesendet von meinem SM-G955F mit Tapatalk

...also check out: