Hallöchen zusammen.
Bin neu im Arduino-Geschäft und find diese Angelegenheit total abgefahren, macht laune und lust auf mehr.
Mein Stand: Bin Internetprogrammierer (PHP, JavaScript usw), daher ist das programmieren der Sketche an sich nicht so das Thema. Zusätzlich seit vielen Jahren Modellbauer und kleiner Elektronikbastler ohne viel professionelles Wissen.
Ich stelle meine bisher gesammelten Fragen einfach mal hier hin:
Der EEPROM im Uno fasst 1024 Byte. Was umfasst diese Angabe? Die reinen Werte oder auch die Adressen? Ich meine, kann ich 1024 Zeichen in allen Values des gesamten EEPROMs speichern?
Gibt es einfache Möglichkeiten den EEPROM zu vergrößern? Mir gefält die einfache nutzung im Gegensatz zu SD-Karten oder sowas.
SD-Modul anschliessen: Welche Pinns kann ich dazu auf dem Uno nehmen bzw gibt es hierzu Pins, die zwingend genutzt werden müssen?
Gleiches für ein LCD-Display, wie Variabel ist das mit den Pins am Arduino? Kann ich das irgendwo anschliessen und im Sketch zuordnen oder gibt es hier Bedingungen?
Kann man ein 20x4 LCD auch im 4-Bit Modus betreiben? (Also das auch hier nur 6 I/O Pins am Arduino genutzt werden) ?
Viele Buttons (Taster/Schliesser) per Widerstände an einem Analogeingang, was ist technisch machbar bzw wie viele Buttons kann ich auf diese Weise sinnvoll nutzen? Also sowas in der Art wie die Buttons auf den LCD-Shields mein ich, nur halt mehr.
Eine Library mit der ich mich beschäftige braucht unbedingt den Pin 9 oder 10 als Ausgang, wegen Geschwindigkeit, was ist an den 2 so besonders oder anders?
Gibt es eine Möglichkeit, die Spannung, die an Vin anliegt, auszulesen oder in einer Variable zu speichern?
Spannungteiler: Um von 9V auf die nötigen 5V runter zu kommen brauch ich ja ein 82Ohm und ein 100Ohm Widerstand, würde aber 50mA brauchen. Macht es mehr Sinn 820 Ohm und 1k zu nehmen? Dann kommen ja nur noch 5mA an oder ist das egal?
einfache methode um deinen EEprom zu erweitern ist weitere Microchips (IC's) zu verwenden.
So kannst du deinen Arduino als Herzstück verwenden und dann Daten darüber austauschen und in anderen CHips bearbeiten lassen. Das schafft auch gleich zusätzliche i/o ports.
Wegen dem LCD-Shild würde ich mir keine großen sorgen machen. Kannst du ja einfach mal neu zuweisen wie es mit den Pins so aussieht.
Was da ziemlich sicher geht ist die pins ohne das ~ zu versetzten. mit ~ kann es sein, dass der pin quasi ein analoges Signal ausgibt. Das bezweifle ich aber bei den Digitalen pins für das LCD board.. Ist nur meine Meinung dazu.
Taster kannst du praktisch 6 stück Analog und so viele anschließen wie du digitale ports frei hast. Das kommt ganz auf die taster an. vielleicht findest du auch ein Bussystem für taster. so kannst du dann recht viele (ca 128 stück) an nur einen digitalen Pin anschließen.
Vielleicht bietet dir der I2C Bus da was.
10 und 9 bieten unter anderem PWM unterstützung. Das ist eben die schon angesprochene simulierte ausgabe eines ANalogen Signales zwischen 0 und 255.
Hoffe, dass ich dir ein bisschen weiterhelfen konnte. Bei allen anderem kann ich dir jetzt nicht direkt weiterhelfen bzw nicht sehr kompetent.
Viel Glück und spaß noch mit deinem Arduino!
Viele Buttons (Taster/Schliesser) per Widerstände an einem Analogeingang, was ist technisch machbar bzw wie viele Buttons kann ich auf diese Weise sinnvoll nutzen? Also sowas in der Art wie die Buttons auf den LCD-Shields mein ich, nur halt mehr.
Theoretisch kannst du 20 Taster anschließen, jedenfalls an ein Board der UNO größe. Das geht wenn du sowohl die analogen als auch die digitalen Eingänge nutzt, auch wenn es nicht viel Sinn macht, einen Button an einen analogen Eingang zu schalten, aber technisch ist es möglich. Es gibt auch noch das MUX-Shield, Mulitiplexer, dann kannst du noch mehr anschließen. Aber damit kenn ich mich nicht aus.
Spannungteiler: Um von 9V auf die nötigen 5V runter zu kommen brauch ich ja ein 82Ohm und ein 100Ohm Widerstand, würde aber 50mA brauchen. Macht es mehr Sinn 820 Ohm und 1k zu nehmen? Dann kommen ja nur noch 5mA an oder ist das egal?
Der EEPROM im Uno fasst 1024 Byte. Was umfasst diese Angabe? Die reinen Werte oder auch die Adressen? Ich meine, kann ich 1024 Zeichen in allen Values des gesamten EEPROMs speichern?
Die Adressen werden nicht mit abgelegt, du hast also 1024 Byte zur freien Verfügung. Allerdings ist das Beschreiben und Löschen der Zellen nicht unbegrenzt möglich, sich ständig ändernde Daten machen das Eeprom kaputt. Nach 100.000 Zyklen kann dann schon Schluss sein. Das klingt erst einmal viel, bei schlechter Programmierung ist der Spaß aber schnell vorbei.
Gleiches für ein LCD-Display, wie Variabel ist das mit den Pins am Arduino? Kann ich das irgendwo anschliessen und im Sketch zuordnen oder gibt es hier Bedingungen?
Kann man ein 20x4 LCD auch im 4-Bit Modus betreiben? (Also das auch hier nur 6 I/O Pins am Arduino genutzt werden) ?
Du hast freie Wahl bei den Pins. Der 4-Bit-Modus ist eher die Regel als die Ausnahme.
Viele Buttons (Taster/Schliesser) per Widerstände an einem Analogeingang, was ist technisch machbar bzw wie viele Buttons kann ich auf diese Weise sinnvoll nutzen? Also sowas in der Art wie die Buttons auf den LCD-Shields mein ich, nur halt mehr.
Am 10-Bit-Analogeingang kannst du 1024 unterschiedliche Werte auswerten, das ist also die theoretische Limitierung, wenn du sicherstellst dass ausschließlich eine Taste gedrückt wird und du sehr genaue Widerstände für die Beschaltung findest.
Ansonsten würde ich nicht mehr als 10 oder 12 Tasten pro Analogpin gleichzeitig auswerten wollen.
Eine Library mit der ich mich beschäftige braucht unbedingt den Pin 9 oder 10 als Ausgang, wegen Geschwindigkeit, was ist an den 2 so besonders oder anders?
Wie schon gesagt wurde, sind das PWM-Ausgänge. Ob die Library auch auf anderen Pins funktioniert kann man ad hoc nicht sagen, da müsstest du schon mehr Informationen zur Biliothek liefern. Eventuell ist es ja eine Library zu einem bestimmten Shield, dass man aufgrund der Beschaltung auf diese Pins festgelegt ist.
Gibt es eine Möglichkeit, die Spannung, die an Vin anliegt, auszulesen oder in einer Variable zu speichern?
Nein, das geht nicht. Wenn du den Maximalwert der angelgten Spannung kennst und einen entsprechenden Spannungsteiler aufbaust, kannst du über einen Anaogeingang die Spannung errechnen bzw. mappen.
Spannungteiler: Um von 9V auf die nötigen 5V runter zu kommen brauch ich ja ein 82Ohm und ein 100Ohm Widerstand, würde aber 50mA brauchen. Macht es mehr Sinn 820 Ohm und 1k zu nehmen? Dann kommen ja nur noch 5mA an oder ist das egal?
Belastete Spannungsregler zur Spannungsregulierung sind in der Regel keine gute Wahl, da bei einer elektronischen Schaltung in den seltensten Fällen die Stromstärke konstant ist. Hier bieten sich dann eher Festspannungsregler oder Schaltregler an.
Ich finde die beste Methode ein Lcd anzschließen ist mit einem I²C-Adapter(wenn man möglichst wenig Pins verwenden möchte). Da werden nur die Pins A4 und A5 belegt und es können gleichzeitig noch andere I²C-Geräte mit anderer Adresse verwendet werden.
Zu deinem Spannungsteiler: Wenn ich das richtig verstanden habe möchtest du einen Spannungsteiler verwenden um die Spannung, die an Vin anliegt mit einem Analogeingang zu messen? Dann definierst du den betreffenden Pin als Input und aktivierst so den internen Widerstand. Dadurch wird der Eingang hochohmig und es fließt nur wenig Strom, auch wenn bei deinem Spannungsteiler mehr fließen würde.
Allerdings würde ich den Spannungsteiler nicht so auslegen, dass bei den 9v 5v beim Arduino ankommen. Es kann ja durchaus passieren, dass an Vin mehr anliegt (billige Netzteile haben im Leerlauf teilweise eine wesentlich höhere Spannung anliegen) und dann würde auch entsprechend mehr am Analogeingang ankommen und diesen dann möglicherweise zerstören.
Das mit den Tastern am Analogeingang, sowas wie hier unten links zu sehen, das meinte ich. Ich würde 8 pro Input benötigen aber das scheint ja noch locker im Rahmen zu sein. Mal rechnen gehen was ich da an Widerständen brauche.
Das mit dem Spannungsteiler wollt ich machen, um den Versorgungsakku zu überwachen, ein 2-zelliger Lipo. Der hat ja voll 8,4V und so ab 7,0V soll er dann warnen (Piezo oä). Denke dann bin ich mit den 9V auf der sicheren Seite. Anders rum kann ich den ja auch auf 12V auslegen und brauch dann nicht mehr dran zu denken.
Die ganzen Kleinigkeiten mit blinkenden LED, Laufschrift auf LCD, mini-Webserver usw hab ich alles schon durchprobiert und variiert, funzt bisher alles problemlos. Im Moment bin ich dabei eine RC-Fernsteuerung zu bauen, mit LCD-Menü und Modellspeicher auf EEPROM, eventuell späterem Logger und auf SD-Karte.
Allerdings wird das inzwischen reichlich eng mit den Pins, grübel schon ob ich damit auf ein Mega2560 umsteige. Habe durch zufall gesehen das die bei ebay ja sehr preiswert angeboten werden. Sind die für 12,99 wirklich richtige (SainSmart oder Arduino) ganze Mega2560? Ich mein, beim blauem C kosten die mehr als das dreifache und kann es mir gerade schwer vorstellen.
Im Prinzip geht jedes Display mit 4 Bit. Die haben praktisch alle den gleichen Hitachi Controller. Aber für LCDs empfehle ich dir sehr stark ein I2C Display. Mache damit gerade herum und es ist genial. Braucht nur 2 Leitungen und an die gleichen Leitungen kannst du noch andere I2C Module hängen.
Oder nur den I2C Adapter, an den du jedes Standard-Display hängen kannst:
Bei den Tastern musst du beachten, dass die Widerstände Toleranzen haben und die Spannung um ein paar mV schwankt. Du darfst daher nie auf den erwarteten Idealwert abfragen, sondern auf einen Bereich drum herum.
Wenn du mehr digitale Ausgänge brauchst kannst du mit Schieberegistern arbeiten. Dafür gibt es fertige Module, aber es lässt sich auch einfach selbst bauen. Ein Modul/IC macht 8 Bit und die lassen sich kaskadieren:
Für LEDs oder Relais ist das lange gut, aber eine Matrixtastatur geht damit z.B. nicht, da du nicht zwischen Eingang und Ausgang umschalten kannst. Für Sachen die sehr schnell schalten (im Mikrosekunden Bereich) ist es u.u. auch nicht gut, da die Ausgänge zwar gelatcht sind, aber eben nicht synchron mit den anderen µC Ausgängen schalten (wobei der Arduino da generell problematisch ist, es sei denn man greift auf die Low Level Port Register zu).